solidity-guardian

star 1

智能合约安全分析技能:能够检测合约中的漏洞,提出修复建议,并生成审计报告。支持 Hardhat/Foundry 项目。该工具结合了 Pattern Matching 技术以及 Trail of Bits、OpenZeppelin 和 Consensys 提供的最佳实践来进行安全分析。

AgentWorkers By AgentWorkers schedule Updated 2/17/2026

name: solidity-guardian version: 1.0.0 description: 智能合约安全分析技能:能够检测合约中的漏洞,提出修复建议,并生成审计报告。支持 Hardhat/Foundry 项目。该工具结合了 Pattern Matching 技术以及 Trail of Bits、OpenZeppelin 和 Consensys 提供的最佳实践来进行安全分析。 author: aviclaw tags: - solidity - security - audit - smart-contracts - ethereum - vulnerability - scanner

Solidity Guardian 🛡️

用于分析 Solidity 智能合约的安全性。识别漏洞,提供修复建议,并遵循最佳实践。

快速入门

# Analyze a single contract
node skills/solidity-guardian/analyze.js contracts/MyContract.sol

# Analyze entire project
node skills/solidity-guardian/analyze.js ./contracts/

# Generate markdown report
node skills/solidity-guardian/analyze.js ./contracts/ --format markdown > AUDIT.md

它能检测什么(40 多种模式)

严重漏洞(必须修复)

ID 漏洞类型 描述
SG-001 重入(Reentrancy) 在状态更新之前执行外部调用
SG-002 未受保护的自我销毁(Unprotected selfdestruct) 自我销毁操作缺乏访问控制
SG-003 向不可信地址进行委托调用(Delegatecall to untrusted) 使用用户控制的地址进行委托调用
SG-004 未初始化的存储指针(Uninitialized storage pointer) 存储指针覆盖了存储槽
SG-005 签名重放(Signature replay) 在没有 nonce/chainId 的情况下使用 ecrecover
SG-006 任意跳转(Arbitrary jump) 函数类型由用户输入决定

高风险漏洞(应尽快修复)

ID 漏洞类型 描述
SG-010 缺少访问控制(Missing access control) 公共函数应受到限制
SG-011 未经检查的转账(Unchecked transfer) ERC20 转账操作未进行返回值检查
SG-012 整数溢出(Integer overflow) 在 Solidity 0.8 之前使用未经过安全处理的算术运算
SG-013 使用 tx.origin 进行身份验证(Using tx.origin for authentication)
SG-014 随机性不足(Weak randomness) 使用 block.timestamp 或 blockhash 生成随机数
SG-015 未受保护的提款操作(Unprotected withdrawal) 提款操作未检查账户所有权
SG-016 未经检查的低级函数调用(Unchecked low-level call) .call() 调用未检查是否成功
SG-017 危险的相等性判断(Dangerous equality) 平衡检查存在漏洞(容易被操纵)
SG-018 已弃用的函数(Deprecated functions) 如 suicide、sha3、throw、callcode 等
SG-019 构造函数错误(Wrong constructor) 函数名称与合约名称不匹配

中等风险漏洞(建议修复)

ID 漏洞类型 描述
SG-020 使用过时的 Solidity 版本(Floating pragma) 使用非最新的 Solidity 版本
SG-021 未对零地址进行验证(Missing zero check) 对零地址的操作缺乏验证
SG-022 逻辑依赖区块时间戳(Timestamp dependence) 代码逻辑依赖于区块时间戳
SG-023 可能导致拒绝服务攻击(DoS with revert) 包含外部调用的循环可能导致系统回滚
SG-024 存在抢先执行风险(Front-running risk) 合约状态变化可被预测

低风险漏洞(属于最佳实践范畴)

ID 漏洞类型 描述
SG-030 未记录状态变化(Missing events) 合约状态变化未通过事件触发记录
SG-031 硬编码的数值(Magic numbers) 使用硬编码的数值而非常量
SG-032 函数可见性设置不当(Implicit visibility) 函数的可见性设置不明确
SG-033 合约规模过大(Large contract) 合约大小超出推荐范围
SG-034 公共函数缺乏文档说明(Public functions without documentation) 公共函数没有相应的文档说明

使用示例

基本分析

const { analyzeContract } = require('./analyzer');

const results = await analyzeContract('contracts/Token.sol');
console.log(results.findings);

带有修复建议的分析结果

const results = await analyzeContract('contracts/Vault.sol', {
  includeFixes: true,
  severity: ['critical', 'high']
});

for (const finding of results.findings) {
  console.log(`[${finding.severity}] ${finding.title}`);
  console.log(`  Line ${finding.line}: ${finding.description}`);
  console.log(`  Fix: ${finding.suggestion}`);
}

生成报告

const { generateReport } = require('./reporter');

const report = await generateReport('./contracts/', {
  format: 'markdown',
  includeGas: true,
  includeBestPractices: true
});

fs.writeFileSync('SECURITY_AUDIT.md', report);

最佳实践指南

在编写安全合约时,请遵循以下指南:

访问控制

  • 使用 OpenZeppelin 的 OwnableAccessControl
  • 对敏感函数应用 onlyOwner 或角色权限检查
  • 实现两步所有权转移机制
  • 对关键操作设置时间锁

防止重入

  • 在所有对外接口函数上使用 ReentrancyGuard
  • 遵循“检查-效果-交互”(checks-effects-interactions)模式
  • 在执行外部调用之前更新合约状态
  • 在支付操作中使用“拉取”(pull)而非“推送”(push)机制

输入验证

  • 验证所有外部输入数据
  • 检查输入地址是否为零
  • 确认数组长度正确
  • 在进行代币转账时使用 SafeERC20 类库

算术安全

  • 使用 Solidity 0.8 或更高版本,或使用 SafeMath 库
  • 避免除以零的操作
  • 核对百分比计算结果(确保不超过 100%)
  • 注意处理代币的小数部分

可升级性(如适用)

  • 使用初始化器(Initializer)而非构造函数(Constructor)
  • 保护初始化过程,防止被重新初始化
  • 遵循存储布局规则
  • 测试合约的升级路径

与 Slither 的集成

Guardian 可以与 Slither 一起使用,以实现更全面的合约分析:

# Combined analysis (auto-installs Slither if missing)
node skills/solidity-guardian/slither-integration.js ./contracts/ --install-slither

# Generate combined report
node skills/solidity-guardian/slither-integration.js . --format markdown --output AUDIT.md

# Guardian only (faster, no Slither dependency)
node skills/solidity-guardian/slither-integration.js ./contracts/ --guardian-only

# Slither only
node skills/solidity-guardian/slither-integration.js ./contracts/ --slither-only

为什么需要两者?

  • Guardian:具有快速的模式匹配能力,支持自定义规则,无需编译过程
  • Slither:提供深度的数据流分析,基于控制流图(CFG)的检测机制,检测范围更广

与其他工具的集成

Hardhat

// hardhat.config.js
require('./skills/solidity-guardian/hardhat-plugin');

// Run: npx hardhat guardian

Foundry

# Add to CI
forge build
node skills/solidity-guardian/analyze.js ./src/

参考资源


开发者:Avi 🔐 | 安全至上,始终将安全性放在首位。

Install via CLI
npx skills add https://github.com/AgentWorkers/skills --skill solidity-guardian
Repository Details
star Stars 1
call_split Forks 1
navigation Branch main
article Path SKILL.md
More from Creator
AgentWorkers
AgentWorkers Explore all skills →