mcpField
S
smart-contract-security

smart-contract-security

github.com/pluginagentmarketplace安全1263 次安装42 周前更新
代码仓库

关于 smart-contract-security

面向智能合约开发者的安全技能,涵盖常见漏洞、审计流程、安全工具和事件响应方法。

主要功能

  1. 01常见漏洞说明
  2. 02系统化审计清单
  3. 03静态分析与模糊测试指南
  4. 04形式化验证参考
  5. 05安全事件响应流程

适用场景

  1. 01发布前审查合约
  2. 02规划模糊测试和不变量测试
  3. 03分级处理疑似漏洞
  4. 04准备负责任的漏洞披露

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/pluginagentmarketplace/custom-plugin-blockchain --skill smart-contract-security

安装后在 Claude Code 中输入/smart-contract-security确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

assets/
config.yaml
schema.json
references/
GUIDE.md
PATTERNS.md
scripts/
validate.py

详细介绍

智能合约安全技能

掌握智能合约安全,包括漏洞检测、审计方法和事件响应流程。

快速开始

# Invoke this skill for security analysis
Skill("smart-contract-security", topic="vulnerabilities", severity="high")

涵盖主题

1. 常见漏洞

识别并预防:

  • 重入:违反 CEI 模式
  • 访问控制:缺少修饰符
  • 预言机操纵:闪电贷攻击
  • 整数问题:精度损失
2. 审计方法

系统化审查流程:

  • 人工审查:逐行分析
  • 静态分析:自动化工具
  • 模糊测试:基于属性的测试
  • 形式化验证:数学证明
3. 安全工具

必备工具:

  • Slither:快速静态分析
  • Mythril:符号执行
  • Foundry:模糊测试、不变量
  • Certora:形式化验证
4. 事件响应

处理安全事件:

  • 分诊:评估严重程度
  • 缓解:紧急措施
  • 事后复盘:根本原因分析
  • 披露:负责任地报告

漏洞速查

严重:重入
// VULNERABLE
function withdraw(uint256 amount) external {
    (bool ok,) = msg.sender.call{value: amount}("");
    require(ok);
    balances[msg.sender] -= amount;  // After call!
}

// FIXED: CEI Pattern
function withdraw(uint256 amount) external {
    balances[msg.sender] -= amount;  // Before call
    (bool ok,) = msg.sender.call{value: amount}("");
    require(ok);
}
高危:缺少访问控制
// VULNERABLE
function setAdmin(address newAdmin) external {
    admin = newAdmin;  // Anyone can call!
}

// FIXED
function setAdmin(address newAdmin) external onlyOwner {
    admin = newAdmin;
}
高危:未检查返回值
// VULNERABLE
IERC20(token).transfer(to, amount);  // Ignored!

// FIXED: Use SafeERC20
using SafeERC20 for IERC20;
IERC20(token).safeTransfer(to, amount);
中危:精度损失
// VULNERABLE: Division before multiplication
uint256 fee = (amount / 1000) * rate;

// FIXED: Multiply first
uint256 fee = (amount * rate) / 1000;

审计清单

审计前
  • 代码编译无警告
  • 测试通过且覆盖率良好
  • 已审查文档
核心安全
  • 遵循 CEI 模式
  • 已设置重入保护
  • 管理员函数设有访问控制
  • 输入验证完整
DeFi 特定检查
  • 检查预言机数据是否过期
  • 滑点保护
  • 抵御闪电贷攻击
  • 防止三明治攻击

安全工具

静态分析
# Slither - Fast vulnerability detection
slither . --exclude-dependencies

# Mythril - Symbolic execution
myth analyze src/Contract.sol

# Semgrep - Custom rules
semgrep --config "p/smart-contracts" .
模糊测试
// Foundry fuzz test
function testFuzz_Withdraw(uint256 amount) public {
    amount = bound(amount, 1, type(uint128).max);

    vm.deal(address(vault), amount);
    vault.deposit{value: amount}();

    uint256 before = address(this).balance;
    vault.withdraw(amount);

    assertEq(address(this).balance, before + amount);
}
不变量测试
function invariant_BalancesMatchTotalSupply() public {
    uint256 sum = 0;
    for (uint i = 0; i < actors.length; i++) {
        sum += token.balanceOf(actors[i]);
    }
    assertEq(token.totalSupply(), sum);
}

严重程度分类

严重程度影响示例
严重直接资金损失重入、未受保护的初始化
高危重大损害访问控制、预言机操纵
中危有条件的影响精度损失、时序问题
低危轻微问题缺少事件、命名问题

事件响应

1. 检测
# Monitor for suspicious activity
cast logs --address $CONTRACT --from-block latest
2. 缓解
// Emergency pause
function pause() external onlyOwner {
    _pause();
}
3. 恢复
  • 评估损失范围
  • 协调披露
  • 经审计后部署修复

常见陷阱

陷阱风险预防措施
只测试正常情况遗漏边界情况对边界进行模糊测试
忽略集成外部调用风险审查所有依赖项
信任 block.timestamp矿工操纵仅用于较长时间范围

交叉引用

  • Bonded Agent:06-smart-contract-security
  • 相关技能:solidity-development、defi-protocols

资源

  • SWC Registry:常见弱点分类
  • Rekt News:黑客攻击事后复盘
  • Immunefi:漏洞赏金

版本历史

版本日期变更
2.0.02025-01生产级版本,包含工具和方法
1.0.02024-12初始发布

评论

支持 Markdown