YAMINA-2109/ChainSentinel

GitHub: YAMINA-2109/ChainSentinel

ChainSentinel 是一个 AI 多智能体驱动的 Web3 智能合约安全审计平台,通过五个协作智能体实现漏洞检测、Foundry PoC 漏洞利用验证和自动修复重写的全流程自动化。

Stars: 0 | Forks: 0

# ChainSentinel — AI 驱动的 Web3 安全平台
![Python](https://img.shields.io/badge/Python-3.11+-blue?logo=python) ![Band](https://img.shields.io/badge/Band-Multi--Agent-ff6b35?logo=data:image/svg+xml;base64,) ![LangGraph](https://img.shields.io/badge/LangGraph-0.2-green) ![Claude Opus](https://img.shields.io/badge/Claude-Opus%204.7-purple?logo=anthropic) ![Gemini](https://img.shields.io/badge/Gemini-2.0%20Flash-blue?logo=google) ![License](https://img.shields.io/badge/License-MIT-green) ![Streamlit](https://img.shields.io/badge/Streamlit-1.40+-red?logo=streamlit) | 2024 年 DeFi 黑客攻击损失达 22 亿美元 | 全流程审计 | 5 个 Band 智能体协作 | 35 种漏洞模式 | |:-:|:-:|:-:|:-:|
### 🎥 [▶️ 在 YouTube 上观看完整演示](https://www.youtube.com/watch?v=F-N7yw3cfYs) [![ChainSentinel — Demo](https://img.youtube.com/vi/F-N7yw3cfYs/maxresdefault.jpg)](https://www.youtube.com/watch?v=F-N7yw3cfYs)
## 问题所在 2023 年 3 月,仅仅因为少了一行代码——一个被遗忘的健康检查——Euler Finance 在 12 分钟内损失了 **1.97 亿美元**。 像 Slither 这样的静态分析器**本无法发现这个问题**。它们基于语法模式运行。它们无法理解一个函数在与协议的其他部分组合时,*应该做什么*和*实际上做了什么*。 另一种选择是人工审计:花费 5 万至 20 万美元,耗时 4 到 6 周,且仍然无法正式证明修复方案是有效的。 **ChainSentinel 通过一组由 Band 协调的 AI 智能体在几分钟内解决了这个问题,而不是几周。** ## Band 多智能体架构 ChainSentinel 使用 **Band** 作为 **五个专家智能体**之间的真正协调层,它们在 Band 房间中协作,以生成完整的安全审计——每一个都是在调查展开时被主智能体招募的: ``` USER (in a Band room) │ @SecurityOrchestrator audit this contract: [Solidity] ▼ ┌────────────────────────────────────────────┐ │ SecurityOrchestrator │ Band Agent #1 — lead coordinator │ • Structural parse + 35-pattern scan │ │ • Access-control audit · risk verdict │ │ • Recruits specialists dynamically │ └────────────────────┬───────────────────────┘ │ @ThreatAnalyst [contract + static findings] ▼ ┌────────────────────────────────────────────┐ │ ThreatAnalyst │ Band Agent #2 — deep analysis │ • Semantic analysis (business logic, CEI) │ │ • Economic attack simulation │ │ (flash loan · oracle · reentrancy) │ └────────────────────┬───────────────────────┘ │ @PocGenerator [confirmed critical/high findings] ▼ ┌────────────────────────────────────────────┐ │ PocGenerator │ Band Agent #3 — proof of exploit │ • Runnable Foundry PoC exploit tests that │ │ PROVE each vulnerability is real │ └────────────────────┬───────────────────────┘ │ @RemediationAdvisor [vulns + PoC results] ▼ ┌────────────────────────────────────────────┐ │ RemediationAdvisor │ Band Agent #4 — Agent 7 │ • Full contract rewrite (security fixes) │ │ • Self-validation re-audit loop (max 3×) │ └────────────────────┬───────────────────────┘ │ @ReportPublisher [final findings + remediation] ▼ ┌────────────────────────────────────────────┐ │ ReportPublisher │ Band Agent #5 — synthesis │ • Executive security report + risk score │ │ for stakeholders │ └────────────────────┬───────────────────────┘ ▼ USER (full report · exploit PoCs · fixes) ``` **为什么选择 Band?** 这五个智能体使用 Band 的内置工具(`band_lookup_peers`、`band_add_participant`、`band_send_message`)来动态发现彼此,并通过 Band 房间进行协调——完整的推理链条在房间中对用户可见。SecurityOrchestrator 会根据调查的需要招募每个专家(例如,只有在确认存在严重漏洞时才会招募 RemediationAdvisor)——这是真正的条件化智能体编排,而不是固定的流水线。 ## 快速开始 ``` git clone https://github.com/YAMINA-2109/ChainSentinel cd ChainSentinel bash start.sh # automated setup + launch menu ``` 或手动操作: ``` pip install -r requirements.txt cp .env.example .env # fill in ANTHROPIC_API_KEY ``` ### 选项 A — Streamlit 仪表板(可视化流水线) ``` streamlit run app.py ``` 打开 `http://localhost:8501` → **Audit Mode** → 加载 **VulnerableVault.sol** 演示 → **Run Audit**。 ### 选项 B — Band 智能体(多智能体协作) ``` python run_agents.py ``` 然后在 Band 中:创建一个房间 → 添加所有 5 个智能体 → `@SecurityOrchestrator Please audit this contract: [paste Solidity]` ### 完整的分步指南 **→ 请参阅 [GET_STARTED.md](GET_STARTED.md) 获取完整说明,包括:** - 如何创建和配置所有 5 个 Band 智能体(确切的名称 + 描述) - 如何获取 API Handler ID 并填写 `agent_config.yaml` - 如何同时运行 Streamlit + Band - 常见问题的故障排除 ## ChainSentinel 的与众不同之处 ### 通过 Band 实现真正的多智能体协作 具有不同专业的五个智能体动态协作: - **SecurityOrchestrator** 领导调查并决定招募哪些专家 - **ThreatAnalyst** 负责深度语义推理 + 经济攻击模拟 - **PocGenerator** 编写可运行的 Foundry 漏洞利用测试,证明发现的问题是真实的 - **RemediationAdvisor** 仅在确认关键缺陷时介入,然后重写合约 - **ReportPublisher** 将所有内容综合为面向利益相关者的执行报告 每个智能体都是一个通过 WebSocket 连接到 Band 的持久进程。通信通过带有 @提及和结构化发现结果的 Band 房间进行。推理链条在房间中对用户可见——而不是一个黑盒。 ### 业界首个自动生成 Foundry PoC 没有任何其他工具——Slither、MythX、Certora 或任何商业审计平台——能够自动生成可运行的漏洞利用概念验证。当 ChainSentinel 发现关键漏洞时,它会编写 Solidity 测试来**证明**该漏洞利用是有效的: ``` // AUTO-GENERATED by ChainSentinel — EDUCATIONAL USE ONLY pragma solidity ^0.8.0; import "forge-std/Test.sol"; contract EulerFinanceMissingHealthCheckPoC is Test { function test_exploit_drain() public { attacker.executeFlashLoanDrain(50 ether); assertGt(attacker.profit(), 0, "Exploit confirmed"); emit log_named_uint("Profit extracted (wei)", attacker.profit()); } } ``` 运行命令:`forge test --fork-url $ETHEREUM_RPC_URL -vvv` ### 结构化 Solidity 解析器(不仅仅是正则表达式) ChainSentinel 包含一个自定义的 Python Solidity 解析器,它支持: - 函数作用域和函数体提取(基于大括号计数,而非按行拆分) - 每个函数的修饰符检查(`nonReentrant`、`onlyOwner`、`initializer`) - CEI(检查-生效-交互)排序分析 - 基于函数上下文的外部调用分类 - 状态变量类型映射 ## 完整审计流水线(10 个智能体) ``` parse_contract (Phase 1) ↓ [PARALLEL — Phase 2, 5 agents simultaneously] ├── static_analyzer (structural parser + 35-pattern library) ├── semantic_analyzer (Claude Opus — business logic, CEI, health checks) ├── economic_attacker (Claude Opus — flash loan, oracle, reentrancy attacks) ├── access_control (rule-based — unprotected critical functions) └── dependency_checker (rule-based — OpenZeppelin version, import issues) ↓ risk_aggregator (Phase 3 — deduplicates + CVSS-style scoring) ↓ [PARALLEL — Phase 4] ├── poc_generator (Claude Opus — Foundry exploit tests) └── fix_advisor (Gemini 2.0 Flash — patched code per vulnerability) ↓ report_generator (Phase 5 — Markdown + PDF) ↓ [OPTIONAL — Agent 7★] remediation_agent → re-audit → iterate × 3 (Claude Opus full rewrite) ``` ### 10 个智能体 | # | 智能体 | 模型 | 功能说明 | |---|-------|-------|-------------| | 1 | `parse_contract` | 基于规则 | 通过结构化解析器提取元数据、函数、导入 | | 2 | `static_analyzer` | 结构化解析器 + 模式库 | **双通道**:逐函数上下文检查 + 35 种模式库 | | 3 | `semantic_analyzer` | Claude Opus 4.7 | 业务逻辑、CEI 违规、状态机缺陷 | | 4 | `economic_attacker` | Claude Opus 4.7 | 闪电贷、预言机操纵、MEV、治理攻击 | | 5 | `access_control_checker` | 基于规则 | 权限提升路径、修饰符链 | | 6 | `dependency_checker` | 基于规则 | 过时/存在漏洞的 OpenZeppelin 导入 | | 7 | `risk_aggregator` | 基于规则 | 结果去重,计算加权 CVSS 风格评分 | | 8 | `poc_generator` | Claude Opus 4.7 | 自动生成可运行的 Foundry 漏洞利用测试 | | 9 | `fix_advisor` | Gemini 2.0 Flash | 针对每个漏洞生成补丁代码 | | 10 | `report_generator` | 基于规则 | 完整的 Markdown 报告 + 可下载的 PDF | | 7★ | `remediation_agent` | Claude Opus 4.7 | 全面的合约重写 + 重新审计循环(最多 3 次) | ## 核心功能 ### Audit 模式 - **3 种输入方式**:上传 `.sol` 文件、粘贴 GitHub URL 或通过合约地址获取(Etherscan V2 API) - **支持的链**:Ethereum、Polygon、BSC、Arbitrum、Optimism、Base - 实时流水线视图——逐个 token 观察每个智能体的工作状态 - **RAG 驱动**:基于 FAISS 对 35 种漏洞模式和 20 个 DeFi 黑客攻击案例进行语义搜索 - **智能体 8 — PoC 生成器**:提供 Foundry 测试合约以证明可利用性 - **自动修复循环**:重写合约,重新审计,迭代直到评分 ≤ 40 - 完整的 PDF 报告:执行摘要、漏洞发现表、漏洞利用代码、修复步骤 ### Band 模式(新功能 — 黑客松特色) - 5 个持久的 Band 智能体通过 WebSocket 连接 - SecurityOrchestrator 从 Band 房间协调调查 - 智能体通过 `band_lookup_peers()` 发现彼此并被动态招募 - 条件化编排:只有在确认严重漏洞时,RemediationAdvisor 才会加入 - 完整的审计发现结果将作为结构化消息发布在 Band 房间中 - 运行所有 5 个智能体:`python run_agents.py` ### Sentinel 模式 - 对任何智能合约地址进行**实时链上监控** - **Demo 模式**(无需 RPC):模拟交易,逼真的风险分类 - **Live 模式**:在 Ethereum/Polygon/BSC/Arbitrum 上使用 Web3.py 进行区块轮询 - **告警推送**:集成 Telegram 机器人 + Discord webhook ## 设置 ### 1. 克隆并安装 ``` git clone https://github.com/YAMINA-2109/ChainSentinel cd ChainSentinel pip install -r requirements.txt ``` ### 2. 配置环境 ``` copy .env.example .env # Windows # cp .env.example .env # Linux/Mac ``` 最低要求: ``` ANTHROPIC_API_KEY=sk-ant-... ``` 对于 Band 多智能体模式: ``` BAND_REST_URL=https://app.band.ai/ BAND_WS_URL=wss://app.band.ai/api/v1/socket/websocket ``` 并在 `agent_config.yaml` 中填入您的 5 个 Band 智能体凭证(参见模板)。 可选(缺少这些配置时应用会适度降级): ``` GOOGLE_API_KEY=AIza... # Gemini fix advisor ETHERSCAN_API_KEY=... # Fetch contracts by address ETHEREUM_RPC_URL=https://eth.llamarpc.com # Sentinel live mode ``` ### 3. 启动 Streamlit 仪表板 ``` streamlit run app.py ``` ### 4. 启动 Band 智能体(在单独的终端中) ``` python run_agents.py ``` ## Band 智能体设置 1. 访问 [app.band.ai](https://app.band.ai) → 创建账户(促销码:**BANDHACK26**) 2. 创建 5 个 **External Agents**: - `SecurityOrchestrator` - `ThreatAnalyst` - `PocGenerator` - `RemediationAdvisor` - `ReportPublisher` 3. 在每个智能体上启用 **Personal Registry Access**(用于节点发现) 4. 将每个智能体的 UUID 和 API 密钥复制到 `agent_config.yaml` 中 5. 运行:`python run_agents.py` 6. 在 Band 中:创建一个房间,添加所有 5 个智能体,发送: ``` @SecurityOrchestrator Please audit this contract: pragma solidity ^0.8.0; contract VulnerableVault { mapping(address => uint256) public balances; function deposit() external payable { balances[msg.sender] += msg.value; } function withdraw() external { uint256 amount = balances[msg.sender]; (bool ok,) = msg.sender.call{value: amount}(""); require(ok); balances[msg.sender] = 0; // state updated AFTER external call = reentrancy! } } ``` ## ChainSentinel 本可以拦截的攻击 | 攻击事件 | 损失 | ChainSentinel 如何检测 | 智能体 | |------|------|------------------------------|-------| | **Euler Finance 2023** | 1.97 亿美元 | `SEMANTIC-001`:减少抵押品后缺少健康检查 | semantic_analyzer | | **Ronin Network 2022** | 6.25 亿美元 | `ACCESS-001`:验证者密钥泄露,缺少多签验证 | access_control | | **Poly Network 2021** | 6.11 亿美元 | `CS-009`:对不受信任的合约进行 delegatecall | static_analyzer | | **Cream Finance 2021** | 1.3 亿美元 | `CS-005`:通过闪电贷进行价格预言机操纵 | economic_attacker | | **Compound 2021** | 9000 万美元 | `CS-025`:未受保护的 initializer / 治理逻辑缺陷 | static_analyzer | | **Nomad Bridge 2022** | 1.9 亿美元 | `ACCESS-001`:消息处理缺少所有权验证 | access_control | ## 与竞品对比 | 功能 | Slither | MythX | 人工审计 | **ChainSentinel** | |-----------|---------|-------|-------------|-------------------| | 语法模式匹配 | ✅ | ✅ | ✅ | ✅ | | 业务逻辑推理 | ❌ | ❌ | ✅ | ✅ **Claude Opus** | | 闪电贷模拟 | ❌ | ❌ | ✅ | ✅ **Claude Opus** | | 自动生成代码修复 | ❌ | ❌ | ❌ | ✅ **Gemini Flash** | | **可运行的 PoC 漏洞利用** | ❌ | ❌ | 偶尔 | ✅ **全球首创** | | 自我验证修复方案 | ❌ | ❌ | ❌ | ✅ | | 实时监控 | ❌ | ❌ | ❌ | ✅ **Sentinel 模式** | | **多智能体 Band 房间** | ❌ | ❌ | ❌ | ✅ **5 个 Band 智能体** | | 完成审计耗时 | 30秒 | 5分钟 | **4–6 周** | **几分钟** | | 成本 | 免费 | 3千美元+/年 | 5万–20万美元 | **99美元/月** | ## 技术栈 | 层级 | 技术 | 原因 | |-------|-----------|-----| | **多智能体协作** | **Band SDK** | 真正的 WebSocket 连接持久化智能体、Band 房间、节点发现 | | 智能体编排 | LangGraph 0.2 (StateGraph) | 并行边、reducer 字段、类型化状态合并 | | 主要 LLM | Claude Opus 4.7 (Anth) | 在安全分析方面具有最佳推理能力 | | 经济模拟 | Claude Opus 4.7 | 攻击推理需要深度上下文 | | 修复生成 | Gemini 2.0 Flash (Google) | 快速的代码生成,低延迟 | | 备选 LLM | Claude Sonnet 4.6 | 始终可用的基线方案 | | Solidity 分析 | 自定义结构化解析器 | 基于函数作用域的上下文检查 | | RAG | FAISS + sentence-transformers | 对历史漏洞利用进行语义搜索 | | 区块链 | Web3.py | 兼容 Ethereum 的 RPC 监控 | | 合约获取 | httpx + Etherscan V2 API | 按地址拉取任何已验证的合约 | | UI | Streamlit | 快速迭代,实时流传输 | | PDF | fpdf2 | 专业的审计报告 | | 容器化 | Docker | 云端部署 | | 许可证 | MIT | 开源 | ## 项目结构 ``` app.py ← Streamlit dashboard (Audit + Sentinel + About tabs) run_agents.py ← Launch all 5 Band agents simultaneously agent_config.yaml ← Band agent credentials (gitignored — see .env.example) agents/ tools/ analysis_tools.py ← LangChain @tool wrappers for Band agents security_orchestrator/ main.py ← Band Agent #1: lead coordinator prompts.py ← SecurityOrchestrator system prompt threat_analyst/ main.py ← Band Agent #2: semantic + economic analysis prompts.py ← ThreatAnalyst system prompt poc_generator/ main.py ← Band Agent #3: Foundry PoC exploit tests prompts.py ← PocGenerator system prompt remediation_advisor/ main.py ← Band Agent #4: Agent 7 auto-remediation prompts.py ← RemediationAdvisor system prompt report_publisher/ main.py ← Band Agent #5: executive report synthesis prompts.py ← ReportPublisher system prompt core/ graph/ audit_graph.py ← LangGraph: 10-agent pipeline definition remediation_agent.py ← Agent 7★: full contract rewrite (Claude Opus) remediation_loop.py ← Self-validation loop (max 3 iterations) integrations/ etherscan.py ← Etherscan V2 API: fetch verified contracts sentinel/ monitor.py ← Real-time on-chain monitoring (Web3.py) alerting.py ← Telegram + Discord alert delivery knowledge/ vulnerability_db.py ← 35 vulnerability pattern definitions rag_engine.py ← FAISS + keyword fallback RAG engine llms/provider.py ← LLMProvider singleton (Opus / Sonnet / Gemini) state/state.py ← SmartContractState TypedDict + Pydantic models tracer/ trace_collector.py ← Thread-safe token streaming (agents → Streamlit) contracts/vulnerable_samples/ VulnerableVault.sol ← Demo: reentrancy + access control + oracle bugs EulerFinanceVuln.sol ← Demo: Euler Finance $197M vulnerability class Dockerfile ← Production container ``` ## 市场机会 - 智能合约审计市场:**8.9 亿美元 (2024) → 34 亿美元 (2033)**,复合年增长率 24% - 2024 年 **DeFi 黑客攻击损失达 22 亿美元** - **MiCA(欧盟)法规截止日期:2026 年 7 月**——所有 DeFi 协议必须进行强制审计 - 人工审计:每个协议 5 万至 20 万美元,耗时 4 到 6 周 - 每月部署 10,000+ 个新智能合约 - **ChainSentinel:每次审计仅需几分钟,99 美元/月** ### 投资回报率(ROI)示例 ## 漏洞覆盖范围 — 35 种模式 | ID | 名称 | 严重程度 | |----|------|----------| | CS-001 | 重入攻击 | CRITICAL | | CS-002 | 缺少访问控制 | CRITICAL | | CS-003 | 整数溢出/下溢 | HIGH | | CS-004 | 未受保护的 ETH 提款 | CRITICAL | | CS-005 | 价格预言机操纵 | CRITICAL | | CS-006 | 闪电贷攻击向量 | CRITICAL | | CS-007 | 未检查的外部调用返回值 | HIGH | | CS-015 | 缺少健康检查(Euler 类型) | CRITICAL | | CS-016 | ERC4626 份额膨胀攻击 | CRITICAL | | CS-018 | 治理闪电贷 | CRITICAL | | CS-025 | 未受保护的 initializer | CRITICAL | | CS-033 | 代理合约中的存储冲突 | CRITICAL | | … | (共 35 种——详见 vulnerability_db.py) | … | ## 许可证 [MIT](LICENSE) — 开源,可自由 fork、部署和扩展。 *为 Band of Agents 黑客松构建 · lablab.ai · 2026 年 6 月* *Band SDK · Claude Opus 4.7 (Anthropic) · Gemini 2.0 Flash (Google) · LangGraph · Streamlit*
标签:Kubernetes, LangGraph, Solidity, Web3安全, 智能合约审计, 模块化设计, 自动化修复, 逆向工具