Slither智能合约安全分析Skill slither-analysis

Slither智能合约安全分析技能是一个与Slither静态分析框架深度集成的专业工具,专门用于Solidity智能合约的自动化安全审计、漏洞检测和代码质量评估。该技能支持运行所有内置安全检测器(如重入攻击、未初始化存储、任意转账等),提供自定义配置、可视化分析(调用图、继承图)、误报过滤和多种格式报告输出(JSON、Markdown、SARIF)。适用于智能合约开发、安全审计、CI/CD集成和区块链安全研究,帮助开发者识别和修复智能合约中的安全漏洞和代码缺陷。 关键词:Slither分析,智能合约安全,Solidity漏洞检测,区块链安全审计,静态代码分析,重入攻击检测,DeFi安全,智能合约开发工具,安全自动化,代码质量检查

智能合约 0 次安装 0 次浏览 更新于 2/23/2026

name: slither-analysis description: 与Slither静态分析器专家级集成,用于智能合约漏洞检测、代码质量分析和安全报告。支持所有Slither检测器和自定义分析配置。 allowed-tools: Read, Grep, Write, Bash, Edit, Glob, WebFetch

Slither 静态分析技能

与Slither(领先的Solidity智能合约静态分析框架)的专家级集成。

能力

  • 完整检测器套件:使用所有内置检测器执行Slither
  • 自定义配置:配置分析参数和排除项
  • 严重性分类:解释和分类发现问题的严重性
  • 误报过滤:基于上下文的误报识别
  • 可视化分析:生成调用图和继承图
  • 自定义检测器:运行和开发自定义Slither检测器
  • 报告生成:生成全面的安全报告

安装

# 通过pip安装
pip install slither-analyzer

# 或通过pipx隔离安装
pipx install slither-analyzer

# 验证安装
slither --version

基本用法

运行分析

# 分析单个文件
slither Contract.sol

# 分析Foundry项目
slither . --foundry-compile-all

# 分析Hardhat项目
slither . --hardhat-compile-all

输出格式

# 人类可读(默认)
slither .

# JSON输出用于处理
slither . --json output.json

# Markdown报告
slither . --checklist

# SARIF用于CI集成
slither . --sarif output.sarif

检测器类别

高严重性检测器

检测器 描述
reentrancy-eth 涉及ETH转账的重入攻击
reentrancy-no-eth 不涉及ETH的重入攻击
arbitrary-send-eth 任意ETH发送
controlled-delegatecall 受控的委托调用
suicidal 允许任何人销毁合约的函数
uninitialized-storage 未初始化的存储变量

中严重性检测器

检测器 描述
reentrancy-benign 良性重入
incorrect-equality 危险严格相等
locked-ether 锁定以太币的合约
missing-zero-check 缺少零地址验证
unchecked-transfer 未检查的代币转账

低严重性检测器

检测器 描述
naming-convention 命名约定违规
external-function 可以声明为external的函数
constable-states 可以声明为常量的状态变量
immutable-states 可以声明为不可变的状态变量

配置

slither.config.json

{
  "detectors_to_run": "all",
  "exclude_informational": false,
  "exclude_low": false,
  "exclude_medium": false,
  "exclude_high": false,
  "exclude_optimization": false,
  "fail_on": "high,medium",
  "filter_paths": [
    "node_modules",
    "lib",
    "test"
  ],
  "exclude_dependencies": true,
  "legacy_ast": false
}

CLI配置

# 运行特定检测器
slither . --detect reentrancy-eth,uninitialized-storage

# 排除检测器
slither . --exclude naming-convention,external-function

# 按严重性过滤
slither . --exclude-informational --exclude-low

# 排除特定路径
slither . --filter-paths "test|lib|node_modules"

高级功能

调用图生成

# 生成调用图
slither . --print call-graph

# 生成继承图
slither . --print inheritance-graph

# 生成合约摘要
slither . --print contract-summary

函数分析

# 打印函数摘要
slither . --print function-summary

# 打印变量顺序(存储布局)
slither . --print variable-order

# 打印数据依赖
slither . --print data-dependency

自定义检测器

# custom_detector.py
from slither.detectors.abstract_detector import AbstractDetector, DetectorClassification

class MyCustomDetector(AbstractDetector):
    ARGUMENT = "my-detector"
    HELP = "检测我的自定义问题"
    IMPACT = DetectorClassification.HIGH
    CONFIDENCE = DetectorClassification.HIGH

    WIKI = "https://example.com/my-detector"
    WIKI_TITLE = "我的自定义检测器"
    WIKI_DESCRIPTION = "检测..."
    WIKI_EXPLOIT_SCENARIO = "..."
    WIKI_RECOMMENDATION = "..."

    def _detect(self):
        results = []
        for contract in self.compilation_unit.contracts_derived:
            for function in contract.functions:
                # 检测逻辑
                if self._has_issue(function):
                    info = [function, " 存在问题
"]
                    results.append(self.generate_result(info))
        return results

CI/CD集成

GitHub Actions

name: Slither分析
on: [push, pull_request]

jobs:
  slither:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3

      - name: 安装Foundry
        uses: foundry-rs/foundry-toolchain@v1

      - name: 安装Slither
        run: pip install slither-analyzer

      - name: 运行Slither
        run: slither . --foundry-compile-all --fail-on high --sarif results.sarif

      - name: 上传SARIF
        uses: github/codeql-action/upload-sarif@v2
        with:
          sarif_file: results.sarif

结果解读

结果结构

{
  "success": true,
  "error": null,
  "results": {
    "detectors": [
      {
        "check": "reentrancy-eth",
        "impact": "High",
        "confidence": "Medium",
        "description": "Contract.withdraw()中的重入攻击...",
        "elements": [...],
        "first_markdown_element": "...",
        "id": "abc123"
      }
    ]
  }
}

问题排查流程

  1. 高/中影响 - 立即调查
  2. 检查置信度 - 高置信度 = 很可能是真实问题
  3. 审查代码上下文 - 理解实际流程
  4. 用测试验证 - 编写测试确认行为
  5. 记录决策 - 用理由标记误报

流程集成

流程 目的
smart-contract-security-audit.js 主要安全分析
smart-contract-development-lifecycle.js 开发验证
formal-verification.js 预验证检查

工具参考

工具 目的
Slither 核心静态分析器
crytic-compile 编译框架
slither-doctor 配置调试器

最佳实践

  • 在CI中对每次提交运行Slither
  • 配置适当的排除项以减少噪音
  • 手动审查所有高/中严重性发现
  • 为项目特定模式编写自定义检测器
  • 使用--triage-database跟踪误报

另请参阅

  • skills/mythril-symbolic/SKILL.md - 符号执行分析
  • skills/echidna-fuzzer/SKILL.md - 基于属性的模糊测试
  • agents/solidity-auditor/AGENT.md - 安全审计代理
  • Slither文档