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, 区块链安全, 向量数据库, 多代理协作, 多智能体系统, 实时数据摄取, 审计系统, 嵌入检索, 新兴漏洞, 智能合约审计, 测试用例, 渗透测试工具, 漏洞模式提取, 知识库, 自动化攻击, 语义检索, 退化思维, 静态知识库局限