PrinceTitiya/AI-smart-contract-analyzer

GitHub: PrinceTitiya/AI-smart-contract-analyzer

一个结合静态分析与RAG的AI智能合约审计系统,用于检测、解释并评分Solidity合约中的安全漏洞。

Stars: 0 | Forks: 0

# AI 智能合约安全分析器 一个**由 AI 驱动的智能合约审计系统**,结合了**静态分析(Slither)**、**检索增强生成(RAG)** 以及**本地大语言模型(通过 Ollama 运行的 Llama3)**,用于检测、分析和解释 Solidity 合同中的漏洞。 # 概述 本项目旨在模拟**现实世界中的智能合约审计师**的工作方式: - **静态工具**检测已知漏洞 - **AI 检索相似的攻击模式** - **大语言模型以专家级别解释问题** # 系统架构 ``` ┌──────────────┐ │ Contract │ └──────┬───────┘ ↓ ┌──────────────────────────┐ │Static Analysis (Slither) │ └──────────┬───────────────┘ ↓ Vulnerabilities (facts) ↓ Scoring Engine + ┌──────────────────────────┐ │ Embedding Model │ └──────────┬───────────────┘ ↓ Vector Database (ChromaDB) ↓ Similar Contracts Retrieved ↓ Metadata (context) ↓ ┌──────────────────────────┐ │ LLM (Llama3 via Ollama) │ └──────────┬───────────────┘ ↓ Final Security Report ``` # 技术栈 ### 静态分析 - **Slither** → 漏洞检测 ### AI / RAG - **SentenceTransformers (MiniLM)** → 嵌入向量 - **ChromaDB** → 向量数据库 ### 大语言模型 - **Ollama + Llama3 / Mistral** → 解释引擎 ### 编程语言 - Python # 📁 项目结构 ``` ai-smart-contract-analyzer/ ├── analyzer/ │ ├── loader.py # Load contract │ ├── slither_runner.py # Run Slither │ ├── parser.py # Extract vulnerabilities │ ├── embedder.py # Generate embeddings │ ├── vector_store.py # ChromaDB interface │ ├── rag_engine.py # Similarity search │ ├── data_loader.py # Load dataset into DB │ ├── llm_engine.py # LLM explanation │ ├── data/ │ ├── vulnerable_contracts/ │ ├── metadata.json │ ├── analyze.py # Main CLI entry point └── README.md ``` # 系统流程(逐步说明) ## 1. 输入层 用户提供: ``` .sol file ``` 处理方式: ``` loader.py ``` 输出:原始 Solidity 代码(字符串) ## 2. 静态分析(Slither) ``` slither_runner.py ``` 执行: ``` slither contract.sol --json result.json ``` 👉 输出: ``` { "check": "reentrancy-eth", "impact": "High", "description": "..." } ``` ## 3. 解析层 ``` parser.py ``` 提取结构化的漏洞信息: ``` [ { "check": "reentrancy-eth", "impact": "High" } ] ``` ## 4. 评分引擎 ``` analyze.py ``` 采用加权评分: | 影响等级 | 惩罚分 | | -------- | ------ | | 高 | -25 | | 中 | -15 | | 低 | -10 | | 信息性 | -5 | 示例: ``` Score = 100 - penalties ``` ## 5. 嵌入层(AI) ``` embedder.py ``` 将合约转换为向量: ``` Solidity Code → 384-dim vector ``` 表示**代码的语义含义** ## 6. 向量数据库(记忆) ``` vector_store.py ``` 存储: ``` [id, contract_code, embedding, metadata] ``` ## 7. 数据集(知识库) ### 为何需要? AI 需要**示例进行比较** ### 📄 metadata.json ``` { "vulnerability": "reentrancy", "description": "External call before state update..." } ``` 为原始代码**添加语义信息** ### 关键洞见 ``` Code alone = syntax Code + metadata = knowledge ``` ## 8. RAG 引擎(相似度搜索) ``` rag_engine.py ``` 处理流程: ``` Input contract → embedding → compare with DB → retrieve closest matches ``` ### 相似度度量 - 使用**向量距离** - 距离越小 → 越相似 ``` 0.0 → identical 0.1 → very similar 0.3+ → less similar ``` ## 9. 大语言模型解释引擎 ``` llm_engine.py ``` 使用: - 合约代码 - Slither 输出 - RAG 检索结果 ### 提示词结构 ``` Contract + Detected Issues + Similar Patterns ↓ LLM Explanation ``` ### 输出 ``` - Explanation - Exploitation scenario - Fix suggestions ``` # 核心设计哲学 ## 1. 混合智能 ``` Slither → factual correctness RAG → contextual similarity LLM → human explanation ``` ## 2. grounded AI(基于事实的 AI) LLM 不允许随意猜测。 ``` AI is grounded on: ✔ Slither results ✔ RAG context ``` ## 3. 模块化架构 各组件相互独立: - 可升级嵌入模型 - 可替换大语言模型 - 可改进数据集 # 🧪 示例输出 ``` ===== SECURITY REPORT ===== Score: 65/100 ===== AI SECURITY ANALYSIS ===== 1. Reentrancy Vulnerability: Explanation: External call before state update... Attack: Recursive withdraw exploit... Fix: Use Checks-Effects-Interactions pattern 2. Solidity Version Issue: ... 3. Low-Level Call Risk: ... ``` # 当前限制 - 大语言模型在本地运行 → 在 CPU 上较慢 - 数据集较小 → 情报有限 - 仅提供 CLI,无 UI/API - 无 AST 级分析 # 关键经验 本项目展示了: - 智能合约安全基础 - 静态分析集成 - RAG 系统设计 - 大语言模型 grounding 技术 - 端到端 AI 系统架构 # 最终洞见 本系统**不是**: ``` AI replacing auditors ``` 而是: ``` AI assisting auditors ```
标签:AI安全, AI风险缓解, Chat Copilot, ChromaDB, Llama3, LLM, LLM评估, MiniLM, Ollama, RAG, SentenceTransformers, SEO: AI安全, SEO: Solidity漏洞检测, SEO: 智能合约审计, Slither, Solidity, Unmanaged PE, 云安全监控, 人工智能审计, 代码分析, 凭证管理, 区块链安全, 合约漏洞, 向量数据库, 安全报告, 嵌入模型, 智能合约安全, 智能合约审计, 检索增强生成, 漏洞解释, 评分引擎, 逆向工具, 静态分析