fboiero/MIESC

GitHub: fboiero/MIESC

Stars: 3 | Forks: 1

MIESC

35个分析模块。9层防御。一条命令。

企业级智能合约安全,免费开放给所有人。

PyPI Downloads Python CI Coverage OpenSSF License Discussions DPG Candidate

快速开始为什么选择 MIESCGitHub ActionDockerEspañol文档

## 快速开始 ``` pip install miesc miesc scan MyContract.sol ``` 仅此而已。MIESC 运行 Slither + Aderyn + Solhint,并在数秒内为你提供统一报告。 想要完整的 9 层分析以及 AI 相关性? ``` miesc audit full MyContract.sol -o results.json miesc report results.json -t premium -f pdf --llm-interpret ```
查看示例输出 ``` === Layer 1: Static Analysis === OK slither: 5 findings in 1.7s OK aderyn: 5 findings in 3.0s OK solhint: 0 findings in 0.7s === Layer 2: Dynamic Testing === OK echidna: 0 findings in 2.0s OK foundry: 0 findings in 9.0s === Layer 3: Symbolic Execution === OK mythril: 2 findings in 298.0s === Layer 5: AI Analysis === OK smartllm: 4 findings in 198.9s OK gptscan: 4 findings in 49.7s Full Audit Summary +----------+-------+ | Severity | Count | +----------+-------+ | CRITICAL | 1 | | HIGH | 11 | | MEDIUM | 1 | | LOW | 9 | | TOTAL | 22 | +----------+-------+ Tools executed: 12/29 Report saved to results.json ```
## 为什么选择 MIESC **问题**:专业智能合约审计成本为 5 万至 20 万美元,且耗时数周。与此同时,每年超过 15 亿美元因漏洞而损失。大多数项目根本没有进行任何审计。仅运行 Slither 就能发现约 70% 的漏洞,但会产生 15-20% 的误报。每个工具都有盲点。审计人员手动运行 5-10 个工具,归一化输出并交叉引用结果。这需要数小时。 **MIESC 让这一流程对每个人开放。** 一条命令协调多个安全工具,采用 9 种互补分析技术,去重并生成专业报告。免费、开源、本地运行——你的代码永远不会离开你的机器。 ### 基准测试结果 **SmartBugs curated**(143 个合约,207 个真实漏洞): | 指标 | 仅 Slither | 仅 Mythril | MIESC(静态) | MIESC(全层) | |--------|:------------:|:-------------:|:--------------:|:------------------:| | 召回率 | 43.2% | 27.4% | 54.6% | **80.0%** | | 精确率 | 8.3% | 6.1% | 9.3% | 22.7% | | F1 分数 | 13.9% | 10.0% | 15.9% | **35.4%** | **真实世界漏洞**(11 个已确认 DeFi 漏洞,总损失 33 亿美元): | 漏洞类型 | 实际利用数 | 检测到 | 召回率 | 示例 | |---------------|:--------:|:--------:|:------:|----------| | 重入攻击 | 3 | 3 | **100%** | Euler $1.97 亿,Rari $8000 万,Platypus $850 万 | | 访问控制 | 3 | 3 | **100%** | Parity $2.8 亿,Ronin $6.24 亿 | | 闪电贷攻击 | 2 | 2 | **100%** | bZx $810 万,Compound $8000 万 | | 总体 | 11 | 9 | **81.8%** | Cohen's Kappa: 0.773 | **为何召回率比精确率对预审计分流更重要**:高召回率意味着更少的漏洞被遗漏。误报可在分流阶段过滤;遗漏的漏洞则可能在生产中成为实际攻击。 ### 9 层防御 ``` Layer 1 Static Analysis Slither, Aderyn, Solhint, Semgrep Layer 2 Dynamic Testing Echidna, Foundry, Medusa Layer 3 Symbolic Execution Mythril, Halmos, Manticore Layer 4 Formal Verification SMTChecker, Scribble, Certora* Layer 5 AI/LLM Analysis SmartLLM, GPTScan, LLMSmartAudit (Ollama) Layer 6 Pattern Detection Gas Analyzer, Clone Detector, Threat Model Layer 7 DeFi Security MEV Detector, Flash Loan Analyzer, Oracle Checker Layer 8 Exploit Validation PoC Synthesizer (Foundry), Vulnerability Verifier Layer 9 Consensus & Reporting Bayesian Consensus, RAG Enrichment, PDF Reports ``` *Certora 需要 API 密钥。其他工具均为完全开源。 ### MIESC 集成了什么 | 类别 | 数量 | 示例 | |----------|:-----:|---------| | **外部安全工具** | 13 | Slither、Mythril、Echidna、Foundry、Halmos、Aderyn、Semgrep | | **LLM 分析模块** | 6 | SmartLLM、GPTScan、PropertyGPT(通过本地 Ollama) | | **内部分析器** | 16 | MEV 检测器、Gas 分析器、威胁模型、克隆检测器 | | **总分析模块** | **35** | 覆盖 9 种互补技术 | ### 与 SmartBugs 2.0(最接近的竞争对手)对比 | | MIESC | SmartBugs 2.0 | |---|---|---| | 外部工具 | 13 | 19 | | AI/LLM 分析 | 是(本地 Ollama) | 否 | | 内部分析器 | 16 | 否 | | 误报过滤 | 是(RAG + 机器学习) | 否 | | 专业 PDF 报告 | 是 | 否 | | 插件系统 | 是(PyPI) | 否 | | GitHub Action | 是 | 否 | | SARIF 输出 | 是 | 是 | ## GitHub Action 在 30 秒内将智能合约安全功能添加到任意 CI/CD 流水线: ``` # .github/workflows/security.yml name: Security on: [push, pull_request] permissions: security-events: write pull-requests: write jobs: miesc: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: fboiero/MIESC@v5 with: path: contracts/ mode: scan fail-on: high upload-sarif: true comment-on-pr: true ``` 结果会显示在 GitHub 的 **Security** 标签页中,并作为 PR 评论呈现。详见 [示例工作流](./.github/workflows/example-miesc-action.yml) 了解高级配置。 ### 可用模式 | 模式 | 工具 | 耗时 | 适用场景 | |------|-------|------|----------| | `scan` | Slither、Aderyn、Solhint | ~30s | 每次推送 | | `audit-quick` | 4 个核心工具 | ~2min | PR 检查 | | `audit-full` | 全部 9 层 | ~10min | 预发布 | | `audit-profile` | 可配置 | 可变 | DeFi、代币等 | ## 安装 ``` # 最小 CLI pip install miesc # 带 PDF 报告 pip install miesc[pdf] # 一切(PDF、LLM、RAG、Web UI) pip install miesc[full] # 开发 git clone https://github.com/fboiero/MIESC.git cd MIESC && pip install -e .[dev] ``` 要求:Python 3.12+。Slither 会自动安装。其他工具为可选——MIESC 会使用所有可用的工具。 ## Docker ``` # 标准镜像(约 3GB,包含 Apple Silicon 的多架构) docker pull ghcr.io/fboiero/miesc:latest docker run --rm -v $(pwd):/contracts ghcr.io/fboiero/miesc:latest scan /contracts/MyContract.sol # 完整镜像(约 8GB,包含全部 50 个工具,amd64) docker pull ghcr.io/fboiero/miesc:full docker run --rm -v $(pwd):/contracts ghcr.io/fboiero/miesc:full audit full /contracts/MyContract.sol # 检查可用工具 docker run --rm ghcr.io/fboiero/miesc:latest doctor ```
Docker + 主机 Ollama(推荐用于 GPU 加速) MIESC 的 LLM 层(Layer 5)使用 Ollama 进行本地 AI 分析。推荐设置在主机上运行 Ollama(并启用 GPU 访问),然后通过网络让 Docker 容器连接: ``` # 1. 在主机(不在 Docker 内)安装并启动 Ollama # 从 https://ollama.com 下载 ollama serve & ollama pull qwen2.5-coder:14b # Best model for code analysis ollama pull deepseek-coder:6.7b # Lighter alternative # 2. 使用主机 Ollama 扫描(macOS) docker run --rm \ -e OLLAMA_HOST=http://host.docker.internal:11434 \ -v $(pwd)/contracts:/contracts \ ghcr.io/fboiero/miesc:latest \ scan /contracts/MyContract.sol -o /contracts/results.json # 3. 使用主机 Ollama 扫描(Linux) docker run --rm --network=host \ -e OLLAMA_HOST=http://localhost:11434 \ -v $(pwd)/contracts:/contracts \ ghcr.io/fboiero/miesc:latest \ scan /contracts/MyContract.sol # 4. 生成 AI 驱动的 PDF 报告 docker run --rm \ -e OLLAMA_HOST=http://host.docker.internal:11434 \ -v $(pwd):/work \ ghcr.io/fboiero/miesc:full \ report /work/results.json -t premium -f pdf \ --llm-interpret -o /work/audit_report.pdf ``` **为何在主机运行 Ollama?** Docker 容器默认无法访问 GPU。在主机运行 Ollama 可让其使用你的 GPU(Apple Silicon、NVIDIA CUDA),实现 10-50 倍更快的 LLM 推理。
Docker Compose(完整栈,含捆绑的 Ollama) 在没有主机 Ollama 的环境中,使用 docker-compose 一并运行所有服务: ``` # 启动 MIESC + Ollama + 模型初始化 docker compose --profile llm up -d # 运行分析 docker compose exec miesc miesc scan /contracts/MyContract.sol # 停止 docker compose down ``` 编排栈会自动拉取 `deepseek-coder:6.7b` 并配置服务间网络。
ARM / Apple Silicon 注意事项 **标准** 镜像原生支持 ARM。 **完整** 镜像仅含 amd64,需在 QEMU 下仿真运行。如需在原生 ARM 上构建,请使用: ``` ./scripts/build-images.sh full # ~30-60 min, but native speed ```
## CLI 参考 ``` miesc scan contract.sol # Quick scan (Slither + Aderyn + Solhint) miesc scan contract.sol --ci # CI mode: exit 1 on critical/high miesc audit quick contract.sol # 4-tool audit miesc audit full contract.sol # Full 9-layer audit miesc audit layer 3 contract.sol # Specific layer (e.g., symbolic execution) miesc audit profile defi contract.sol # Named profile (defi, token, security, etc.) miesc report results.json -t premium -f pdf --llm-interpret # AI-powered PDF report miesc export results.json -f sarif # Export as SARIF miesc doctor # Check tool availability miesc watch ./contracts # Auto-scan on file changes miesc benchmark ./contracts --save # Track security posture over time ``` ### 分析配置 | 配置 | 层数 | 适用场景 | |---------|--------|----------| | `fast` | 1 | 开发过程中快速反馈 | | `balanced` | 1, 3 | 预提交检查 | | `ci` | 1 | CI/CD 流水线 | | `security` | 1, 3, 4,5 | 高价值合约 | | `defi` | 1, 2, 3, 5, 8 | DeFi 协议 | | `token` | 1, 3, 5 | ERC20/721/1155 代币 | | `thorough` | 1-9 | 预发布 / 全面审计 | ## 扩展 MIESC ### 自定义检测器 ``` from miesc.detectors import BaseDetector, Finding, Severity class DangerousDelegatecall(BaseDetector): name = "dangerous-delegatecall" description = "Detects unprotected delegatecall patterns" def analyze(self, source_code, file_path=None): findings = [] # Your detection logic here return findings ``` 通过 `pyproject.toml` 注册: ``` [project.entry-points."miesc.detectors"] dangerous-delegatecall = "my_package:DangerousDelegatecall" ``` ### 插件系统 ``` miesc plugins install miesc-defi-detectors # Install from PyPI miesc plugins create my-detector # Scaffold a new plugin miesc plugins list # List installed plugins miesc detectors list # List all available detectors ``` ### 集成 ``` # 预提交钩子(.pre-commit-config.yaml) repos: - repo: https://github.com/fboiero/MIESC rev: v5.1.1 hooks: - id: miesc-quick args: ['--ci'] ``` ``` # Foundry(foundry.toml) [profile.default] post_build_hook = "miesc audit quick ./src --ci" ``` ``` // Hardhat (hardhat.config.js) require("hardhat-miesc"); module.exports = { miesc: { enabled: true, runOnCompile: true, failOn: "high" } }; ``` ### MCP 服务器 MIESC 通过 [模型上下文协议](https://modelcontextprotocol.io) 与 AI 代理集成: ``` miesc server mcp # Start MCP WebSocket server ``` ``` // Claude Desktop / MCP client config { "mcpServers": { "miesc": { "command": "miesc", "args": ["server", "mcp"] } } } ``` ### Python API ``` from miesc.api import run_tool, run_full_audit results = run_tool("slither", "contract.sol") report = run_full_audit("contract.sol") ``` ### Web UI ``` pip install miesc[web] make webapp # Opens at http://localhost:8501 ``` 带有上传、分析、结果可视化与报告导出的交互式 Streamlit 仪表板。 ## 多链支持 | 链 | 状态 | 语言 | |-------|--------|-----------| | **EVM**(以太坊、Polygon、BSC、Arbitrum 等) | 生产 | Solidity、Vyper | | Solana | 早期 | Rust/Anchor | | NEAR | 早期 | Rust | | Move(Sui、Aptos) | 早期 | Move | | Stellar/Soroban | 早期 | Rust | | Algorand | 早期 | TEAL、PyTeal | | Cardano | 早期 | Plutus、Aiken | ``` miesc scan program.rs --chain solana miesc scan module.move --chain sui ``` ## 合规性映射 MIESC 将每个发现映射到国际安全标准: **ISO/IEC 27001:2022** | **NIST CSF** | **OWASP 智能合约 Top 10** | **CWE** | **SWC 注册表** | **MITRE ATT&CK** | **PCI-DSS** | **SOC 2** ## 架构 ``` Contract.sol | v CLI / API / MCP / GitHub Action | v Orchestrator --> 9 Layers --> 50 Tool Adapters | v Finding Aggregator --> ML Pipeline --> RAG Context --> FP Filter | v Report Generator --> JSON / SARIF / PDF / HTML / Markdown ``` MIESC 采用双包架构: - `miesc/` - 公共 API(稳定,可 pip 安装) - `src/` - 内部实现(35 个分析模块、ML 流水线、RAG、报告生成) 详见 [ARCHITECTURE.md](./docs/ARCHITECTURE.md) 获取完整技术设计(含 Mermaid 图表)。 ## 学术验证 MIESC 在 [UNDEF-IUA](https://www.iua.edu.ar/)(阿根廷)的网络防御硕士论文中开发。在 SmartBugs curated 基准(Durieux 等,ICSE 2020)上评估: - **143 个合约**,207 个真实漏洞,10 个类别 - **80% 召回率**(230 个中的 184 个被检测出)——多工具编排中表现最佳 - **对重入攻击的召回率达 90.6%**,对未检查调用和时间操控为 100% - **比手动运行工具快 85%**(约 1 秒/合约) - 完整结果:[SMARTBUGS_SCIENTIFIC_REPORT.md](./benchmarks/results/SMARTBUGS_SCIENTIFIC_REPORT.md) 如果在研究中使用 MIESC,请引用: ``` @mastersthesis{boiero2025miesc, title={Integrated Security Assessment Framework for Smart Contracts: A Defense-in-Depth Approach to Cyberdefense}, author={Boiero, Fernando}, year={2025}, school={Universidad de la Defensa Nacional (UNDEF) - IUA C{\'o}rdoba}, type={Master's Thesis in Cyberdefense} } ``` ## 数字公共产品 MIESC 是 [数字公共产品联盟](https://digitalpublicgoods.net/) 的候选产品(申请 ID: GID0092948),符合联合国可持续发展目标: - **SDG 9**(产业与基础设施):加强区块链基础设施安全 - **SDG 16**(和平与强大机构):保护数字资产,减少欺诈 - **SDG 17**(伙伴关系):开源协作推动全球安全标准 该项目完全符合全部 9 项 DPGA 指标:开放许可证(AGPL-3.0)、清晰所有权、平台独立性、全面文档、数据可移植性(SARIF/CSV/JSON)、隐私优先(本地优先)、基于标准(12 项国际标准)以及负责任使用政策。 | 政策 | 描述 | |--------|-------------| | [DPG 合规](./docs/policies/DPG-COMPLIANCE.md) | 完整的 9 项指标合规声明 | | [SDG 相关性](./docs/policies/SDG_RELEVANCE.md) | 可持续发展目标映射 | | [隐私政策](./PRIVACY.md) | 数据处理和隐私声明 | | [负责任使用](./RESPONSIBLE_USE.md) | 伦理使用指南 | | [不造成伤害](./docs/policies/DO_NO_HARM.md) | 风险评估与缓解措施 | ## 文档 | 资源 | 描述 | |----------|-------------| | [安装指南](./docs/INSTALLATION.md) | 完整的设置说明 | | [快速开始](./docs/guides/QUICKSTART.md) | 5 分钟内上手 | | [架构](./docs/ARCHITECTURE.md) | 技术设计和各层详情 | | [工具参考](./docs/TOOLS.md) | 所有 35 个分析模块及其能力 | | [报告指南](./docs/guides/REPORTS.md) | 报告模板和定制 | | [自定义检测器](./docs/CUSTOM_DETECTORS.md) | 构建你自己的检测器 | | [多链支持](./docs/MULTICHAIN.md) | 非 EVM 链分析 | | [API 参考](https://fboiero.github.io/MIESC/api/) | 从 docstrings 自动生成 | | [贡献指南](./.github/CONTRIBUTING.md) | 开发指南 | | [路线图](./docs/ROADMAP.md) | 下一步计划 | ## 故障排除
常见问题 **`miesc: command not found`** 安装 `pip install miesc` 后,入口点可能不在 PATH 中。请使用: ``` python3 -m miesc.cli.main --help ``` 或将 `~/.local/bin`(或虚拟环境的 `bin`)添加到 PATH。 **`Tool 'mythril' not installed`** 可选工具需单独安装。可执行以下操作之一: ``` pip install miesc[full] # All Python-based tools brew install mythril # System install docker run ghcr.io/fboiero/miesc:full # Or use the full Docker image ``` **`Ollama API error: HTTP 404` 或 LLM 分析返回空** 所需模型未拉取。请运行: ``` ollama pull qwen2.5-coder:14b # ~9 GB, recommended ollama pull qwen2.5-coder:32b # ~20 GB, more accurate (needs 24+GB RAM) ``` 验证 Ollama 是否运行:`curl http://localhost:11434/api/tags` **Docker 容器无法连接主机上的 Ollama(macOS)** ``` docker run -e OLLAMA_HOST=http://host.docker.internal:11434 ... ``` 在 Linux 上,使用 `--network=host` 并设置 `OLLAMA_HOST=http://localhost:11434`。 **Slither 报错提示 `solc not found` 或版本不匹配** 安装 solc-select: ``` pip install solc-select solc-select install 0.8.20 && solc-select use 0.8.20 ``` **PDF 报告生成失败(`weasyprint` 错误)** WeasyPrint 需要系统库: ``` brew install pango cairo gdk-pixbuf libffi # macOS sudo apt install libpango-1.0-0 libpangoft2-1.0-0 # Linux ``` **`miesc audit full` 运行缓慢(>10 分钟/合约)** 大型模型(32B)在小合约上较慢。请在 `~/.miesc/config.yaml` 中使用 `qwen2.5-coder:14b`,或运行快速扫描:`miesc audit quick`。
## 贡献 ``` git clone https://github.com/fboiero/MIESC.git cd MIESC && pip install -e .[dev] pytest tests/ # 4,800+ tests, 82% coverage ``` 详见 [CONTRIBUTING.md](./.github/CONTRIBUTING.md) 获取指南。[CONTRIBUTING_ES.md](./.github/CONTRIBUTING_ES.md) 提供西班牙语版本。 ## 许可证 [AGPL-3.0](./LICENSE) - 任何用途免费使用。安全不应成为只有资金充足的项目才能享有的特权。如果你在 MIESC 基础上构建服务,请回馈你的修改。 ## 作者 **Fernando Boiero** - 网络防御硕士论文,UNDEF-IUA 阿根廷 站在巨人的肩膀上:[Slither](https://github.com/crytic/slither)、[Mythril](./docs/ARCHITECTURE.md)、[Echidna](https://github.com/crytic/echidna)、[Foundry](https://github.com/foundry-rs/foundry)、[Aderyn](https://github.com/Cyfrin/aderyn)、[Halmos](https://github.com/a16z/halmos) 以及以太坊安全社区。
标签:PyPI工具, Python安全工具, Starknet, 以太坊, 企业级安全, 免费开源, 区块链安全, 合约审计, 多层次评估, 安全供应链, 安全评分, 智能合约安全, 模块化分析, 覆盖率检测, 防御层, 预审计分诊