ranmdy/exploit-finder

GitHub: ranmdy/exploit-finder

覆盖多链生态的 DeFi 安全分析框架,提供 20 多个协议的详细审计报告、自动化扫描工具及基于 Foundry 的可验证漏洞利用 PoC。

Stars: 0 | Forks: 0

# DeFi 安全分析与漏洞利用研究 对跨越 EVM、Sui Move、Rust 和自定义 L1 链的 20 多个 DeFi 协议的综合安全分析。包含源代码合约、详细报告以及基于 Foundry 的概念验证漏洞利用测试。 ## 仓库结构 ``` exploit-finder/ ├── contracts/ # Source contracts pulled from on-chain / GitHub ├── reports/ # Detailed analysis reports per protocol ├── pocs/ # Foundry PoC exploit tests (12/12 passing) ├── scanner/ # Automated scanning tools ├── scripts/ # Extraction and analysis scripts └── docs/ # Supporting documentation ``` ## 发现摘要 ### 第二阶段:深度协议分析(2025 年 7 月) -- 附带已验证 PoC | 协议 | 链 | H | M | L | INFO | PoC | |----------|-------|---|---|---|------|-----| | [1inch LOP v4](#1inch-limit-order-protocol-v4) | EVM | 0 | 1 | 0 | 2 | [是](pocs/test/PoC_PrePermitReentrancy.sol) | | [Garden Finance](#garden-finance) | EVM | 0 | 1 | 2 | 0 | [是](pocs/test/PoC_NativeHTLC_TransferFail.sol) | | [Silo Finance v2](#silo-finance-v2) | EVM | 0 | 2 | 0 | 1 | [是](pocs/test/PoC_SilentIRMFailure.sol) | | [Resupply.fi](#resupplyfi) | EVM | 0 | 1 | 0 | 2 | [是](pocs/test/PoC_InsurancePoolDivByZero.sol) | | [KiloEx](#kiloex) | EVM | 1 | 1 | 0 | 1 | -- | | [Typus Finance](#typus-finance) | Sui | 0 | 2 | 0 | 1 | -- | | [Haedal Protocol](#haedal-protocol) | Sui | 0 | 1 | 0 | 2 | -- | | [Step Finance](#step-finance) | Solana | 0 | 0 | 0 | 0 | -- | | [Loopscale](#loopscale) | -- | -- | -- | -- | -- | 闭源 | | [UPCX](#upcx) | -- | -- | -- | -- | -- | 专有 L1 | | [Infini](#infini) | -- | -- | -- | -- | -- | 运营故障 | ### 第一阶段:初步分析(2025 年 7 月) | 协议 | 链 | H | M | 报告 | |----------|-------|---|---|--------| | [Resolv](#resolv-protocol) | EVM | 11 | 5 | [报告](reports/resolv/analysis_report.md) | | [Zoth](#zoth-protocol) | EVM | 5 | 8 | [报告](reports/zoth/analysis_report.md) | | [Cetus](#cetus-protocol) | Sui Move | 6 | 12 | [报告](reports/cetus/analysis_report.md) | | [Dango](#dango-protocol) | Rust L1 | 12 | 0 | [报告](reports/dango/analysis_report.md) | ### 其他分析 | 协议 | 发现 | 报告 | |----------|----------|--------| | Stargate V2 | 7 个严重, 2 个高危 | 见[详细说明](#stargate-v2--vebetterdao-writeups) | | VeBetterDAO | 3 个严重, 1 个高危 | 见[详细说明](#stargate-v2--vebetterdao-writeups) | | VeChain Energy | 1 个严重 | 见[详细说明](#stargate-v2--vebetterdao-writeups) | | Compound v3 | 见报告 | [报告](reports/compound_v3/analysis_report.md) | | Beefy Finance | 见报告 | [报告](reports/beefy/analysis_report.md) | | Pear Protocol | 见报告 | [报告](reports/pear/analysis_report.md) | | ALEX | 见报告 | [报告](reports/alex/analysis_report.md) | | LEO DEX | 见报告 | [报告](reports/leo_dex/analysis_report.md) | ## 已验证 PoC 漏洞利用 所有 PoC 测试均使用 Foundry 运行。**12/12 个测试通过。** ``` cd pocs && forge install && forge test -vvvv ``` ### Garden Finance -- `.transfer()` 导致资金永久锁定 **发现:** NativeHTLC.sol 使用 `.transfer()`(2300 gas 限制)进行 ETH 支付。如果合约钱包(Gnosis Safe, AA 钱包)的 `receive()` 函数消耗超过 2300 gas,将永久性失败。ETH 将被卡住且无法恢复。 **受影响文件:** `NativeHTLC.sol:219,242` | `ArbNativeHTLC.sol:225,248` | `UDA.sol:72,138` **测试:** - `test_redeem_fails_for_contract_wallet` -- `.transfer()` 因 OutOfGas 回滚 - `test_refund_fails_for_contract_wallet` -- 退款也会失败,ETH 被永久锁定 - `test_redeem_works_for_eoa` -- 基准:EOA 正常工作 ### Silo Finance v2 -- 隐性利率模型失效 **发现:** `SiloLendingLib.sol:434-446` 在调用 IRM 时使用了 try/catch。如果 IRM 回滚,catch 块会静默设置 `rcomp = 0` -- 导致利息累积为零。借款人获得免费贷款,出借人得不到任何收益。 **测试:** - `test_irm_failure_skips_interest` -- IRM 回滚 = 100 万债务产生 0% 利息 - `test_irm_success_accrues_interest` -- 基准:正常工作的 IRM 正确累积 5% 的利息 - `test_repeated_irm_failure_compounds_loss` -- 失败 12 个月 = 损失 795,856 reUSD ### Resupply.fi -- InsurancePool 除零错误 **发现:** `InsurancePool.sol` 构造函数铸造了 1e18 的份额但没有转入任何支持资产。在部署者手动为资金池注资之前,`totalAssets() = 0` 会导致任何存款发生除零错误。 **测试:** - `test_deposit_reverts_before_funding` -- `panic: division by zero (0x12)` - `test_deposit_works_after_funding` -- 手动 1:1 注资后正常工作 - `test_wrong_funding_skews_shares` -- 2 倍过度注资 = 存款人损失 50% 的份额 ### 1inch LOP v4 -- Pre-Permit 回调恶意阻挠 **发现:** `OrderMixin.sol:179` 在第 338 行使订单失效之前调用了 `tryPermit()`。恶意 maker 的 `permit()` 重入 `fillOrder`,设置 bit invalidator,随后外部的 fill 触发 `BitInvalidatedOrder`。整个 tx 回滚 -- taker 浪费了 gas,得到 0 个 fill。 **测试:** - `test_permit_reentrancy_griefs_taker` -- 内部 fill 设置 bit,外部 fill 回滚 - `test_normal_fill_works` -- 基准:正常 fill 成功 - `test_repeated_griefing` -- 攻击可在多个订单中重复进行 ## 第二阶段协议详情 ### 1inch Limit Order Protocol v4 **报告:** [reports/1inch/analysis_report.md](reports/1inch/analysis_report.md) **范围:** 11 个文件(OrderMixin.sol, OrderLib.sol, LimitOrderProtocol.sol, BitInvalidatorLib.sol, RemainingInvalidatorLib.sol, MakerTraitsLib.sol, TakerTraitsLib.sol, SeriesEpochManager.sol, ExtensionLib.sol, AmountCalculatorLib.sol, PredicateHelper.sol) | ID | 严重性 | 标题 | |----|----------|-------| | M-01 | 中危 | Pre-permit 回调在状态失效前触发 -- 恶意阻挠向量(已通过 PoC 确认) | | I-01 | 信息 | transferFrom 中的任意后缀 -- 非标准代币风险 | | I-02 | 信息 | simulate() 是无权限的 | ### Garden Finance **报告:** [reports/garden/analysis_report.md](reports/garden/analysis_report.md) **范围:** HTLC.sol, ArbHTLC.sol, NativeHTLC.sol, ArbNativeHTLC.sol, HTLCRegistry.sol, UDA.sol | ID | 严重性 | 标题 | |----|----------|-------| | M-01 | 中危 | HTLCRegistry 允许任意订单元数据 -- 缺少对手方验证 | | L-01 | 低危 | UDA.sol recover() 使用 .transfer() -- 导致合约钱包失败 | | L-02 | 低危 | NativeHTLC + ArbNativeHTLC 使用 .transfer() -- ETH 永久锁定(已通过 PoC 确认) | ### Silo Finance v2 **报告:** [reports/silo/analysis_report.md](reports/silo/analysis_report.md) **范围:** 8 个文件(Actions.sol, Silo.sol, SiloConfig.sol, SiloMathLib.sol, SiloLendingLib.sol, SiloSolvencyLib.sol, SiloERC4626Lib.sol, SiloFactory.sol) | ID | 严重性 | 标题 | |----|----------|-------| | M-01 | 中危 | hookReceiver 拥有无限的 delegatecall 权力 -- 单点故障 | | M-02 | 中危 | 隐性 IRM 失效 -- 当 IRM 回滚时累积零利息(已通过 PoC 确认) | | I-01 | 信息 | 闪电贷重入保护依赖于外部的 SiloConfig 状态 | ### Resupply.fi **报告:** [reports/resupply/analysis_report.md](reports/resupply/analysis_report.md) **范围:** 5 个文件(InsurancePool.sol, ResupplyPair.sol, LiquidationHandler.sol, RedemptionHandler.sol, Stablecoin.sol) | ID | 严重性 | 标题 | |----|----------|-------| | M-01 | 中危 | 构造函数预铸无支持的份额 -- 在注资前存款失败(已通过 PoC 确认) | | I-01 | 信息 | 在经历 2 个灾难性 epoch 后,死份额被稀释为 0 | | I-02 | 信息 | totalAssets() 中使用原始 balanceOf -- 捐赠会使所有份额增值 | ### KiloEx **报告:** [reports/kiloex/analysis_report.md](reports/kiloex/analysis_report.md) | ID | 严重性 | 标题 | |----|----------|-------| | H-01 | 高危 | 历史:ERC-2771 MinimalForwarder 伪造 keeper 身份(2025 年 4 月漏洞利用) | | M-01 | 中危 | 通过 executePositionsWithPricesT 进行推送式预言机价格操纵 | | I-01 | 信息 | 中心化 keeper 系统 | ### Typus Finance **报告:** [reports/typus/analysis_report.md](reports/typus/analysis_report.md) | ID | 严重性 | 标题 | |----|----------|-------| | M-01 | 中危 | ManagerCap 中心化 -- 单一权限控制所有金库 | | M-02 | 中危 | 预言机价格陈旧 -- 价格源没有新鲜度检查 | | I-01 | 信息 | 拍卖结算时间操纵 | ### Haedal Protocol **报告:** [reports/haedal/analysis_report.md](reports/haedal/analysis_report.md) | ID | 严重性 | 标题 | |----|----------|-------| | M-01 | 中危 | AdminCap / OperatorCap 中心化(未验证 -- Sui 链上) | | I-01 | 信息 | 验证者选择集中风险 | | I-02 | 信息 | 解质押延迟操纵窗口 | ### Step Finance **报告:** [reports/step_finance/analysis_report.md](reports/step_finance/analysis_report.md) 无异常 -- 没有发现。Solana 的原子交易模型阻止了 EVM 中常见的漏洞类别。 ## 第一阶段协议详情 ### Resolv Protocol **报告:** [reports/resolv/analysis_report.md](reports/resolv/analysis_report.md) | 11 个高危,5 个中危 主要发现:针对 stUSR 的首次存款通胀攻击,SERVICE_ROLE 可以销毁任何地址的代币,completeBurn 依赖于金库预批准,紧急提现抽干。 ### Zoth Protocol **报告:** [reports/zoth/analysis_report.md](reports/zoth/analysis_report.md) | 5 个高危,8 个中危 主要发现:质押存款零滑点保护,TOCTOU 提现惩罚,Cogito 无保护的铸造/销毁,processRedemption 任意抽干。 ### Cetus Protocol **报告:** [reports/cetus/analysis_report.md](reports/cetus/analysis_report.md) | 6 个高危,12 个中危 主要发现:Sqrt 价格/tick 状态不一致,零流动性费用增长,待处理流动性永久锁定,费用计算溢出。 ### Dango Protocol **报告:** [reports/dango/analysis_report.md](reports/dango/analysis_report.md) | 12 个高危 主要发现:孤立的转账恢复逻辑,预言机陈旧,保险基金资不抵债,金库份额价格操纵,通过 receive_remote 进行未经授权的铸造。 ## Stargate V2 / VeDAO 说明 关于 Stargate V2、VeBetterDAO 和 VeChain Energy 中 11 个漏洞的详细通俗说明: 1. **金库印钞机** -- 无上限的 rewardMillionth 耗尽金库(17.7 倍回报) 2. **所有者税** -- Intent 费用操纵(每个用户最高提取 10%) 3. **破碎的安全网** -- Planner multicall 颠倒了 allowFailure 逻辑 4. **跨链桥烧钱** -- StargateOFT 隐性铸造失败销毁代币 5. **缺失退款** -- 原生 drop 退款发送给 planner,而不是用户 6. **LP Token 跑路** -- burnLocked 在不调整 LP 供应量的情况下减少了资金池余额 7. **大巴封锁** -- 65,535 个假乘客 DOS 队列 8. **签名重放** -- VeBetterPassport 委托没有 nonce 9. **奖励劫持** -- X2EarnRewardsPool 管理员可以抽干整个资金池 10. **闪电贷投票** -- VOT3 闪电贷治理操纵 11. **无限 Gas 印钞机** -- VeChain Energy native_add 没有访问控制 ## 运行 PoC ``` # 安装依赖 cd pocs forge install # 运行所有 PoC 测试 forge test -vvvv # 运行特定协议 forge test --match-contract GardenTransferFailPoC -vvvv forge test --match-contract SiloIRMFailurePoC -vvvv forge test --match-contract ResupplyDivByZeroPoC -vvvv forge test --match-contract OneInchGriefingPoC -vvvv ``` ## 研究方法 1. **源码提取** -- 从 Etherscan、GitHub 或 Sui RPC(`sui_getNormalizedMoveModule`)获取已验证的源码 2. **自动扫描** -- 使用 Slither + 自定义检测器查找已知模式 3. **人工审查** -- 逐行审查范围内所有文件 4. **交叉比对** -- 对照之前的审计报告(Code4rena 等)进行检查,避免重复 5. **PoC 开发** -- 为所有已确认的发现编写 Foundry 测试 6. **报告生成** -- 包含文件/行号引用、严重性证明和修复方案的详细报告 ## 免责声明 本仓库仅用于**教育和授权的安全研究目的**。所有发现都应通过负责任的披露方式报告给相应的协议。请勿利用这些漏洞。
标签:DeFi, Docker部署, Foundry, Web报告查看器, 区块链安全, 可视化界面, 智能合约审计, 逆向工具