daemon-blockint-tech/ARES-v3
GitHub: daemon-blockint-tech/ARES-v3
针对 Solana 智能合约的开源确定性静态分析框架,通过多阶段污点分析与 AST 解析高精度检测合约漏洞。
Stars: 2 | Forks: 2
ARES V3
针对 Solana 智能合约的确定性静态分析
ARES V3 是一个开源、完全确定性的 Solana 智能合约静态分析框架。它通过四阶段流水线(regex 提取、AST 解析、污点分析和确定性本地判定)检测 Anchor 和 Solitaire 程序中的漏洞模式——在 20 个基准测试协议中实现了 **97% 的微平均召回率(micro-averaged recall)** 和 **0.94 的 F1 分数**,且 **API 成本为零**,**扫描时间在 5 秒以内**。
## 架构
ARES V3 通过四个连续阶段处理 Solana 程序:
| 阶段 | 功能 | 确定性 |
|-------|----------|:------------:|
| **1. Regex 模式提取** | 对源文本进行表层模式匹配 | 是 |
| **2. AST 解析** | 对 Anchor/Solitaire 宏、字段类型、CPI 上下文进行语法树提取 | 是 |
| **3. 污点分析** | 跟踪从不可信输入到危险汇聚点的数据流 | 是 |
| **4. 确定性本地判定** | 基于 AST 元数据的误报抑制 | 是 |
### 确定性分离
非确定性外部数据源(MCP 服务器、链上数据库)与核心检测流水线严格分离。扫描器对于相同的输入会得到完全相同的输出——没有模型温度,没有 prompt 漂移,也没有网络调用。
## 基准测试结果
### 正面交锋: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, 云安全监控, 可视化界面, 安全检测工具, 安全测试工具, 智能合约, 网络流量审计, 通知系统, 静态分析