raghavendraprasath/guardscan
GitHub: raghavendraprasath/guardscan
GuardScan 结合确定性检测器与基于证据约束的 LLM 解释,对 Solidity 智能合约进行漏洞扫描、严重程度排名和修复建议。
Stars: 0 | Forks: 0
# GuardScan
**AI 辅助的智能合约漏洞扫描器**
GuardScan 将确定性的 Solidity 检测器与基于事实根据的 LLM 解释相结合,用于检测、排名、解释智能合约安全问题并提出修复建议——且不会产生自由发挥的幻觉。
| 字段 | 详情 |
|---|---|
| **作者** | Raghavendra Prasath Sridhar |
| **课程** | INFO7500 — 加密货币与智能合约(2026 年夏季) |
| **领域** | 区块链安全 |
| **状态** | 最终项目提案 + 可运行的≤5小时 MVP 原型 |
| **代码库** | [github.com/raghavendraprasath/guardscan](https://github.com/raghavendraprasath/guardscan) |
## 1. 概述
本代码库是 **GuardScan** 的所在地,这是一个 AI 辅助的智能合约漏洞扫描器。该系统结合了:
1. **确定性检测器**,可从 Solidity 源码生成结构化且有证据支撑的发现结果
2. **基于事实根据的 LLM 解释层**,用于对严重程度进行排名、用通俗易懂的语言解释风险并提出修复建议——仅受限于检测器提供的证据
GuardScan 旨在解决嘈杂的专家级静态分析输出与不可信的自由发挥型“AI 审计聊天机器人”之间的实际差距。初步范围侧重于与 AMM / ERC-20 类型合约相关的模式,建立在先前的课程作业(`SimpleAMM` 和 LLM Text-to-SQL 工具)之上。
## 2. 背景:初学者的关键概念
本节定义了提案中使用的主要术语,以便初涉区块链安全的读者能够跟上进度。
| 术语 | 通俗解释 |
|---|---|
| **Blockchain** | 一种共享的、只能追加的账本。一旦数据被确认,就很难更改,这就是为什么已部署的 Bug 代价高昂。 |
| **Smart contract** | 存储在区块链(通常是以太坊)上的程序,可自动执行有关资金、代币或其他链上状态的规则。 |
| **Solidity** | 编写以太坊智能合约最常用的编程语言。GuardScan 会扫描 Solidity 源文件。 |
| **EVM** | Ethereum 虚拟机——在兼容以太坊的链上执行智能合约字节码的 runtime。 |
| **Transaction** | 一项经过签名的、调用合约或转移价值的操作。这里的安全假设一旦失败,可能会转移真实的资金。 |
| **Token / ERC-20** | 以太坊上可替代代币(类似硬币的余额)的通用标准。许多 DeFi 应用都会转移 ERC-20 代币。 |
| **AMM (Automated Market Maker)** | 一种智能合约形式的交易所,它根据流动性池公式而不是订单簿来为交易定价(例如,Uniswap 风格的池)。 |
| **Liquidity pool** | 锁定在合约中的代币储备,以便用户可以将一种资产兑换为另一种资产。 |
| **Immutability** | 部署后,合约代码通常不能像普通的 Web 应用那样进行修补。修复通常需要重新部署和迁移。 |
| **Vulnerability / exploit** | 攻击者可利用其窃取资金、冻结资产或获取未经授权控制权的弱点。 |
| **Reentrancy** | 一种 Bug 模式,外部调用允许攻击者在状态更新之前重新进入函数,通常会耗尽资金。 |
| **Access control** | 关于谁可以调用敏感函数的规则(例如,只有 owner 才能更改关键设置)。 |
| **`tx.origin` vs `msg.sender`** | `msg.sender` 是直接调用者;`tx.origin` 是最初的以太坊外部账户。使用 `tx.origin` 进行授权是一种已知的反模式。 |
| **Slippage / `minOut`** | 在 swap 中,价格可能会在交易结算前发生变动。最小输出量(`minOut`)检查可保护用户,避免其实际获得的远少于预期。 |
| **Static analysis** | 使用规则/启发式方法检查源代码,而无需执行完整的实际攻击。像 Slither 这样的工具就是做这个的;GuardScan 的检测器是该概念的一个小型教学版本。 |
| **Detector** | 一种确定性检查,可标记特定模式并返回结构化证据(文件/行号/代码片段)。在 GuardScan 中,检测器是事实来源。 |
| **LLM (Large Language Model)** | 能够用自然语言解释文本/代码的 AI 模型。对提高可读性很有用,但如果允许其随意捏造漏洞,则是不安全的。 |
| **Grounded explanation** | 限制在检测器已生成的证据范围内的 LLM 响应——仅负责解释并提出修复建议,不捏造新的发现结果。 |
| **Severity** | 发现结果的优先级标签(例如 Critical / High / Medium / Info),以便开发者优先修复风险最高的问题。 |
| **Audit** | 对合约进行安全审查。GuardScan 不能替代专业的审计;它只是一个供开发者使用的反馈工具。 |
**这些部分如何契合 GuardScan:** Solidity 智能合约(通常与 AMM / ERC-20 相关)可能包含影响巨大的 Bug。确定性检测器会找出潜在问题;基于事实根据的 LLM 会用通俗易懂的语言进行解释,以便初学者和忙碌的开发者能更快地根据结果采取行动。
## 3. 问题陈述
智能合约在部署后是不可变的。诸如 reentrancy、缺失的 access control、不安全的外部调用以及自动做市商 (AMM) 恒等式被破坏等 Bug 可能会导致不可逆转的资金损失。
手动审计仍然很有价值,但速度慢、成本高,并且在开发过程中难以持续运行。现有工具在可用性和信任度方面留有空白:
1. **静态分析工具**(例如 Slither)会产生有用的技术发现,但其输出结果可能非常嘈杂,经验较少的开发者难以快速解读。
2. **纯粹的 LLM 审计员**在捏造代码中不存在的漏洞时,听起来可能会非常自信。
3. 开发者需要一个**快速、可用的反馈循环**:粘贴或上传 Solidity → 结构化的发现结果 → 严重程度排名 → 通俗易懂的英语解释和建议修复方案,且全程有证据支撑。
## 4. 为什么这个问题很重要
1. **真正的经济影响。** DeFi 和代币合约保护着巨大的价值。历史上的漏洞利用事件表明,微小的编码错误可能会演变成灾难性的损失。
2. **应用安全技能。** 将 Solidity、AMM 和 EVM 安全概念转化为可运行的工具,展现出了超越概念理解的应用层面的掌握能力。
3. **用于风险工作流的可信 AI。** AI 越来越多地被应用于风险、合规和安全场景中。这里困难的工程问题在于可信度:减少幻觉、提供证据支撑,并对严重程度进行排名。
4. **作品集相关性。** 本项目将在 Python、LLM、评估/guardrails 以及风险导向系统方面的经验延伸到了区块链安全工具中——这是 AI 工程、金融科技和安全相关职位的一个绝佳交叉点。
## 5. 相关工作
### 5.1 学术论文和研究方向
- **Oyente** — 针对以太坊智能合约的早期符号执行研究
- **Securify** — 针对 Solidity 的语义/合规模式分析方法
- **GPTScan (ICSE 2024)** 及相关的 LLM 漏洞检测研究 — 将 LLM 与程序分析相结合,并记录了误报/幻觉带来的挑战
- **漏洞分类和指南:** SWC Registry、DASP Top 10、Consensys 智能合约最佳实践
### 5.2 开源和工业界系统
- **Slither (Trail of Bits)** — 被广泛使用的静态分析工具,带有实用的检测器
- **Mythril** — 侧重于符号执行的分析工具
- **Solhint / Aderyn** — linting 和面向 AST 的检查工具
- **OpenZeppelin Contracts** — 安全的构建模块,可降低常见的实现风险
- **专业审计报告语料库** — 用于定性参考,了解发现结果是如何被编写、排名和解释的
### 5.3 本项目旨在解决的空白
大多数成熟的工具都是为专家审计员优化的。GuardScan 则针对**面向开发者的循环**进行优化:首先进行结构化检测,然后使用受该证据约束的 LLM 进行解释。其新颖之处不在于“取代 Slither”,而是为教育和早期开发工作流提供**可用的、基于事实根据的解释和优先级排序**,并将与 AMM 相关的检查与真实合约联系起来。
## 6. 提议的解决方案
### 6.1 产品概念
**GuardScan** 是一个极简的 AI 辅助 Solidity 漏洞扫描器。初步范围侧重于与 AMM / ERC-20 类型合约相关的模式,使用 SimpleAMM 实现及其故意包含漏洞的变体作为主要目标。
### 6.2 系统架构
```
Solidity source
|
|-- Deterministic detectors (heuristics / optional Slither JSON)
|-- Finding schema (id, severity, lines, evidence)
`-- LLM explainer (OpenRouter)
| explain + suggest fix ONLY for listed findings
v
CLI + simple Web UI report
```
### 6.3 核心能力
1. 接收 Solidity 文件或粘贴的源码
2. 运行一组精选的检测器(从 4–6 条规则开始),包括:
- 敏感函数上缺失 access control
- 状态更新前的外部调用(reentrancy 启发式检查)
- 没有 slippage 保护的 swap(`minOut` 或等价物)
- 不安全的 ERC-20 transfer / allowance 模式(简化版)
- `tx.origin` 身份验证反模式
3. 输出按严重程度排名的发现结果:`Critical` / `High` / `Medium` / `Info`
4. 仅使用 LLM 来解释发现结果并提出修复建议,遵循类似于受约束的 Text-to-SQL 系统的防护理念(结构化约束;拒绝没有证据支持的声明)
### 6.4 明确的模拟内容(用于≤5小时原型的范围控制)
| 组件 | MVP 处理方式 |
|---|---|
| 完整的形式化验证 / 符号执行 | 通过启发式算法 + fixture 合约进行模拟 |
| 仅针对链上 bytecode 的扫描 | 超出范围(源码优先) |
| 广泛的多链支持 | 仅限 Solidity 本地文件 |
| 完整的生产级 Slither 集成 | 可选;可能会 stub JSON 发现结果 |
### 6.5 复用先前的课程作业
| 先前的工作 | 在 GuardScan 中的复用 |
|---|---|
| [SimpleAMM](https://github.com/raghavendraprasath/automated-market-maker) (Solidity, Hardhat, tests/coverage) | 主要扫描目标 + 易受攻击的变体 |
| [Block Explorer AI / Text-to-SQL](https://github.com/raghavendraprasath/ai-generated-block-explorer) (OpenRouter, prompt constraints, Streamlit) | Prompt 设计、API 连接、UI/CLI 交付 |
| 课程安全主题(reentrancy, access control) | 检测器类别和评估 fixture |
## 7. 最小可行示例(最多 5 小时)
### 7.1 目标
快速演示一条端到端的工作路径,即使分析的深度有意做得比较浅。
### 7.2 五小时构建计划
| 小时 | 交付物 |
|---|---|
| 1 | 创建 2–3 个 fixture 合约(较安全的 AMM 代码片段、reentrancy 玩具、缺失的 owner 检查) |
| 2 | 构建带有 3–5 个检测器的 Python CLI,用于生成 JSON 发现结果 |
| 3 | 实现 OpenRouter prompt:仅解释提供的发现结果;不要捏造新的漏洞 |
| 4 | 添加最小的 Streamlit 或 HTML UI:粘贴代码 → 渲染报告 |
| 5 | 编写使用文档,截取屏幕截图,准备一次有脚本预演的演示运行 |
### 7.3 原型成功标准
1. 粘贴代码并在大约 30 秒内收到报告
2. 在已知的错误 fixture 上检测出至少一个 true positive
3. 确保 LLM 叙述引用的是检测器的证据,而不是执行无约束的“全面审计”
## 8. 每周计划
| 里程碑 | 目标 | 交付物 |
|---|---|---|
| **提案** | 7月24日当周 | 此代码库的 README / 提案 URL |
| **进度更新** | 7月31日 | 5–10 分钟的进度汇报:扩展的检测器、发现结果的 schema、误报说明、实时扫描演示 |
| **平行课程作业** | 7月31日 | SimpleAMM Web3 UI(单独作业);AMM 仍然是 GuardScan 的主要扫描目标 |
| **最终交付** | 8月7日 | 可用的 GuardScan 系统:CLI/UI、检测器集、小型的标注评估套件、包含局限性和相关工作的 README、最终汇报演示 |
### 预期的每周成果
1. **提案周:** 发布提案;完成≤5小时的模拟 MVP;演示 fixtures → 发现结果 → 基于事实根据的 LLM 解释
2. **至 7月31日:** 扩展检测器;强化发现结果的 schema;记录误报说明;实时扫描 SimpleAMM 及易受攻击的变体
3. **至 8月7日:** CLI/UI;组装小型的标注评估集(良好/糟糕的合约);可选地摄入 Slither JSON;最终确定演示材料
## 9. 风险与缓解措施
| 风险 | 缓解措施 |
|---|---|
| LLM 产生幻觉虚构出漏洞 | 检测器是事实来源;LLM 仅解释列出的发现结果 |
| 范围蔓延至完整的审计平台 | 限制检测器数量;模拟沉重的分析组件 |
| 与 Web3 UI 作业的工作量冲突 | 将最终项目保持在 Python/LLM 轨道上;将 Web3 UI 隔离为单独的交付物 |
| 与现有工具相比缺乏新意 | 强调基于事实根据的解释 UX、专注于 AMM 的检查以及客观诚实的评估 |
## 10. 完成定义
一个可用的本地或可通过 Web 访问的系统,该系统能够:
1. 扫描 Solidity 源码以查找一组特定的漏洞
2. 通过基于事实根据的 LLM 返回按严重程度排名的、人类可读的报告
3. 在 AMM 类型的合约上展示出清晰的结果
4. 诚实客观地记录相关工作、局限性和未来的工作
5. 支持每周的进度更新和最终的汇报演示
## 11. 原型使用说明(≤5小时的 MVP)
### 11.1 目录结构
```
guardscan/
README.md # proposal + usage (this file)
fixtures/ # vulnerable + safer Solidity samples
src/ # detectors, finding schema, LLM explainer, scanner
ui/app.py # Streamlit report surface
tests/ # detector tests
cli.py # JSON CLI entrypoint
requirements.txt
.env.example
```
### 11.2 设置
```
python -m venv .venv
# Windows:
.venv\Scripts\activate
# macOS/Linux:
# source .venv/bin/activate
pip install -r requirements.txt
copy .env.example .env # or: cp .env.example .env
# 可选:在 .env 中设置 OPENROUTER_API_KEY 以获取实时 grounded explanations
```
### 11.3 CLI 扫描 (JSON)
```
# Detectors + mock/live explanation
python cli.py fixtures/VulnerableVault.sol --pretty --mock-llm
# Detectors only
python cli.py fixtures/VulnerableAMM.sol --no-explain --pretty
# 更安全的 contrast fixture
python cli.py fixtures/SaferAMM.sol --pretty --mock-llm
```
### 11.4 Streamlit UI
```
streamlit run ui/app.py
```
粘贴 Solidity 代码或加载 fixture,然后点击 **Scan**。如果没有 `OPENROUTER_API_KEY`,解释将在 mock 模式下运行(仍然仅基于检测器的发现结果生成)。
### 11.5 测试
```
pytest -q
```
### 11.6 原型局限性(有意为之)
- 启发式检测器(非完整的 Slither / 符号执行)
- 仅限源码优先(无仅针对 bytecode 的扫描)
- LLM 必须仅解释列出的发现结果;它不会捏造新的问题
- Fixtures 是用于教学演示的程序——请勿部署它们
## 12. 相关代码库
- [automated-market-maker](https://github.com/raghavendraprasath/automated-market-maker) — SimpleAMM 智能合约(扫描目标)
- [ai-generated-block-explorer](https://github.com/raghavendraprasath/ai-generated-block-explorer) — 比特币 Text-to-SQL / LLM 工具模式在此处被复用
## License
MIT License。详见 [LICENSE](LICENSE)。
标签:DLL 劫持, Kubernetes, Solidity, 云安全监控, 加密, 区块链安全, 大语言模型, 智能合约审计, 漏洞扫描器, 逆向工具, 静态分析