Aaqeb11/DynaAudit
GitHub: Aaqeb11/DynaAudit
一个基于多智能体与动态 RAG 的智能合约审计系统,旨在解决静态知识库无法检测新型漏洞的问题。
Stars: 0 | Forks: 0
# DynaAudit
## 概述
DynaAudit 是一个多智能体智能合约审计系统,旨在解决现有基于 LLM 的审计工具中的一个关键空白:**静态知识库无法检测到模型训练截止日期之后出现的新型漏洞利用**。
### 问题
- 以太坊上的智能合约一旦部署就不可变——部署后无法修补漏洞
- 仅 2024 年一年,就有超过 26 亿美元因 192 起智能合约漏洞事件而损失
- 现有的基于 LLM 的审计工具(包括 LLM-SmartAudit)依赖静态训练数据,无法推理在训练截止日期之后发现的新漏洞模式
- 单个 LLM 审计员会遭受 **思维退化**——它会变得越来越偏向初始分析,并遗漏漏洞
### 解决方案
DynaAudit 结合了两项创新:
1. **多智能体协作** — 四个模拟真实审计公司的 AI 智能体,互相质疑彼此的发现以防止思维退化
2. **动态 RAG** — 持续更新的知识库,摄取来自 Etherscan、Forta 和 DeFiHackLabs 的链上漏洞,并在审计时注入到智能体上下文中
## 架构
### 1. 数据摄取与动态 RAG 管道
```
flowchart TD
subgraph INGESTION["🔍 Data Ingestion Layer"]
A1[Etherscan API] --> P1
A2[Forta Network] --> P1
A3[Rekt.news / DeFiHackLabs] --> P1
P1[Exploit Crawler & Parser]
P1 --> P2[Vulnerability Pattern Extractor]
P2 --> P3[Embedding Generator: text-embedding-3-large]
P3 --> VDB[(Vector Store: Pinecone / pgvector)]
P2 --> KDB[(Knowledge Base: Exploit Registry/PostgreSQL)]
end
subgraph RAG["⚙️ Dynamic RAG Engine"]
VDB --> R1[Semantic Retriever]
KDB --> R1
R1 --> R2[Context Builder: Top-K Similar Exploits]
R2 --> R3[LLM Reasoning Layer: GPT-4 / CodeLlama]
SC[📄 Smart Contract Input: .sol file] --> R1
SC --> R3
end
subgraph AUDIT["📋 Audit Output Layer"]
R3 --> O1[Vulnerability Report Generator]
O1 --> O2[Confidence Scorer]
O2 --> O3[Severity Classifier: Critical / High / Medium / Low]
O3 --> O4[Diff Detector: New vs Known Exploits]
O4 --> OUT[📊 Final Audit Report: JSON + Human-readable]
end
subgraph STATIC["🛠️ Static Analysis Tools"]
SC --> S1[Slither]
SC --> S2[Mythril]
S1 --> R3
S2 --> R3
end
subgraph FEEDBACK["🔄 Continuous Update Loop"]
OUT --> FB1[Exploit Feedback Collector]
FB1 --> FB2{New Exploit Detected?}
FB2 -->|Yes| P2
FB2 -->|No| FB3[Archive]
end
```
### 2. 多智能体审计团队
```
flowchart TD
SC[📄 Smart Contract Input .sol file]
subgraph TEAM["🏢 DynaAudit Agent Team"]
PM["📌 Project Manager\nInitiates audit, sets objectives & tracks progress"]
SCA["🔍 Smart Contract Auditor\nIdentifies vulnerabilities using RAG + Dynamic Exploits"]
SPE["💻 Solidity Programming Expert\nDeep code-level analysis & static tool results"]
SCC["⚖️ Smart Contract Counselor\nRefines, validates findings & writes final report"]
end
subgraph DYNAMIC["⚙️ DynaAudit Extensions"]
RAG[Dynamic RAG Retriever - Top-K live exploits]
STATIC[Static Tools - Slither & Mythril]
VDB[(Vector Store - Live Exploit KB)]
end
SC --> PM
PM -->|Assigns audit task| SCA
PM -->|Assigns code review| SPE
SCA <-->|Cross-checks findings| SPE
SCA --> RAG
SPE --> STATIC
RAG --> VDB
RAG -->|Exploit context| SCA
STATIC -->|Code analysis| SPE
SCA -->|Vulnerability findings| SCC
SPE -->|Code insights| SCC
SCC -->|Requests clarification| SCA
SCC -->|Requests clarification| SPE
SCC --> RPT[📊 Final Audit Report - Confidence + Severity]
RPT --> PM
```
## 工作原理
### 四个智能体
每个智能体在初始化时都会获得一个 **初始提示**,定义其角色、职责范围和沟通风格——防止任何单一智能体主导分析。
| 智能体 | 角色 | 职责 |
|---|---|---|
| **项目经理 (PM)** | 协调者 | 设置审计目标,启动子任务,跟踪进度 |
| **智能合约审计员 (SCA)** | 主要分析师 | 利用动态 RAG 上下文识别漏洞 |
| **Solidity 编程专家 (SPE)** | 代码专家 | 深度代码级分析,整合 Slither 与 Mythril 的输出 |
| **智能合约顾问 (SCC)** | 验证者与报告员 | 质疑发现结果,去重并撰写最终结构化报告 |
### 3 阶段审计循环
```
Phase 1 — Contract Analysis
PM (user) ↔ SCA (assistant)
Goal: understand contract purpose, structure, entry points
RAG injection: top-K similar exploits added to SCA context
Phase 2 — Vulnerability Identification
SCA (user) ↔ SPE (assistant) ← role reversal prevents degeneration-of-thought
Goal: identify specific vulnerabilities from two angles
Static tools: Slither & Mythril output fed into SPE reasoning
Phase 3 — Report Generation
SCC validates, deduplicates, and produces the final report
Diff Detector: flags vulnerabilities matching newly-added exploits
not present in GPT's static training data
```
## 相比 LLM-SmartAudit 的创新贡献
| 功能 | LLM-SmartAudit (基线) | DynaAudit |
|---|---|---|
| 知识库 | 静态(训练截止日期) | 动态 — 实时链上漏洞 |
| 漏洞来源 | 无 | Etherscan、Forta、Rekt.news、DeFiHackLabs |
| 漏洞检测 | 仅已知模式 | 已知 + 新兴(截止日期后) |
| 置信度评分 | 二元(是/否) | 按严重级别评分 |
| 差异检测 | 不存在 | 标记新型与已知漏洞 |
| 反馈循环 | 无 | 持续重新摄取新漏洞 |
## 技术栈
| 层级 | 技术 |
|---|---|
| 智能体编排 | LangChain.js |
| LLM | GPT-4o / CodeLlama |
| 后端运行时 | Node.js + NestJS |
| 向量存储 | Pinecone 或 pgvector |
| 关系型数据库 | PostgreSQL |
| 静态分析 | Slither、Mythril |
| 漏洞摄取 | Etherscan API、Forta 网络、DeFiHackLabs |
| 嵌入模型 | OpenAI text-embedding-3-large |
| 编程语言 | TypeScript |
## 项目结构
```
dynaaudit/
├── src/
│ ├── agents/
│ │ ├── projectManager.agent.ts
│ │ ├── smartContractAuditor.agent.ts
│ │ ├── solidityExpert.agent.ts
│ │ └── counselor.agent.ts
│ ├── rag/
│ │ ├── exploitCrawler.ts
│ │ ├── embeddingGenerator.ts
│ │ ├── semanticRetriever.ts
│ │ └── contextBuilder.ts
│ ├── static/
│ │ ├── slitherRunner.ts
│ │ └── mythrilRunner.ts
│ ├── pipeline/
│ │ ├── phase1.ts
│ │ ├── phase2.ts
│ │ └── phase3.ts
│ ├── output/
│ │ ├── reportGenerator.ts
│ │ ├── confidenceScorer.ts
│ │ ├── severityClassifier.ts
│ │ └── diffDetector.ts
│ └── main.ts
├── contracts/ # Sample .sol files for testing
├── reports/ # Generated audit reports
├── prisma/ # PostgreSQL schema
└── README.md
```
## 快速开始
### 前置条件
- Node.js 20+
- PostgreSQL 15+
- Python 3.10+(用于 Slither 与 Mythril)
- OpenAI API 密钥
- Pinecone API 密钥(或 PostgreSQL 中启用的 pgvector)
### 安装
```
git clone https://github.com/YOUR_USERNAME/DynaAudit.git
cd DynaAudit
npm install
cp .env.example .env
# 在 .env 中填写您的 API 密钥
```
### 运行审计
```
npm run audit -- --contract ./contracts/example.sol
```
## 背景与参考资料
本项目扩展了以下工作:
- **LLM-SmartAudit**:*通过 LLM 驱动的多智能体系统实现高级智能合约漏洞检测* — IEEE 软件工程汇刊,2025 年。[论文](https://ieeexplore.ieee.org/document/11121619) · [GitHub](https://github.com/LLMAudit/LLMSmartAuditTool)
## 贡献
欢迎贡献!DynaAudit 是一个研究项目——如果您正在从事智能合约安全、基于 LLM 的审计或动态 RAG 系统,有很多方式可以参与。
### 如何开始
1. 叉取仓库
2. 创建功能分支:`git checkout -b feat/your-feature-name`
3. 进行修改并提交:`git commit -m "feat: describe your change"`
4. 推送到您的分支:`git push origin feat/your-feature-name`
5. 针对 `main` 分支发起拉取请求
### 提交规范
本项目遵循 [Conventional Commits](https://www.conventionalcommits.org/):
| 前缀 | 使用时机 |
|---|---|
| `feat:` | 新功能或节点 |
| `fix:` | Bug 修复 |
| `refactor:` | 非修复或功能的代码变更 |
| `docs:` | 仅限 README 或文档 |
| `test:` | 添加或更新测试 |
| `chore:` | 构建流程、依赖项、配置 |
### 可贡献领域
- **真实 RAG 管道** — 替换模拟检索器,使用实时 pgvector 加上 Etherscan/Forta 摄取
- **Slither 与 Mythril 集成** — 替换模拟静态分析器,使用真实的子进程调用
- **差异检测节点** — 针对训练后漏洞的模式匹配
- **新的漏洞场景** — 扩展当前覆盖的目标分析场景
- **额外链支持** — 支持非 EVM 链(如 Solana、基于 Move 的合约)
- **报告格式化器** — 超越 JSON 与 Markdown 的更丰富 HTML/PDF 输出
- **NestJS API 层** — 将管道封装为 REST API
### 代码风格
- TypeScript 严格模式 — 不使用 `any` 类型
- 所有新节点必须遵循 `(state: AuditStateType) => Promise>` 签名
- 所有新结构化输出必须使用 Zod 模式
- 将 LLM 调用隔离到节点函数中 — 不在 `nodes.ts` 之外调用 LLM
### 问题反馈
如遇错误,请提供:
- 导致问题的 `.sol` 合约(如果敏感请脱敏)
- 完整的错误输出
- 您的 Node.js 和 Bun 版本
*作为在 BITS Pilani 开展的研究项目的一部分构建,扩展了 [LLM-SmartAudit](https://ieeexplore.ieee.org/document/11121619)(IEEE TSE,2025 年)。*
标签:CodeLlama, DeFiHackLabs, Etherscan, Forta, GPT-4, LLM审计, MITM代理, pgvector, Pinecone, PyRIT, Ruby, 上下文构建, 代码生成, 以太坊, 动态RAG, 区块链安全, 向量数据库, 多代理协作, 多智能体系统, 实时数据摄取, 审计系统, 嵌入检索, 新兴漏洞, 智能合约审计, 测试用例, 渗透测试工具, 漏洞模式提取, 知识库, 自动化攻击, 语义检索, 退化思维, 静态知识库局限