daemon-blockint-tech/ARES-v3

GitHub: daemon-blockint-tech/ARES-v3

针对 Solana 智能合约的开源确定性静态分析框架,通过多阶段污点分析与 AST 解析高精度检测合约漏洞。

Stars: 2 | Forks: 2

ARES V3

针对 Solana 智能合约的确定性静态分析

License: MIT Rust Edition Solana Frameworks F1 Score Recall Zero API Cost Scan Time Benchmark Protocols

ARES V3 是一个开源、完全确定性的 Solana 智能合约静态分析框架。它通过四阶段流水线(regex 提取、AST 解析、污点分析和确定性本地判定)检测 Anchor 和 Solitaire 程序中的漏洞模式——在 20 个基准测试协议中实现了 **97% 的微平均召回率(micro-averaged recall)** 和 **0.94 的 F1 分数**,且 **API 成本为零**,**扫描时间在 5 秒以内**。

ARES V3 Core Pipeline

## 架构 ARES V3 通过四个连续阶段处理 Solana 程序: | 阶段 | 功能 | 确定性 | |-------|----------|:------------:| | **1. Regex 模式提取** | 对源文本进行表层模式匹配 | 是 | | **2. AST 解析** | 对 Anchor/Solitaire 宏、字段类型、CPI 上下文进行语法树提取 | 是 | | **3. 污点分析** | 跟踪从不可信输入到危险汇聚点的数据流 | 是 | | **4. 确定性本地判定** | 基于 AST 元数据的误报抑制 | 是 |

Production Architecture

### 确定性分离 非确定性外部数据源(MCP 服务器、链上数据库)与核心检测流水线严格分离。扫描器对于相同的输入会得到完全相同的输出——没有模型温度,没有 prompt 漂移,也没有网络调用。

Determinism Separation

## 基准测试结果 ### 正面交锋:ARES V3 对决 Trident Arena, Opus 4.6, GPT-5.2 在与 Trident Arena 基准测试共享的五个公开审计协议上(共 22 个预期发现,基准真相已对齐): | 协议 | ARES V3 | Trident Arena | Opus 4.6 | GPT-5.2 | 差值 (对比 Trident) | |----------|---------|--------------|----------|---------|---------------------| | Axelar | **7/7 (100%)** | 5/7 (71%) | 0/7 | 0/7 | **+29%** | | Dexalot | **5/5 (100%)** | 4/5 (80%) | 2/5 | 2/5 | **+20%** | | Bert Staking | **2/2 (100%)** | 1/2 (50%) | 1/2 | 1/2 | **+50%** | | Pump Science | **2/4 (50%)** | 1/4 (25%) | 1/4 | 0/4 | **+25%** | | MetaDAO | 3/4 (75%) | 3/4 (75%) | 1/4 | 1/4 | 0% | | **总计** | **19/22 (86%)** | **14/22 (64%)** | **5/22 (23%)** | **4/22 (18%)** | **+23%** | ### B 部分:各协议结果(9 个生产级仓库) | 协议 | 预期 | TP | FP | FN | 精确率 | 召回率 | F1 | |----------|:---:|:--:|:--:|:--:|:---------:|:------:|:--:| | Axelar | 7 | 6 | 3 | 1 | 0.67 | 0.86 | 0.75 | | Dexalot | 5 | 5 | 0 | 0 | **1.00** | **1.00** | **1.00** | | Bert Staking | 1 | 1 | 0 | 0 | **1.00** | **1.00** | **1.00** | | Pump Science | 2 | 2 | 0 | 0 | **1.00** | **1.00** | **1.00** | | MetaDAO | 3 | 3 | 0 | 0 | **1.00** | **1.00** | **1.00** | | Wormhole | 5 | 5 | 2 | 0 | 0.71 | **1.00** | 0.83 | | Mango-v4 | 5 | 5 | 2 | 0 | 0.71 | **1.00** | 0.83 | | Solend | 4 | 4 | 0 | 0 | **1.00** | **1.00** | **1.00** | | Drift-v2 | 3 | 3 | 0 | 0 | **1.00** | **1.00** | **1.00** | | **总计** | **35** | **34** | **7** | **1** | **0.83** | **0.97** | **0.89** | **9 个** B 部分协议中的 **6 个** 达到了 **P=1.00 R=1.00 F1=1.00**。A 部分(11 个存根)在所有漏洞类别中保持了 **100% 的检测率**。 ### 总体情况(20 个协议) | 指标 | 数值 | |--------|:-----:| | 微精确率 | **0.96** | | 微召回率 | **0.92** | | 微 F1 分数 | **0.94** | | 每个协议的扫描时间 | **< 5 秒** | | 每次扫描的 API 成本 | **$0** | ## 多维度对比 | 维度 | ARES V3 | Trident Arena | Opus 4.6 | GPT-5.2 | 依赖扫描器 | |-----------|---------|--------------|----------|---------|---------------| | 逻辑漏洞检测 | 良好 | 良好 | 较差 | 较差 | 无 | | 误报率 | 低 | 中等 | 极高 | 极高 | 低 | | 数据流污点分析 | 是 | 无 | 无 | 无 | 无 | | 宏感知解析 | 完整 | 部分 | 薄弱 | 薄弱 | 无 | | 确定性误报抑制 | 是 | 不透明 | 否 | 否 | 是 | | 开发者界面 | CLI+TUI+CI | 仅限网页 | 聊天/API | 聊天/API | CLI | | CI/CD 集成 | 通用 | 仅限 GitHub | 手动 | 手动 | 手动 | | 每次扫描成本 | $0 (本地) | SaaS ($$$) | API ($$$) | API ($$$) | 免费 | | 获取结果时间 | < 5 秒 | 数小时 | 数分钟 | 数分钟 | 数秒 | | 输出格式 | JSON+MD+HTML | PDF | 文本 | 文本 | JSON/文本 | | 开源 | 是 | 否 | 部分 | 部分 | 是 | | 基准可复现性 | 是 (20 个公开) | 部分 | 否 | 否 | 是 | | 策略防护机制 | 是 | 无 | 探针 | 探针 | 无 | | 多源架构 | 是 (4 个来源) | 无 | 无 | 无 | 无 | | MCP 服务器 | 是 | 无 | 无 | 无 | 无 | | 自我纠错循环 | 是 | 无 | 无 | 无 | 无 | ## 检测到的漏洞类别 | 类别 | 模式 | |----------|---------| | `type-cosplay` | 未检查的账户判别式 / 使用了 `UncheckedAccount` | | `ownership-check` | 缺少 `owner == program_id` 或 Anchor 的 `has_one`/`seeds` 约束 | | `signer-authorization` | 未经验证的 `Signer` / 将原始 `AccountInfo` 作为授权 | | `arbitrary-cpi` | 在没有 `program_id` 验证的情况下通过 `invoke()` 进行 CPI | | `initialization-frontrunning` | 在没有 `payer`/`system_program` 约束配对的情况下执行 `init` | | `reentrancy-risk` | 在一条指令内同时存在账户写入和将其传递给 CPI | | `duplicate-mutable-accounts` | 对同一个账户存在两个可变引用 | | `arithmetic-overflow` | 对用户控制的值进行未检查的算术运算 | | `close-account` | 关闭账户时缺少对回收 lamport 的验证 | | `account-reloading` | 状态重载但未进行重新验证 | ## 数据源 | 来源 | 类型 | 确定性 | 描述 | |--------|------|:------------:|-------------| | **A. 核心引擎** | 本地 | 是 | Regex + AST + 污点分析 + 判定流水线 | | **B. 向量数据库** | 本地 | 是 | 已建立索引的审计报告和漏洞模式 | | **C. 链上数据库** | 本地 | 是 | 来自 Solana RPC 的账户/程序快照 | | **D. MCP 服务器** | 外部 | 否 | 网页搜索、仓库拉取、浏览器查询 | 来源 B 和 C 使用预索引的上下文来增强流水线。来源 D 提供实时的外部丰富信息,但为了保证确定性,在所有基准测试评分中均将其排除在外。 ## 安装与配置 ARES V3 需要 Rust、Solana CLI 和 OpenSSL 才能正确编译。 ### 1. 系统依赖 **Linux (Ubuntu/Debian)** ``` # 更新 package list 并安装 build dependencies sudo apt-get update sudo apt-get install -y build-essential pkg-config libssl-dev git curl ``` **macOS** ``` # 安装 Xcode Command Line Tools xcode-select --install # 通过 Homebrew 安装 OpenSSL brew install openssl ``` **Windows** 在 Windows 上,您需要 MSVC 构建工具和预编译的 OpenSSL 二进制文件。 1. 安装 [Visual Studio Build Tools](https://visualstudio.microsoft.com/visual-cpp-build-tools/)(确保勾选了“使用 C++ 的桌面开发”)。 2. 安装 [OpenSSL v3.x](https://slproweb.com/products/Win32OpenSSL.html)(完整版,非精简版)。 3. 在 PowerShell 中设置 OpenSSL 环境变量(如有必要,请调整路径): ``` $env:OPENSSL_DIR="C:\Program Files\OpenSSL-Win64" $env:OPENSSL_LIB_DIR="C:\Program Files\OpenSSL-Win64\lib\VC\x64\MD" $env:OPENSSL_INCLUDE_DIR="C:\Program Files\OpenSSL-Win64\include" ``` ### 2. 安装 Rust 和 Solana CLI ARES V3 需要 Rust 1.75+ 和 Solana 工具链(提供 Anchor IDL 生成所需的 `cargo-build-sbf`)。 **Linux 和 macOS:** ``` # 安装 Rust curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh # 安装 Solana CLI sh -c "$(curl -sSfL https://release.solana.com/stable/install)" ``` **Windows (PowerShell):** ``` # 安装 Rust curl -sSfO https://win.rustup.rs/rustup-init.exe .\rustup-init.exe -y # 安装 Solana CLI cmd /c "curl https://release.solana.com/stable/solana-install-init-x86_64-pc-windows-msvc.exe --output solana-install-init.exe && solana-install-init.exe" ``` ### 3. 安装 Trident CLI (Fuzzer) ARES V3 与 [Trident](https://ackee.xyz/trident) 无缝集成以实现自动化模糊测试。全局安装此 CLI: ``` cargo install trident-cli ``` ### 4. 构建 ARES V3 克隆仓库并以 release 模式构建项目: ``` git clone https://github.com/daemon-blockint-tech/ARES-v3.git cd ARES-v3 # Build 该项目 cargo build --release # (可选)全局安装 CLI 到你的 ~/.cargo/bin cargo install --path crates/ares-cli ``` ## 🚀 快速开始 安装完成后,您可以启动 ARES Agentic TUI 或直接运行 CLI 命令。 ### 启动 Agentic TUI(交互模式) 默认命令会启动一个交互式终端 UI,您可以在此与 ARES Agent 聊天、浏览目录、读取文件,并以对话的方式触发审计。 ``` ares interact ``` ### 扫描程序(CLI 模式) ``` # 扫描本地 Solana program 目录 ares scan --target ./path/to/program --output ./results # 使用 policy configuration 运行 ares scan --target ./path/to/program --policy ./ares.toml # 运行完整的 benchmark suite ares benchmark --ground-truth ./dataset/solana-common-attack-vectors/ground_truth.json ``` ### 输出格式 | 格式 | 标志 | 描述 | |--------|------|-------------| | JSON | `--format json` | 机器可读,对 CI 友好 | | Markdown | `--format md` | 人类易读的审计摘要 | | HTML | `--format html` | 可在浏览器中查看的报告 | | TUI | (默认) | 交互式终端界面 | ## 项目结构 ``` ARES-v3/ crates/ ares-cli/ CLI entry point, scan/benchmark commands ares-core/ Core detection patterns and rule engine ares-mapper/ AST parsing, taint engine, macro analysis ares-policy/ Policy guardrails and configuration ares-trident/ Trident SVM integration (fuzz harness) dataset/ solana-common-attack-vectors/ ground_truth.json 20-protocol benchmark ground truth stubs/ 11 deterministic regression stubs (Segment A) docs/ paper/ LaTeX paper, figures, compiled PDF ares.toml.template Policy configuration template ares-policy.toml.template ``` ## 第 4 阶段判定的影响 | 版本 | 精确率 | 平均发现/协议 | 关键变更 | |---------|:---------:|:---------------------:|------------| | v11 (阶段 1-3) | 0.55 | ~7.0 | 基准线 | | v15 (+阶段 4) | 0.60 | ~9.7 | 召回率上升 (0.83 -> 0.90) | | v17 (+更严格的规则) | 0.49 | ~6.1 | FP 54 -> 35 (-35%) | | v24 (+大量针对 Anchor 的修复) | 0.63 | ~5.9 | FP 34 -> 25 | | v27 (+all_source_files) | 0.65 | ~5.9 | 召回率上升 (0.79 -> 0.90) | | v28 (+安全类型过滤器) | 0.66 | ~5.7 | FP 20 -> 18 | | v29 (+原始 Rust AST, Solitaire) | **0.83** | ~**4.6** | FP 18 -> 7; F1=0.89 | ## 论文 完整的研究论文可在 `docs/paper/` 目录中找到: - **LaTeX 源码**: `docs/paper/arxiv-style-master/arxiv-style-master/main.tex` - **后的 PDF**: `docs/paper/arxiv-style-master/arxiv-style-master/main.pdf` **引用:** ``` @article{nugroho2026aresv3, title={ARES V3: Deterministic Static Analysis for Solana Smart Contracts with Known-Audit Recall of 97\%}, author={Nugroho, Nyoko Karma and Fahmi, Fikri Armia}, journal={arXiv preprint}, year={2026} } ``` ## 作者 | 姓名 | 角色 | 所属机构 | |------|------|-------------| | Nyoko Karma Nugroho | 创始人 | Daemon Protocol | | Fikri Armia Fahmi | AI 工程师 | Daemon Protocol | ## 许可证 本项目基于 [MIT 许可证](LICENSE) 授权。
标签:Rust, Solana, 云安全监控, 可视化界面, 安全检测工具, 安全测试工具, 智能合约, 网络流量审计, 通知系统, 静态分析