拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Anthropic-Cybersecurity-Skills 实战:使用 Slither 与 Mythril 分析以太坊智能合约漏洞

Anthropic-Cybersecurity-Skills 实战使用 Slither 与 Mythril 分析以太坊智能合约漏洞【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATTCK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI 20 platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills导读本文是 analyzing-ethereum-smart-contract-vulnerabilities 技能的配套 API 参考手册深度解析围绕该技能内置的 api-reference.md 展开系统讲解 Slither 静态分析与 Mythril 符号执行两套 CLI 的完整用法、检测器与 SWC 漏洞分类体系的对应关系、JSON 输出结构并结合仓库中 scripts/agent.py 的自动化审计实现给出从环境安装、工具调用、结果去重到审计报告生成的端到端方案。读完本文你将掌握在合约部署到以太坊主网之前用这两款主流工具完成漏洞扫描、按严重级别分诊并生成结构化审计报告的全部技能。为什么智能合约必须在部署前做安全分析与传统的可热修复 Web 应用不同部署在以太坊上的智能合约代码不可变immutable且直接管理真实金融资产。SKILL.md 的开篇概述明确指出智能合约漏洞已在 DeFi 协议中造成数十亿美元级别的损失因此部署前的安全分析是硬性要求。该技能的技术定位如下Slither基于中间表示Intermediate Representation做快速静态分析可在数秒内检测90 种漏洞模式覆盖面广、速度快适合作为第一道防线Mythril基于符号执行 SMT 求解器做路径敏感分析擅长发现重入reentrancy、整数溢出等需要沿特定执行路径才能触发的复杂漏洞但运行更慢适合作为深挖环节。两者互补正是本技能先 Slither 快扫、再 Mythril 深挖工作流的设计依据。环境准备与安装依赖清单根据 api-reference.md 与 SKILL.md 的 Prerequisites完整环境包括组件用途安装方式Python 3.10 / pip运行两工具的基础环境系统包管理器slither-analyzer静态分析引擎pip install slither-analyzersolc 编译器编译 Solidity 源码Slither 依赖solc-select管理多版本mythril符号执行引擎pip install mythrilFoundry / Hardhat可选项目级多合约工程分析按官方流程安装安装命令# Slither依赖 solc 编译器 pip install slither-analyzer solc-select install 0.8.20 solc-select use 0.8.20 # Mythril pip install mythril说明solc-select用于在多个 Solidity 编译器版本之间切换。Slither 解析合约时需要与合约pragma版本匹配的 solc遇到版本不匹配报错时可用solc-select install version补装对应版本。api-reference.md 中以0.8.20为例实际请按目标合约的pragma solidity声明选择版本。Slither CLI 完整参考基本用法# 基础分析分析目录下所有合约 slither contracts/ # 输出 JSON 报告供下游程序解析 slither contracts/ --json slither-report.json--json输出在自动化场景中至关重要仓库 scripts/agent.py 中的run_slither()正是通过slither path --json -将结果以 JSON 形式写到标准输出再交给json.loads()解析def run_slither(contract_path): Run Slither static analysis on Solidity contract. cmd [slither, contract_path, --json, -] result subprocess.run(cmd, capture_outputTrue, textTrue, timeout120) try: return json.loads(result.stdout) if result.stdout else {} except json.JSONDecodeError: logger.error(Slither JSON parse failed) return {}这里传入-作为--json的参数值表示 JSON 输出到 stdout这与 CLI 手册中的文件输出形式等价但更便于程序化接管。timeout120是对 90 检测器全量运行的保守时间预算。检测器筛选与清单# 只运行指定的检测器逗号分隔 slither contracts/ --detect reentrancy-eth,unprotected-upgrade # 列出全部可用检测器 slither --list-detectors--detect允许聚焦特定漏洞类别。例如在应急复核场景下只查reentrancy-ethETH 重入与unprotected-upgrade未保护的可升级代理能显著缩短扫描时间。--list-detectors输出的检测器名与 Slither Detector Severity Levels 表一一对应是了解工具能力边界的第一入口。打印与图形输出# 打印合约摘要函数、状态变量、继承关系概览 slither contracts/ --print human-summary # 生成继承关系图DOT 格式可渲染为图片 slither contracts/ --print inheritance-graph--print系列是分析辅助输出适合快速理解目标合约的整体结构——在审计陌生代码库时先跑human-summary掌握合约拓扑再有针对性地运行检测器是高效的工作顺序。Mythril CLI 完整参考基本用法与输出格式# 分析单个合约 myth analyze contracts/Token.sol # 以 JSON 格式输出 myth analyze contracts/Token.sol -o jsonMythril 的-o json同样服务于自动化agent.py 的run_mythril()使用myth analyze path --execution-timeout timeout -o json调用并在analyze_mythril_results()中遍历顶层issues数组解析发现项每条 issue 包含swc-id、severity、contract、function、lineno等字段详见下文 JSON 结构部分。执行控制参数# 设置符号执行超时秒防止路径爆炸导致的分析悬挂 myth analyze contracts/Token.sol --execution-timeout 300 # 增加分析深度与交易数探索更深的执行路径 myth analyze contracts/Token.sol --max-depth 50 --transaction-count 3参数含义与使用建议参数作用建议--execution-timeout单个合约的符号执行时间上限秒复杂合约建议 300 起步agent.py 默认即 300 秒可用--mythril-timeout覆盖--max-depth探索的执行路径深度值越大覆盖越深耗时越长--transaction-count模拟的交易调用次数用于跨多次调用的状态相关漏洞如先存款后重入分析已部署的字节码# 通过链上地址直接分析已部署字节码无需源码 myth analyze --address 0x1234... --rpc infura--address--rpc组合让 Mythril 可以直接拉取主网或任意 RPC 端点上已部署合约的字节码进行分析。这在无源码的事后取证场景如安全事件调查中分析被攻击合约中价值极大——这正是本技能在安全事件响应场景中的典型用法。--rpc infura表示使用 Infura 公共 RPC也可替换为其他兼容 Ethereum JSON-RPC 的端点。Slither 检测器严重级别api-reference.md 给出了 Slither 内置检测器的 (Impact, Confidence) 分级矩阵这是分诊排序的权威依据ImpactConfidence示例检测器HighHighreentrancy-eth, suicidal, arbitrary-send-ethHighMediumcontrolled-delegatecall, reentrancy-no-ethMediumHighlocked-ether, incorrect-equalityMediumMediumuninitialized-state, shadowing-stateLowHighnaming-convention, solc-versionInformationalHighpragma, dead-code在 agent.py 的analyze_slither_results()中该分级被进一步编程化为排序权重表findings: sorted(findings, keylambda x: {high: 0, medium: 1, low: 2, informational: 3}.get(x[severity], 4))也就是说报告输出时 High 影响级发现永远排在最前其次是 Medium、Low、Informational——与上表的分诊逻辑完全一致。此外该函数还会按检测器聚合by_detector计数截取 Top 15帮助审计者一眼看出漏洞热点集中在哪些模式上。SWC 漏洞分类注册表核心条目api-reference 收录SWCSmart Contract Weakness Classification是社区通用的智能合约弱点编号体系让不同工具、不同团队的审计结论可以互相参照。api-reference.md 列出关键条目如下SWC ID漏洞标题工具覆盖SWC-101整数溢出/下溢Integer Overflow/UnderflowMythrilSWC-104未检查的调用返回值Unchecked Call ReturnSlither MythrilSWC-106未保护的 SELFDESTRUCTSlither MythrilSWC-107重入ReentrancySlither MythrilSWC-110断言违例Assert ViolationMythrilSWC-112对不可信目标执行 DelegatecallSlitherSWC-115tx.origin 鉴权SlitherSWC-116区块时间戳依赖MythrilSWC-120弱随机源Weak RandomnessSlither仓库扩展条目仓库 scripts/agent.py 内置的SWC_REGISTRY字典在 api-reference 基础上额外补充了两个实战高频条目SWC-113DoS with Failed Call因外部调用失败导致的拒绝服务——例如循环内反复向可能 revert 的地址转账一个失败的 call 即可拖垮整个函数SWC-115 / SWC-116agent.py 中的标题措辞分别为 Authorization through tx.origin 与 Block values as a proxy for time即 tx.origin 鉴权与区块值充当时间代理与官方分类口径一致。SWC_REGISTRY { SWC-101: Integer Overflow and Underflow, SWC-104: Unchecked Call Return Value, SWC-106: Unprotected SELFDESTRUCT, SWC-107: Reentrancy, SWC-110: Assert Violation, SWC-112: Delegatecall to Untrusted Callee, SWC-113: DoS with Failed Call, SWC-115: Authorization through tx.origin, SWC-116: Block values as a proxy for time, SWC-120: Weak Sources of Randomness, }这份注册表在审计报告生成阶段会把 Mythril 输出的swc-id翻译成人类可读的标题是机器编号 → 业务语言转换的关键一环。Slither JSON 输出结构api-reference.md 给出的 Slither JSON 输出结构是自动化解析的基础{ success: true, results: { detectors: [{ check: reentrancy-eth, impact: High, confidence: Medium, description: Reentrancy in Contract.withdraw(), elements: [{source_mapping: {filename_short: Contract.sol, lines: [42, 43]}}] }] } }关键字段说明字段含义agent.py 的消费方式check检测器名称作为detector字段参与按检测器聚合计数impact影响级别High/Medium/Low/Informational参与严重级别统计与排序confidence置信度High/Medium/Low直接透传进发现项description漏洞描述含触发位置截断至 200 字符后入库elements[].source_mapping源码定位文件名 行号区间提取为filename_short:L起始行定位串agent.py 的analyze_slither_results()逐条抽取上述字段并组装为结构化的findings列表其中位置字段拼接逻辑为location f{elem.get(source_mapping, {}).get(filename_short, )}: \ fL{elem.get(source_mapping, {}).get(lines, [0])[0] if ... else 0}即生成形如Contract.sol:L42的精确定位。这个位置串在后续与 Mythril 结果的跨工具去重中充当关键标识见下一节。四步审计工作流与仓库自动化实现SKILL.md 定义了标准四步流程而 scripts/agent.py 将全部四步固化为一条命令。使用方式# 完整审计Slither Mythril python scripts/agent.py --contract contracts/Token.sol # 跳过 Mythril 快速扫描符号执行较慢时 python scripts/agent.py --contract contracts/ --skip-mythril # 自定义 Mythril 超时与输出文件 python scripts/agent.py --contract contracts/Token.sol --mythril-timeout 600 --output audit_report.jsonCLI 参数对照表参数默认值说明--contract必填Solidity 合约文件或项目目录路径--mythril-timeout300Mythril 符号执行超时秒--skip-mythril关闭跳过耗时的符号执行阶段--outputsmart_contract_audit_report.json审计报告输出路径Step 1Slither 静态分析对合约代码库执行 Slither借助 90 内置检测器识别漏洞模式、优化机会与代码质量问题。对应源码run_slither() → analyze_slither_results()。Step 2Mythril 符号执行对合约做深度路径探索发现需要路径敏感分析才能触发的重入、未检查外部调用与算术漏洞。对应源码run_mythril() → analyze_mythril_results()后者会按swc-id聚合各 SWC 类别的命中数。Step 3结果分诊与跨工具去重结合两工具结果、去重、依据可利用性与资金影响评估严重级别、过滤误报。agent.py 的去重策略deduplicate_findings()采用键key去重Slither 发现项键 (location, detector)即文件行号 检测器名Mythril 发现项键 (contract line_number, swc_id)即合约名行号 SWC 编号。两套键空间天然区分工具来源同时写入source字段标记slither/mythril避免同一漏洞被两个工具重复报告时在报告中叠算。Step 4生成审计报告generate_report()汇总出结构化 JSON 报告核心判定逻辑为audit_result: FAIL if critical_high 0 else PASS即只要合并结果中存在任意 High/Critical 级发现整体审计结论即为FAIL存在高危问题禁止部署否则为PASS。报告顶层包含timestamp审计时间戳UTC ISO 格式contract被审计合约路径slither_analysis发现总数、按严重级别分布、Top 检测器mythril_analysis发现总数、按 SWC 分布combined_findings去重后合并发现总数critical_high_findings高危及以上数量audit_resultFAIL / PASS 门禁结论findings前 30 条发现明细含source来源标记命令结束时还会通过 logger 输出一行摘要发现数、高危数、结论方便 CI 直接抓取门禁结果Smart contract audit: 5 findings (1 critical/high), result: FAIL输出产物与后续对接期望输出根据 SKILL.md 的 Expected Output本技能的最终交付物是带 SWC 标识符的 JSON 报告每条发现包含严重级别评级、受影响函数、修复建议。这与 agent.py 生成的smart_contract_audit_report.json完全对齐。与安全框架的映射本技能在 SKILL.md 的 frontmatter 中声明了框架映射可作为蓝队检测与合规对标的依据NIST CSF 2.0PR.DS-01数据保护、PR.DS-02数据完整性、ID.RA-01漏洞与风险评估MITRE ATTCKT1190面向公众应用的漏洞利用、T1059命令与脚本解释器。这意味着该技能既可服务于红队视角的合约攻击面评估也可服务于蓝队视角的漏洞管理与检测覆盖验证。仓库整体还提供了 MITRE ATTCK、NIST CSF、OWASP 等多框架映射体系可参见 mappings/README.md 进一步了解技能与框架的对齐方法。技能元数据规范本技能遵循 agentskills.io 开放标准编写其 frontmatter 结构name/description/domain/subdomain/tags/version/license/框架映射字段与仓库 tools/agentskills-skill.schema.json 中定义的 JSON Schema 兼容——该 Schema 要求name必须与父目录名一致、description需同时说明做什么与何时用并允许以附加键承载框架映射元数据这正是本技能 frontmatter 的编写依据。小结一条命令完成部署前安全门禁综合本文内容完整的智能合约部署前审计闭环可以浓缩为# 1. 环境就绪Slither solc Mythril pip install slither-analyzer mythril solc-select install 0.8.20 solc-select use 0.8.20 # 2. 手动快速扫描了解检测器与结构 slither contracts/ --print human-summary slither contracts/ --detect reentrancy-eth,unprotected-upgrade --json quick.json # 3. 对重点合约做符号执行深挖 myth analyze contracts/Token.sol --execution-timeout 300 -o json # 4. 一键自动化审计含去重与 FAIL/PASS 门禁 python scripts/agent.py --contract contracts/ --output audit_report.jsonSlither 负责广90 模式秒级覆盖Mythril 负责深符号执行路径探索agent.py 负责收解析、去重、分级、门禁。三者组合配合 SWC 分类体系即可在以太坊主网部署前建立起一道可复现、可自动化、可纳入 CI 的合约安全防线。【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATTCK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI 20 platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门