SuperAPI AI 工具集

solidity-security

安全与审计

查看项目

更新于 10-15 11:20

技能介绍

Solidity Security 是 0xlayerghost/solidity-agent-kit 中的一项安全技能,定位为在编写或修改任何 Solidity 合约(.sol 文件)之前必须自动调用的安全规范。其内容以 Solidity 安全标准的形式组织,覆盖私钥保护、安全决策规则、重入防护、输入校验、Gas 控制、审计前检查清单以及安全验证命令等部分。

用途 该技能用于在 Solidity 合约的开发与审查过程中提供统一的安全约束,降低私钥泄露、重入攻击、访问控制缺失、代币转账异常、预言机价格操纵、签名重放等风险。它同时给出针对可升级合约、跨链桥与第三方依赖、多合约信任边界等场景的具体处理要求。

主要能力

  1. 私钥保护:要求链上写入前由开发者选择签名方式,推荐 Foundry Keystore(cast wallet import <NAME> --interactive 并使用 --account <NAME>),或使用 .env 存放 PRIVATE_KEY 并通过 source .env 加载、引用 "$PRIVATE_KEY",禁止将字面值粘贴进命令;禁止在日志、截图、对话或提交中暴露私钥;提供带占位值的 .env.example;将 .env 加入 .gitignore 并在每次提交前用 git status 验证;不读取或打印开发者的 .env,只提供命令。
  2. 安全决策规则:针对外部 ETH/代币转账使用 ReentrancyGuard 与 Checks-Effects-Interactions(CEI);ERC20 交互使用 SafeERC20 的 safeTransfer / safeTransferFrom;仅所有者函数继承 Ownable2Step(优先)或 OZ 4.9.x 的 Ownable;多角色访问使用 AccessControl;代币授权使用 safeIncreaseAllowance / safeDecreaseAllowance;价格数据使用 Chainlink AggregatorV3Interface 或带最小流动性检查的 TWAP,禁止直接使用现货池价格;可升级合约优先 UUPS 而非 TransparentProxy 并使用 Initializable;Solidity 版本低于 0.8.0 必须使用 SafeMath 但强烈建议升级到 0.8.20+;紧急场景继承 Pausable 并对面向用户的函数加 whenNotPaused,管理/紧急函数保持不暂停;白名单/空投使用 MerkleProof;签名认证使用 ECDSA + EIP712,签名须绑定 chainId + nonce + msg.sender + deadline;跨链桥/第三方依赖须审计所有继承的第三方合约代码;废弃合约须永久暂停或自毁;UUPS 升级模式中 _authorizeUpgrade 必须带 onlyOwner,实现合约构造函数调用 _disableInitializers(),升级时保留 onlyProxy;多合约信任边界中 Router/Registry 中继调用须验证来源合约授权,闪电贷回调内不得信任调用者身份;计数器/ID 与外部调用中所有计数递增与 ID 分配须在外部调用前完成,ETH 退款须最后执行。
  3. 重入防护:所有含外部调用的合约继承 ReentrancyGuard 并加 nonReentrant 修饰符,导入路径为 @openzeppelin/contracts/security/ReentrancyGuard.sol(OZ 4.9.x),即使有 ReentrancyGuard 也须遵循 CEI 模式。
  4. 输入校验:拒绝 address(0)、零金额转账,校验配对数组长度一致,限制数值范围以防粉尘攻击与 Gas 消耗攻击。
  5. Gas 控制:部署命令须包含 --gas-limit(建议 >= 3,000,000);用 forge test --gas-report 监控 Gas;在 foundry.toml 中配置 optimizer = true、optimizer_runs = 200;避免对动态数组的无界循环,使用分页或拉取模式。
  6. 审计前检查清单:涵盖访问与控制(nonReentrant、不使用 tx.origin、不 delegatecall 到不可信地址、Ownable2Step、Pausable、UUPS 相关要求、Router/Registry 授权验证)、代币与资金安全(SafeERC20、无原始 transfer、safeIncreaseAllowance、检查外部调用返回值)、代码质量(状态变更事件、无硬编码地址、.env 在 .gitignore 中)、预言机与价格(Chainlink 或 TWAP、最小流动性检查、价格偏差熔断)、测试(forge test 通过、forge coverage 覆盖安全关键路径、模糊测试覆盖算术边界)。
  7. 安全验证命令:forge test --gas-report、forge test --fuzz-runs 10000、forge coverage、forge script script/Deploy.s.sol --fork-url $RPC_URL -vvvv、slither src/。
  8. Slither MCP 集成:若配置了 slither MCP,优先使用其结构化分析能力,包括 get_detector_results、get_contract_metadata、get_function_source;若两者均不可用,则依赖审计前检查清单与 forge test --fuzz-runs 10000。

使用方式 该技能为自动调用型,要求在编写或修改任何 .sol 文件之前调用。使用时遵循其语言规则:始终以用户使用的语言回应。开发者按上述规则编写或审查合约,并在提交审计前逐项核对检查清单,运行给出的验证命令。

适用场景 适用于 Solidity 智能合约的开发、代码审查与审计前准备,尤其涉及代币转账、访问控制、可升级合约、预言机价格、签名认证、跨链桥与第三方依赖等场景。

限制 资料未提供该技能的收费、价格、平台支持范围、具体效果数据或安装步骤等事实,暂未提供。