SuperAPI AI 工具集

defi-security

安全与审计

查看项目

更新于 10-15 08:48

技能介绍

用途

DeFi Security 是一项面向 DeFi 合约的安全技能,要求在任何 DeFi 合约(DEX、借贷、质押、LP、代币)部署之前被自动调用。其作用是在部署前系统性地识别威胁并施加相应的防护要求。

适用范围声明:仅适用于 DeFi 项目(DEX、lending、staking、LP、yield)。非 DeFi 项目可以忽略本技能。此外,技能要求始终使用用户所用的语言进行回复(用户用中文提问则用中文回答,用英文则用英文)。

主要能力

威胁与所需防护的对应规则

技能以“威胁—必需防护”的对照形式给出规则,包括:

  • 巨鲸操纵:每日交易上限 + 单笔金额限制 + 冷却窗口。
  • MEV / 三明治攻击:仅 EOA 检查(msg.sender == tx.origin),或使用 commit-reveal 模式。
  • 套利:推荐绑定 + 流动性分配 + 固定收益模型 + 锁定期。
  • 重入:所有外部调用函数使用 ReentrancyGuard(参见 solidity-security 技能)。
  • 闪电贷攻击:检查操作之间 block.number 是否变化,或使用 TWAP 定价。
  • 价格操纵:使用 Chainlink 预言机或 TWAP——绝不依赖 AMM 现货储备进行定价。
  • 授权利用:使用 safeIncreaseAllowance / safeDecreaseAllowance,用户流程中绝不使用原始 approve。
  • 治理攻击:投票需要快照 + 最低代币持有期;提案执行设置 ≥ 48 小时时间锁。
  • ERC4626 通胀攻击:首次存款必须强制最小金额,或使用虚拟份额防止舍入导致的份额稀释。
  • 跨金库信任绕过:Router/Registry 中继必须验证金库授权;闪电贷回调中绝不信任调用者身份(EVMbench/noya H-08)。
  • 抵押品所有权利用:清算/质押操作必须验证实际的 NFT/抵押品所有权(EVMbench/benddao)。
  • 联合曲线操纵:创建操作中的 ID/定价参数必须在外部调用前完全确定(EVMbench/phi H-06)。
  • DEX pair 的 _transfer TOCTOU:绝不在 _transfer 中通过余额/储备检查区分操作类型,两个方向都可被利用——买入 vs removeLiquidity(pair→user)以及卖出 vs addLiquidity(user→pair);仅使用地址白名单;新项目优先考虑 Uniswap V4 Hook。
  • 按地址状态绕过:任何 mapping(address => ...) 限制(冷却、最大交易量、最大余额)都可通过多地址或先转账再交易绕过;在钱包间转账时用 max(_lastTxTime[to], _lastTxTime[from]) 传播限制状态——绝不使用 block.timestamp(会造成 griefing)或直接赋值(覆盖会缩短时间)。

防巨鲸实现规则

  • 单笔最大交易金额:可通过 onlyOwner setter 配置。
  • 按地址的每日累计上限:用 mapping(address => mapping(uint256 => uint256))(address → day → amount)跟踪。
  • 交易间冷却:用 block.timestamp 检查强制最小时间间隔。
  • 豁免地址白名单(部署者、LP pair、质押合约)。

闪电贷防护规则

  • 对价格敏感操作:要求自上次交互以来 block.number 已发生变化。
  • 对依赖预言机的计算:使用至少 30 分钟的时间加权平均(TWAP)。
  • 对关键状态变更:在操作前加入最短持有期(例如必须持有代币 N 个区块)。

协议可组合性风险

来源:EVMbench(OpenAI/Paradigm,2026 年 2 月)——来自 Code4rena 审计的漏洞模式:

  • 跨金库操作 [noya H-08]:Registry/Router 中继调用必须验证金库级授权;防止 keeper 使用闪电贷冒充其他金库。
  • 借贷抵押品 [benddao]:清算函数必须验证 msg.sender 确实拥有或被授权操作目标抵押品。
  • 联合曲线 [phi H-06]:在 create + auto-buy 操作中,ID 分配和定价参数必须在买入交易执行前完全确定;防止重入修改它们。
  • 共享注册表 [noya H-08]:共享注册表中的权限传播链必须逐跳验证;绝不只依赖“trusted sender”标志。

使用方式

主网上线检查清单

在主网部署之前,逐项验证:

  • 所有 onlyOwner 函数已转移至多签钱包。
  • 时间锁合约已部署并配置(关键变更至少 24 小时延迟)。
  • 紧急暂停机制已测试——pause 和 unpause 函数均正常工作。
  • 每日限额参数已记录并设置为合理值。
  • 第三方安全审计已完成,所有 critical/high 问题已解决。
  • 测试网部署运行至少 7 天且无问题。
  • 滑点、费用和锁定期参数已审查并记录。
  • 初始流动性计划已记录(金额、锁定时长、LP 代币处理方式)。
  • 所有 DeFi 关键函数的模糊测试以高迭代次数(10000+)通过。

应急响应流程

  1. 检测:监控告警触发(链上监控、社区报告)。
  2. 暂停:指定地址调用 pause()——必须在数分钟内响应。
  3. 评估:技术负责人分析根本原因,估算资金影响。
  4. 沟通:向社区渠道(Discord、Twitter、Telegram)发布事件通知。
  5. 修复:部署修复或准备恢复方案。
  6. 恢复:在 fork 上验证修复后调用 unpause()——或迁移到新合约。
  7. 复盘:48 小时内发布详细事件报告。

DeFi 测试参考

  • 模糊测试资金流:对质押/池合约以高迭代次数(10000+)运行模糊测试。
  • Fork 主网测试:使用 Foundry fork 模式连接主网 RPC,以真实状态测试。
  • 模拟巨鲸交易:使用 Foundry cast CLI 在 fork 网络上模拟大额调用。

适用场景

适用于 DEX、借贷(lending)、质押(staking)、LP、收益(yield)等 DeFi 项目的合约部署前安全审查与加固;非 DeFi 项目可忽略本技能。

限制

技能的适用范围明确限定于 DeFi 项目。关于收费、价格、平台与具体效果等信息,资料中暂未提供。