SuperEarn is designed with a clear mission: to make high-quality, risk-managed on-chain yield Simple, Secure, and Smart for everyday stablecoin users.
| Target | Type | Severity |
|---|---|---|
https://superearn.io Copy | Web | High |
*.superearn.io Copy | Web | High |
https://github.com/superearn-io/superearn-core-public Copy | Smart Contract | Critical |
We are interested in the following vulnerabilities:
Vulnerabilities found in out of scope resources are unlikely to be rewarded unless they present a serious business risk (at our sole discretion). In general, the following vulnerabilities do not correspond to the severity threshold:
The patterns below are routinely produced by AI / static-analysis tools (Slither, MythX, 4naly3er, GPT-based “audit” agents, automated CTF crawlers) and are pre-filed Out of Scope before review. If an automated tool produced a finding that matches one of the rows below, the program owner has already classified it as OOS — do not submit. Each row maps to the controlling SE-P / SUA / SSA / SA2 / Trust-Assumption / OOS clause in the rest of this document; cite that clause if you wish to argue your finding is materially different from the listed pattern.
A finding that is not literally listed below but whose root cause maps in meaning to any clause in this document (SE-P1–SE-P32, SUA-, SSA-, SA2-*, Trust Assumptions, OOS bullets, Periphery & Helper OOS) is OOS by the same matching rule. Submitting an AI-tool report that turns out to be one of these patterns may affect the researcher’s standing in this program.
| AI-tool typical finding pattern | Controlling clause(s) |
|---|---|
| "Function X is missing nonReentrant" on a user-facing view-only / enqueue-only entry (requestRedeem, etc.) | SE-P12 |
| "Function X is missing nonReentrant" on an operator-only / keeper-only / governance-only entry | SE-P14 |
| "Chainlink / Orakl answeredInRound >= roundId validation missing" / "stale-round check missing" on a price-converter | SE-P15 / SE-P21 |
| "Bare transferFrom (not safeTransferFrom)" inside UniversalSwapRouter / AssetPriceConverter / OraklAssetPriceConverter | SE-P15 |
| "Uniswap deadline = block.timestamp" / "no deadline parameter" inside an OOS helper | SE-P15 |
| "uint128 / other narrowing cast without SafeCast" inside an OOS helper | SE-P15 |
| "Curve exchange(..., min_dy = 0)" inside UniversalSwapRouter | SE-P15 |
| "Silent 1:1 fallback when feed unset" inside _convertTokenAmount / AssetPriceConverter | SE-P13 / SE-P15 |
| "setMaxSlippagePercent accepts up to 100%" | SUA-46 / SE-P5 |
| "Governance can do X / no on-chain timelock / owner-can-rug" findings | OOS Section C + Trust Assumptions + SUA-47 / SUA-48 / SA2-56 / SA2-57 / SSA-01 / SSA-02 |
| "STRATEGIST_ROLE / submitExecution has no on-chain timelock" | SE-P22 |
| "First-depositor inflation" / "missing OZ virtual-shares defense" on CooldownVault or CustomVault | SE-P2 / SE-P20 |
| "_decimalsOffset not robust for ≥18-decimal assets" on OriginVault | Trust Assumptions (USDT/USDC-only) + SE-P13 |
| "Permit signature can be front-run from public mempool" | SE-P1 |
| "Storage __gap is too small" (without a demonstrated upgrade-path collision) | SE-P10 |
| "Anyone can call initialize() on a fresh proxy" (against an already-deployed proxy) | SE-P7 |
| "requestId == 0 sentinel collision with default mapping value" | SE-P11 |
| "RemoteVault.totalAssets() is temporarily inflated / lags Kaia balance" | SE-P23 |
| "CCIP messages can be reordered / arrive out-of-order" without demonstrated double-credit/drain/freeze | SE-P8 |
| "CCIP delivery is not guaranteed in time T" / "bridge can stall" | SE-P8 / SE-P9 |
| "onBridgeReceived reverts / is a dead callback / can be spoofed" | Focus Area note + SE-P9 |
| "Predeposit debt cycle: strategy holds debt to vault mid-cycle" | SE-P29 |
| "estimatedTotalAssets() does not match strategyDebtOutstanding mid-cycle" | SE-P29 |
| "shortfallTolerance silently absorbs loss" / "shortfallTolerance is governance-settable" | SE-P29 |
| "CustomYearnStrategy.emergencyClaim() always reverts" | SE-P17 |
| "CustomYearnStrategy.requestRedeem() does not synchronously unwind the external position" | SE-P18 |
| "USDOKycedCA variable named usdc actually holds USDT on Kaia" | SE-P19 |
| "USDOKycedCA.claim() violates strict CEI" | SE-P16 |
| "USDOKycedCA per-user fairness drift (early vs late claimers)" | SUA-37 / SE-P16 |
| "USDO non-bool transfer / non-standard ERC20" / "missing SafeERC20 fallback" (when one is present) | OOS Generic best-practice + SE-P15 spirit |
| "OpenEden may de-list the protocol from its KYC list" | SUA-37 + Trust Assumptions |
| "Yearn V2 Vault.vy / Registry.vy could be exploited" / "unmodified Yearn code finding" | OOS bullets + Trust Assumptions |
| "Bridge service (Rhino) operational failure / deposit-address compromise" | SE-P9 + Trust Assumptions |
| "Recovery / emergency / sweep function moves funds to governance without auto-crediting users" | SE-P24 |
| "emergencyClearRedemptions drops user requests without on-chain compensation" | SE-P25 |
| "HealthCheck lossLimitRatio = 0 / non-zero loss reverts harvest = DoS" | SE-P26 |
| "Governance can add / remove / rotate authorized addresses / strategies without timelock" | SE-P27 |
| "Keeper inactivity / single point of failure / no on-chain incentive" | SE-P28 |
| "Blacklisted / lost-key receiver bricks the redemption queue" | SE-P31 |
| "Defense-in-depth: agent does not redundantly verify targetVault / sourceChainId" | SE-P30 |
| "Missing underflow guard / additional invariant assertion on already-enforced expression" | SE-P32 + OOS Generic best-practice |
| "Front-running / sandwich / MEV via public mempool" against contracts using 2-step request/claim or minOut | OOS bullets |
| "Imported library (OpenZeppelin 5.3.0 / 4.9.4-upgradeable, Chainlink CCIP, Orakl, Uniswap v3/v4) vulnerability" without SuperEarn-specific exploit path | OOS bullets |
| "Compiler-version pinning / unlocked pragma / EVM version / via_ir setting" finding | OOS bullets |
| "Stablecoin (USDT/USDC/USDO) temporary depeg" | OOS bullets |
| "Stablecoin permanent depeg / issuer freeze" | OOS bullets (systemic risk) |
| "Centralised key holds funds after recovery" | SE-P24 + Trust Assumptions |
| "External-yield strategy (Multi-Morpho / Pendle / etc.) defect" | OOS Contracts (external-yield-bounded) + Trust Assumptions |
| "CustomVault.totalAssets() reverts because a registered strategy reverts" | SSA-08 |
| "Reports identifying a previous Certik finding (SUA-* / SSA-* / SA2-)" without a materially different exploit path | OOS bullet + Known Issues prelude |
| Any finding rooted in SuperEarnRouter (Kaia or Ethereum) — permit handling, whitelistedVaults gating, previewRedeem accuracy, slippage on redeem, deposit-allowed hook bypass, etc. | OOS Contracts (SuperEarnRouter Kaia) + SE-P1; impact must propagate into in-scope CooldownVault per the 3-condition rule to qualify, and the propagation surface is then evaluated under CooldownVault (Critical, Category 2). |
The following items are referenced by Certik audit IDs (see reports 2026.02.19-certik.pdf / 2026.04.07-certik.pdf / 2026.04.28-certik.pdf in superearn-io/superearn-audit-reports). Each item is either acknowledged as intentional design, deliberately not present in the codebase, or mitigated operationally. Re-reports of these items will be marked Out of Scope and are not eligible for a bounty unless the report demonstrates a materially different exploit path against the current code.
The following are assumed to behave correctly and are out of scope:
SuperEarn supports good-faith security research. Activities conducted in compliance with this program are treated as authorized; SuperEarn will not pursue, support, or encourage legal action against a researcher for security research that:
Specifically, when these conditions are met:
This safe harbor:
If you are unsure whether a planned action is covered, ask via the designated submission channel before taking the action. SuperEarn will treat such pre-clearance requests confidentially.