Ronald-PH/avapt
GitHub: Ronald-PH/avapt
一款基于本地 Ollama 模型的 AI 驱动静态漏洞评估工具,通过语义分析替代传统正则规则,实现完全本地化、保护代码隐私的深度安全审计。
Stars: 0 | Forks: 0
**AI 驱动的自动化漏洞评估与渗透测试**
[](https://python.org)
[](https://ollama.com)
[](https://flask.palletsprojects.com)
[](LICENSE)
[](https://github.com/Ronald-PH)
*纯语义 AI 分析 — 无 regex 模式,无规则文件,无误报噪音。*
### Web Dashboard 界面
*主仪表盘展示了扫描配置与实时进度追踪*
### 报告格式
aVAPT 生成三种格式的综合报告,每种格式适用于不同的工作流:
| 格式 | 最适合 | 输出 |
|--------|----------|---------|
| **HTML** | 基于浏览器的审查,交互式过滤,高管演示 | 查看 |
| **JSON** | CI/CD pipeline,SIEM 集成,自定义自动化 | 查看 |
| **PDF** | 文档记录,离线分发,客户交付物 | 查看 |
*主仪表盘展示了扫描配置与实时进度追踪*
*点击展开截图 — 来自实际 aVAPT 扫描的示例*
## 什么是 aVAPT?
aVAPT 是一款本地优先、AI 驱动的**静态漏洞评估 (SAST)** 工具,它将您的整个源代码发送给本地运行的 [Ollama](https://ollama.com) 模型进行深度的语义分析。传统的 SAST 工具是通过将 regex 与已知签名进行匹配来工作的,与此不同,aVAPT 就像资深安全工程师一样对您的代码进行推理 —— 追踪数据流、理解上下文,并识别出那些模式匹配永远无法捕捉的业务逻辑漏洞。
所有操作都在您的机器上本地运行。没有云端传输,没有遥测数据,不需要 API 密钥。
## 核心功能
- **纯 AI 分析** — 每个文件的完整源代码都会发送给 AI。没有 regex,没有模式匹配,没有规则数据库。
- **全语义推理** — 模型会进行端到端的数据流追踪,理解框架上下文,并检测逻辑层面的漏洞。
- **本地且私密** — 由 [Ollama](https://ollama.com) 提供支持。您的代码永远不会离开您的机器。
- **多模型支持** — 兼容任何 Ollama 模型:`deepseek-r1`、`codellama`、`deepseek-coder`、`llama3`、`mistral` 等。
- **Flask Web UI** — 基于浏览器的仪表盘,提供实时扫描进度、可过滤的漏洞发现表格以及一键下载功能。
- **三种导出格式** — HTML 报告、JSON(用于 CI/SIEM 集成)和 PDF。
- **依赖项 CVE 扫描** — 结合包含已知存在漏洞的真实 CVE ID 版本的精选表,检查 `package.json` 和 `requirements.txt`。
- **并行扫描** — 可配置 worker 数量,以对多个文件进行并发的 AI 分析。
- **原生 Windows 支持** — 在所有平台上(包括带有 cp1252 终端的 Windows)均能安全处理 UTF-8 编码。
## 可检测的漏洞类别
AI 会被指示识别(但不限于)以下类别:
| 类别 | 示例 |
|---|---|
| 注入 | SQL, NoSQL, LDAP, OS Command, Code, Template, XPath |
| 客户端 | XSS (Reflected, Stored, DOM), Open Redirect, CSRF |
| 服务端 | SSRF, XXE, Path Traversal, LFI, RFI |
| 身份验证与访问 | Authentication Bypass, Broken Auth, IDOR, Privilege Escalation, Mass Assignment |
| 密码学 | JWT 弱点,弱算法 (MD5/SHA1/DES),不安全的随机性 |
| 密钥与凭证 | Hardcoded Credentials, API Keys, Tokens |
| 逻辑 | 业务逻辑缺陷,Race Conditions,Type Confusion |
| 内存安全 | Buffer Overflow, Use-After-Free (C/C++/Rust) |
| 依赖项 | npm 和 pip 包中的已知 CVE |
| 其他 | 不安全的反序列化,信息泄露,调试接口暴露 |
## 项目结构
```
avapt/
│
├── app.py # Flask web application & REST API
│
├── core/
│ ├── config.py # Constants, AI system prompt, language map, CVE table
│ ├── ollama_client.py # Ollama REST API wrapper
│ ├── file_utils.py # File collection, language detection, dedup helpers
│ ├── analyzer.py # AI file analyser — builds prompts, parses responses
│ ├── dependency_scanner.py # package.json / requirements.txt CVE scanner
│ ├── scanner.py # Main orchestrator — phases 1 & 2, progress callbacks
│ ├── report_html.py # Self-contained HTML report generator
│ └── report_pdf.py # PDF report generator (requires reportlab)
│
├── templates/
│ ├── index.html # Scanner dashboard (scan form + live progress)
│ └── report.html # Report viewer with filterable findings table
│
└── static/
├── img/
│ └── avapt.png # Banner image
├── css/
│ ├── app.css # Shared styles (dark theme)
│ └── report.css # Report-specific styles
└── js/
├── app.js # Scan form, progress polling, jobs list
└── report.js # Findings table filtering & expand/collapse
```
## 环境要求
- **Python 3.10+**
- 在本地运行 **Ollama**,并至少拉取了一个模型
```
# 安装 Ollama
# Windows / macOS: https://ollama.com/download
# Linux:
curl -fsSL https://ollama.com/install.sh | sh
# 拉取 model(选择一个)
ollama pull deepseek-r1:7b # tested
ollama pull codellama
ollama pull deepseek-coder
ollama pull llama3
ollama pull mistral
```
**Python 依赖项:**
```
# 必需
pip install flask
# 可选 — 仅 PDF 导出需要
pip install reportlab
```
无其他依赖项。Ollama 客户端使用 Python 内置的 `urllib`。
## 安装说明
```
# 克隆 repository
git clone https://github.com/Ronald-PH/avapt.git
cd avapt
# 安装 dependencies
pip install flask
# 可选 PDF 支持
pip install reportlab
```
## 使用说明
### Web UI
```
# 启动 Flask server
python app.py
# 在 browser 中打开
http://localhost:5000
```
仪表盘允许您:
- 输入自定义 prompt
- 输入目标路径(目录或单个文件)
- 选择您的 Ollama URL 和模型
- 设置并行 worker 数量
- 逐文件查看实时扫描进度
- 在浏览器中查看交互式报告
- 下载为 HTML、JSON 或 PDF 格式
## 报告
### HTML 报告
一个独立的、深色主题的仪表盘,您可以在任何浏览器中打开:
- 概览卡片(严重 / 高危 / 中危 / 低危 的数量统计)
- 严重性分布柱状图
- 可过滤的漏洞发现表格 — 按严重程度或来源(AI / 依赖项)过滤
- 可展开的行 — 点击任意漏洞即可查看完整详情:
- 精确的文件路径和行号
- 根本原因解释
- 完整的攻击路径(入口点、前提条件、影响、发生概率)
- 可操作的修复指导
- 带有语法高亮的代码片段
- 包含整体风险评级的执行摘要
### JSON 报告
用于 CI pipeline、SIEM 摄取或自定义工具的可机读输出:
```
{
"meta": {
"tool": "aVAPT",
"version": "1.0.0",
"scan_root": "/var/www/html",
"timestamp": "2026-06-02T10:00:00+00:00",
"files_scanned": 42,
"code_files": 18,
"languages": ["PHP", "JavaScript"],
"ai_model": "gpt-oss:20b",
"ollama_url": "http://localhost:11434"
},
"summary": { "critical": 3, "high": 5, "medium": 4, "low": 2 },
"source_counts": { "ai": 12, "dependency": 2 },
"findings": [
{
"type": "SQL Injection",
"severity": "critical",
"severity_score": 9.5,
"confidence": "high",
"cwe": "CWE-89",
"capec": "CAPEC-66",
"cve_id": null,
"file": "/var/www/html/app/Http/Controollers/UserController.php",
"location": { "from_line": 42, "to_line": 44 },
"code": { "language": "PHP", "snippet": "..." },
"attack_path": {
"entry_point": "GET parameter ?id=",
"prerequisites": ["Unauthenticated access to endpoint"],
"impact": "Full database read/write access",
"likelihood": "High"
},
"explanation": "...",
"remediation": "...",
"source": "ai"
}
]
}
```
### PDF 报告
一份排版专业的 A4 文档,包含:
- 带有扫描元数据的深色主题封面
- 风险摘要卡片
- 完整的漏洞发现表格
- 针对每个漏洞的详情页,包含解释、攻击路径、修复建议和代码片段
需要 `reportlab`:
```
pip install reportlab
```
## REST API
Flask Web 服务器为自动化暴露了一个简单的 API:
| 方法 | Endpoint | 描述 |
|---|---|---|
| `POST` | `/scan` | 启动扫描。返回 `{ job_id }` |
| `GET` | `/job/标签:AES-256, AI风险缓解, DLL 劫持, Flask, LNA, Python, 人工智能, 大语言模型, 无后门, 漏洞评估, 用户模式Hook绕过, 网络测绘, 逆向工具, 错误基检测, 静态代码分析