返回顶部
s

solidity-auditSolidity审计

>

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.1
安全检测
已通过
115
下载量
免费
免费
0
收藏
概述
安装方式
版本历史

solidity-audit

Solidity 智能合约审计助手

基于EEA EthTrust安全等级V3规范的结构化智能合约安全审计工作流。

审计流程概览

  1. 1. 项目准备 → 2. 自动化扫描 → 3. 人工审查 → 4. 测试与验证 → 5. 报告生成

⚡ 快速审计模式(30分钟内)

适用于紧急情况或初步评估:

  1. 1. 访问控制检查(5分钟)
- 所有者权限 - 敏感函数修饰符
  1. 2. 重入风险检查(5分钟)
- 外部调用位置 - 状态更新顺序
  1. 3. 代币安全检查(10分钟)
- SafeERC20使用 - 返回值检查
  1. 4. 关键漏洞扫描(10分钟)
- 整数溢出 - 签名验证 - 权限绕过

📊 审计能力基线(基于10轮训练)

能力维度AI审计专业审计差距
基础漏洞90%100%-10%
业务逻辑
75% | 95% | -20% | | 数学边界 | 50% | 85% | -35% | | 复杂交互 | 60% | 90% | -30% |

AI优势:快速覆盖、模式匹配、知识面广
AI劣势:缺少工具链、深度分析有限、边界条件处理不足

第一步:项目范围与准备

输入确认

  • - 合约源代码(建议使用冻结版本进行审计)
  • 编译器版本和优化设置
  • 项目文档(架构图、功能描述)
  • 测试用例(如有)

审计范围定义

□ 逻辑合约数量及其功能
□ 是否包含代理合约(可升级性)
□ 外部依赖(预言机、跨链桥等)
□ 部署网络(主网/L2/测试网)

安全等级选择
等级适用场景核心要求
[S] 基础简单代币合约、基础DeFi无已知高危漏洞、基本保护
[M] 中级
复杂DeFi、NFT市场、DAO | 外部调用安全、访问控制、预言机验证 |

| [Q] 高级 | 跨链桥、借贷协议、金库管理 | 业务逻辑验证、MEV保护、完整文档 |

审计前检查清单

  • - [ ] 代码已冻结,审计期间无修改
  • [ ] 编译器版本已固定(例如 pragma solidity 0.8.20)
  • [ ] 所有依赖版本已锁定
  • [ ] 已提供部署脚本或配置
  • [ ] 测试覆盖率报告可用(如有)

第二步:自动化工具扫描

静态分析工具

Slither(Trail of Bits)
bash

安装


pip install slither-analyzer

基础扫描

slither . --exclude-dependencies

输出JSON格式

slither . --exclude-dependencies --json output.json

特定检测器

slither . --detect reentrancy-eth,uninitialized-state

Aderyn(基于Rust,速度快)
bash

安装


cargo install aderyn

扫描

aderyn .

输出报告

aderyn . -o report.md

工具输出映射到EEA规范

工具检测EEA要求安全等级
tx.origin使用[S] 无tx.originS
selfdestruct
[S] 无selfdestruct() | S | | CREATE2 | [S] 无CREATE2 | S | | assembly块 | [S] 无assembly {} | S | | 重入检测 | [M] 外部调用 | M | | 未初始化变量 | [S] 初始化状态 | S | | 未检查返回值 | [M] 检查返回值 | M |

编译器版本检查

bash

检查已知编译器漏洞

slither . --check-compiler-bugs

关于编译器相关的安全要求,请参考EEA § 3.9 源代码、编译指示和编译器。

第三步:人工审查清单

[S] 基础等级审查

3.1 重放攻击保护

solidity // 检查:交易哈希是否包含chainId? // 正确示例: keccak256(abi.encodePacked( \x19\x01, DOMAIN_SEPARATOR, // 包含chainId hashStruct ))

// 危险:缺少chainId会导致跨链重放

3.2 危险操作码

  • - [ ] 检查CREATE2使用理由,是否必要
  • [ ] 检查selfdestruct调用,确认合法原因
  • [ ] 验证delegatecall目标地址可控性

3.3 权限验证

solidity // 危险:使用tx.origin进行授权 require(tx.origin == owner); // 钓鱼攻击风险

// 正确:使用msg.sender
require(msg.sender == owner);

3.4 编码安全

solidity // 危险:连续可变长度参数导致哈希碰撞 keccak256(abi.encodePacked(str1, str2)); // str1=ab, str2=c == str1=a, str2=bc

// 安全:使用encode或固定长度
keccak256(abi.encode(str1, str2));

3.5 内联汇编

  • - [ ] 列出所有assembly块
  • [ ] 检查是否有详细注释说明原因
  • [ ] 重点关注内存操作和存储操作

[M] 中级等级审查

3.6 外部调用与重入

solidity // CEI模式检查(检查-效果-交互) function withdraw() external { // 1. 检查 require(balances[msg.sender] > 0, 余额不足);

// 2. 效果(先更新状态)
balances[msg.sender] = 0;

// 3. 交互(最后进行外部调用)
(bool success, ) = msg.sender.call{value: amount}();
require(success, 转账失败);
}

// 只读重入检查:在状态更新前是否调用了外部view函数?

3.7 预言机依赖

  • - [ ] 价格数据源是否可信?
  • [ ] 是否有TWAP时间窗口?
  • [ ] 是否有数据过期检测机制?
  • [ ] 是否有备用方案?

solidity
// 检查:是否有价格偏差检测?
uint256 price = oracle.getPrice();
require(price > 0 && price < MAX_PRICE, 价格无效);

// 检查:是否有时间戳验证?
require(block.timestamp - oracle.lastUpdate() < HEARTBEAT, 数据过期);

3.8 访问控制

  • - [ ] 检查关键函数的权限修饰符
  • [ ] 角色管理是否正确实现
  • [ ] 初始化函数是否可重复调用

solidity
// 危险:未保护的初始化函数
function initialize() external {
owner = msg.sender; // 任何人都可以调用!
}

// 安全:使用OpenZeppelin Initializable
function initialize() external initializer {
owner = msg.sender;
}

3.9 整数溢出

solidity // Solidity 0.8+默认检查溢出 // 但需要检查unchecked块: unchecked { // 这里的溢出不会被检测到! uint256 result = a + b; // 危险 }

// 特殊情况:循环计数器可以安全使用unchecked
for (uint256 i; i < n; ) {
// ...
unchecked { i++; }
}

[Q] 高级等级审查

3.10 逻辑与文档一致性

  • - [ ] 比较代码实现与白皮书/文档
  • [ ] 检查是否有未记录的“隐藏功能”
  • [ ] 验证数学公式实现正确性

3.11 MEV攻击面

  • - [ ] 三明治攻击风险(AMM定价)
  • [ ] 抢跑风险(公共mempool)
  • [ ] 清算机制是否可被利用

solidity
// AMM三明治攻击示例
// 用户交易:A -> B
// 攻击者:在用户交易前买入B,在用户交易后卖出B
// 保护措施:使用TWAP、滑点保护

3.12 可升级合约安全

solidity // 检查项: // 1. 代理合约实现是否正确? // 2. 初始化函数是否有重入保护? // 3. 升级权限是否合理? // 4. 是否存在存储布局冲突?

// 危险:存储布局冲突
// V

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 solidity-audit-1776119942 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 solidity-audit-1776119942 技能

通过命令行安装

skillhub install solidity-audit-1776119942

下载

⬇ 下载 solidity-audit v1.0.1(免费)

文件大小: 23.64 KB | 发布时间: 2026-4-14 14:06

v1.0.1 最新 2026-4-14 14:06
No user-facing or functional changes in this version.

- No file changes detected between versions 1.0.0 and 1.0.1.
- Documentation and skill capabilities remain the same.

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部