news 2026/9/10 12:58:43

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Anthropic-Cybersecurity-Skills 实战:使用 Slither 与 Mythril 分析以太坊智能合约漏洞

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

【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATT&CK, 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-analyzer
solc 编译器编译 Solidity 源码(Slither 依赖)solc-select管理多版本
mythril符号执行引擎pip install mythril
Foundry / 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_output=True, text=True, timeout=120) try: return json.loads(result.stdout) if result.stdout else {} except json.JSONDecodeError: logger.error("Slither JSON parse failed") return {}

这里传入"-"作为--json的参数值,表示 JSON 输出到 stdout,这与 CLI 手册中的文件输出形式等价,但更便于程序化接管。timeout=120是对 90+ 检测器全量运行的保守时间预算。

检测器筛选与清单

# 只运行指定的检测器(逗号分隔) slither contracts/ --detect reentrancy-eth,unprotected-upgrade # 列出全部可用检测器 slither --list-detectors

--detect允许聚焦特定漏洞类别。例如在应急复核场景下只查reentrancy-eth(ETH 重入)与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 json

Mythril 的-o json同样服务于自动化:agent.py 的run_mythril()使用myth analyze <path> --execution-timeout <timeout> -o json调用,并在analyze_mythril_results()中遍历顶层issues数组解析发现项(每条 issue 包含swc-idseveritycontractfunctionlineno等字段,详见下文 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-eth
HighMediumcontrolled-delegatecall, reentrancy-no-eth
MediumHighlocked-ether, incorrect-equality
MediumMediumuninitialized-state, shadowing-state
LowHighnaming-convention, solc-version
InformationalHighpragma, dead-code

在 agent.py 的analyze_slither_results()中,该分级被进一步编程化为排序权重表

"findings": sorted(findings, key=lambda x: {"high": 0, "medium": 1, "low": 2, "informational": 3}.get(x["severity"], 4))

也就是说,报告输出时 High 影响级发现永远排在最前,其次是 Medium、Low、Informational——与上表的分诊逻辑完全一致。此外,该函数还会按检测器聚合by_detector计数(截取 Top 15),帮助审计者一眼看出漏洞热点集中在哪些模式上。

SWC 漏洞分类注册表

核心条目(api-reference 收录)

SWC(Smart Contract Weakness Classification)是社区通用的智能合约弱点编号体系,让不同工具、不同团队的审计结论可以互相参照。api-reference.md 列出关键条目如下:

SWC ID漏洞标题工具覆盖
SWC-101整数溢出/下溢(Integer Overflow/Underflow)Mythril
SWC-104未检查的调用返回值(Unchecked Call Return)Slither + Mythril
SWC-106未保护的 SELFDESTRUCTSlither + Mythril
SWC-107重入(Reentrancy)Slither + Mythril
SWC-110断言违例(Assert Violation)Mythril
SWC-112对不可信目标执行 DelegatecallSlither
SWC-115tx.origin 鉴权Slither
SWC-116区块时间戳依赖Mythril
SWC-120弱随机源(Weak Randomness)Slither

仓库扩展条目

仓库 scripts/agent.py 内置的SWC_REGISTRY字典在 api-reference 基础上额外补充了两个实战高频条目

  • SWC-113:DoS with Failed Call(因外部调用失败导致的拒绝服务)——例如循环内反复向可能 revert 的地址转账,一个失败的 call 即可拖垮整个函数;
  • SWC-115 / SWC-116:agent.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', '')}:" \ f"L{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.json

CLI 参数对照表:

参数默认值说明
--contract(必填)Solidity 合约文件或项目目录路径
--mythril-timeout300Mythril 符号执行超时(秒)
--skip-mythril关闭跳过耗时的符号执行阶段
--outputsmart_contract_audit_report.json审计报告输出路径

Step 1:Slither 静态分析

对合约代码库执行 Slither,借助 90+ 内置检测器识别漏洞模式、优化机会与代码质量问题。对应源码:run_slither() → analyze_slither_results()。

Step 2:Mythril 符号执行

对合约做深度路径探索,发现需要路径敏感分析才能触发的重入、未检查外部调用与算术漏洞。对应源码: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_result:FAIL / 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 ATT&CKT1190(面向公众应用的漏洞利用)、T1059(命令与脚本解释器)。

这意味着该技能既可服务于红队视角的合约攻击面评估,也可服务于蓝队视角的漏洞管理与检测覆盖验证。仓库整体还提供了 MITRE ATT&CK、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.json

Slither 负责"广"(90+ 模式秒级覆盖),Mythril 负责"深"(符号执行路径探索),agent.py 负责"收"(解析、去重、分级、门禁)。三者组合,配合 SWC 分类体系,即可在以太坊主网部署前建立起一道可复现、可自动化、可纳入 CI 的合约安全防线。

【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATT&CK, 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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/10 12:55:51

论文的免费大纲怎么分析?按章节信息量拆解

拿到一份免费生成的论文大纲&#xff0c;多数人的反应是照着写&#xff0c;写到一半才发现有的章挤成一团、有的章两三页就收尾&#xff0c;结构头重脚轻。大纲本身不会告诉你问题出在哪&#xff0c;需要你自己按章节信息量拆一遍&#xff1a;每章要讲什么、给多少篇幅、章与章…

作者头像 李华
网站建设 2026/9/10 12:54:45

从入门到进阶:一份完整的 3 阶段免费数学学习资源指南

从入门到进阶&#xff1a;一份完整的 3 阶段免费数学学习资源指南 【免费下载链接】awesome-math A curated list of awesome mathematics resources 项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-math 打开浏览器搜"从哪里学数学"&#xff0c;…

作者头像 李华
网站建设 2026/9/10 12:52:19

Python论文格式检查系统:从python-docx解析到LLM辅助的全流程实现

简介&#xff1a;这套基于Python的论文格式检查与处理源码&#xff0c;主要面向需要批量规范学术稿件格式的研究人员、期刊编辑以及有文本处理需求的Python开发者&#xff0c;可自动识别并修正标题层级、摘要、章节编号、图表标注、引用和参考文献等常见格式问题&#xff0c;显…

作者头像 李华