Gemz-AACT/ai-security-scanner
GitHub: Gemz-AACT/ai-security-scanner
一款自动化AI安全扫描框架,针对LLM和AI API进行红队测试以发现提示词注入、越狱等漏洞并生成专业安全报告。
Stars: 3 | Forks: 0
# 🔐 AI 模型安全扫描器
一个自动化的 AI 安全测试框架,利用双层检测机制(结合基于规则的模式匹配和语义 AI 分析)来识别 LLMs 和 AI API 中的漏洞。
由 [Maryssa L.](https://github.com/Gemz-AACT) 开发 —— 道德黑客与 AI 安全工程师。
## 🎯 功能简介
大多数公司在部署 AI 模型时未对其测试安全漏洞。该框架会像攻击者一样自动对 AI API 进行红队测试,随后生成一份专业的安全报告,准确展示 AI 的脆弱点以及每个弱点的严重程度。
## ⚡ 功能
- 🔍 **Prompt Injection 测试** — 检测覆盖 AI 指令的尝试
- 🔑 **System Prompt 提取** — 测试模型是否会泄露其 system prompt
- 🕵️ **间接 Prompt Injection** — 通过 RAG 文档、工具输出、电子邮件进行注入
- 💣 **模型 DoS / 资源耗尽** — token 轰炸、死循环攻击
- ⚠️ **不安全的输出处理** — 检测输出中的 XSS、SQLi、SSRF、XXE payload
- 🧬 **训练数据提取** — 记忆攻击、PII 和凭证泄露
- 💧 **数据泄露检测** — 识别 AI 泄露内部配置的情况
- 🔓 **越狱测试** — 检测绕过安全准则的行为
- 🧠 **语义 AI 层** — 使用 LLaMA 分析回复,以发现规则可能遗漏的细微漏洞
- 🌐 **多 Provider 支持** — 兼容 OpenAI、Anthropic、Gemini 和 Ollama
- 📦 **自定义 Payload 加载器** — 为每个测试放入你自己的 .json payload 文件
- 📊 **CVSS 式风险评分** — 每个发现都按 0-100 分进行评分并带有严重性评级
- 🎯 **置信度评级** — 显示扫描器对每个发现的确定程度
- 📄 **专业 PDF 报告** — 适合技术和非技术人员阅读的详细报告
- 💾 **JSON 导出** — 用于进一步分析的原始结果
- 🖥️ **详细模式** — `--verbose` 标志可显示完整的 AI 回复
- ⏱️ **扫描时长跟踪** — 记录每次扫描的耗时
## 🛠️ 技术栈
- Python 3.x
- Requests — API 通信
- Rich — 精美的 CLI 输出
- ReportLab — PDF 报告生成
- Groq/LLaMA — 语义分析层
## 📦 安装说明
```
git clone https://github.com/Gemz-AACT/ai-security-scanner
cd ai-security-scanner
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
```
## 🚀 使用说明
**标准扫描(全部 8 个测试模块):**
```
python scanner/main.py --provider openai --api-url YOUR_API_ENDPOINT --api-key YOUR_API_KEY --model YOUR_MODEL_NAME
```
**仅运行特定测试:**
```
python scanner/main.py --provider openai --api-url YOUR_API_ENDPOINT --api-key YOUR_API_KEY --model YOUR_MODEL_NAME --tests prompt-injection,jailbreak,system-prompt-extraction
```
**详细扫描:**
```
python scanner/main.py --provider openai --api-url YOUR_API_ENDPOINT --api-key YOUR_API_KEY --model YOUR_MODEL_NAME --verbose
```
**自定义 payload:**
```
python scanner/main.py --provider openai --api-url YOUR_API_ENDPOINT --api-key YOUR_API_KEY --model YOUR_MODEL_NAME --payloads-dir ./my-custom-payloads/
```
## 🌐 Provider 示例
**Groq(免费 —— 推荐用于测试):**
```
python scanner/main.py --provider openai --api-url https://api.groq.com/openai/v1/chat/completions --api-key YOUR_GROQ_KEY --model llama-3.1-8b-instant
```
**Anthropic Claude:**
```
python scanner/main.py --provider anthropic --api-url https://api.anthropic.com/v1/messages --api-key YOUR_ANTHROPIC_KEY --model claude-haiku-4-5
```
**Google Gemini:**
```
python scanner/main.py --provider gemini --api-url https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent --api-key YOUR_GEMINI_KEY --model gemini-2.0-flash
```
**Ollama(本地):**
```
python scanner/main.py --provider ollama --api-url http://localhost:11434/api/chat --api-key local --model llama3.2
```
## 🧪 可用测试
| 测试 Key | 测试内容 |
|---|---|
| `prompt-injection` | 直接尝试覆盖 AI 指令 |
| `data-leakage` | AI 泄露内部配置或上下文 |
| `jailbreak` | 尝试绕过安全准则 |
| `system-prompt-extraction` | 提取模型的 system prompt |
| `indirect-injection` | 隐藏在文档、电子邮件、工具输出、RAG 中的注入 |
| `model-dos` | 通过 token 轰炸和无限任务导致资源耗尽 |
| `insecure-output` | 模型生成 XSS、SQLi、SSRF、XXE payload |
| `training-extraction` | 来自训练数据的 PII、凭证和逐字文本 |
## 📦 自定义 Payload
从 `payloads/custom-templates/` 复制一个模板,填入你的 payload,然后将扫描器指向你的文件夹:
```
cp payloads/custom-templates/jailbreak_custom.json my-payloads/jailbreak_myprogram.json
python scanner/main.py --payloads-dir ./my-payloads/ ...
```
文件名必须包含测试 key 以便自动检测。
## 📸 输出示例


## 📄 报告示例
`sample-report/` 文件夹中提供了一份完整的 PDF 样本报告。
该报告包含:
- 安全态势评分 (0-100)
- 风险评分和置信度说明图例
- 按严重程度排列的关键首要发现
- 每项测试的详细结果及完整解释
- 专业的修复建议
## 📁 项目结构
```
ai-security-scanner/
├── scanner/
│ ├── main.py
│ ├── providers/
│ │ ├── openai_provider.py
│ │ ├── anthropic_provider.py
│ │ ├── gemini_provider.py
│ │ └── ollama_provider.py
│ ├── tests/
│ │ ├── prompt_injection.py
│ │ ├── data_leakage.py
│ │ ├── jailbreak.py
│ │ ├── system_prompt_extraction.py
│ │ ├── indirect_prompt_injection.py
│ │ ├── model_dos.py
│ │ ├── insecure_output_handling.py
│ │ └── training_data_extraction.py
│ ├── semantic/
│ │ └── analyzer.py
│ ├── scoring/
│ │ └── scorer.py
│ └── reporter/
│ └── report_generator.py
├── payloads/
│ ├── injection_payloads.json
│ ├── jailbreak_payloads.json
│ ├── leakage_payloads.json
│ ├── system_prompt_extraction_payloads.json
│ ├── indirect_prompt_injection_payloads.json
│ ├── model_dos_payloads.json
│ ├── insecure_output_handling_payloads.json
│ ├── training_data_extraction_payloads.json
│ └── custom-templates/
├── sample-report/
├── reports/
├── config.py
└── requirements.txt
...
```
## 🔬 工作原理
**第一层 —— 规则引擎:**
跨 4 个层级扫描 AI 回复中已知的漏洞模式:
- 第 1 层:直接泄露(严重性 HIGH)
- 第 2 层:部分服从(严重性 MEDIUM)
- 第 3 层:主题规避(严重性 LOW)
- 第 4 层:间接暗示(严重性 LOW)
**第二层 —— 语义 AI 分析:**
每个回复都会发送给 LLaMA 进行深度语义分析。LLaMA 扮演安全专家的角色,评估规则可能遗漏的意图、上下文和细微操纵。
**第三层 —— 评分组合:**
规则评分(权重 40%)+ 语义评分(权重 60%)= 最终风险评分。如果两层结果一致 —— 置信度上升。如果它们不一致 —— 较严重的发现优先。
## 🎯 自动 Bug Bounty 报告生成器
每次扫描后,都会自动生成报告并整理到子文件夹中:
```
reports/
├── pdf/ ← PDF security report
├── json/ ← Raw scan data
├── hackerone/ ← Ready-to-submit HackerOne reports
└── bugcrowd/ ← Ready-to-submit Bugcrowd reports
```
你也可以针对之前的任何扫描手动运行生成器:
```
python scanner/reporter/bug_bounty_report.py \
--json reports/json/scan_TIMESTAMP.json \
--platform both \
--program "Program Name" \
--target-url https://api.target.com \
--min-score 50
```
每个发现都会生成一份完整的报告,包含:
- 映射到 OWASP LLM Top 10 (2025) 的标题
- CVSS 评分和严重性评级
- 作为概念验证的确切 payload
- 包含请求格式的完整复现步骤
- 影响说明
- 修复建议
## 🛡️ OWASP LLM Top 10 (2025) 映射
每个发现都会自动打上 [OWASP LLM Top 10 (2025)](https://genai.owasp.org/llm-top-10/) 的标签 —— 这是 AI 安全漏洞的行业标准。
| 我们的测试 | OWASP ID | 漏洞 |
|---|---|---|
| Prompt Injection | LLM01 | Prompt Injection |
| 间接 Prompt Injection | LLM01 | Prompt Injection |
| Jailbreak | LLM01 / LLM06 | Prompt Injection / 过度代理 |
| System Prompt 提取 | LLM07 | System Prompt 泄露 |
| 数据泄露 | LLM02 | 敏感信息泄露 |
| 训练数据提取 | LLM02 | 敏感信息泄露 |
| 不安全的输出处理 | LLM05 | 输出处理不当 |
| 模型 DoS | LLM10 | 无限制消耗 |
OWASP ID 会出现在 PDF 报告和 JSON 输出的每一个发现中。
## 🤖 GitHub Actions CI
直接从 GitHub 运行扫描器 —— 无需本地设置。
1. 前往本仓库的 **Actions** 标签页
2. 点击 **AI Security Scan** → **Run workflow**
3. 填入你的目标 API 详情
4. 完成后从 **Artifacts** 部分下载 PDF 报告
该工作流需要在你的仓库设置中配置一个 `SCAN_API_KEY` secret,其值为你的 API key。
```
# 通过 GitHub Actions UI 手动触发
on:
workflow_dispatch:
inputs:
api_url: # Target AI API endpoint
model: # Model name to test
provider: # openai | anthropic | gemini | ollama
tests: # comma-separated test keys or 'all'
```
## ⚠️ 免责声明
本工具仅供**授权的安全测试**使用。仅对你拥有或获得明确测试许可的 AI API 使用。作者不对滥用行为负责。
## 👤 作者
**Maryssa L.** — 道德黑客 | Bug Bounty 研究员 | AI 安全工程师
- GitHub: [@Gemz-AACT](https://github.com/Gemz-AACT)
- LinkedIn: [linkedin.com/in/MaryssaLeBlanc](https://www.linkedin.com/in/MaryssaLeBlanc)
- Bug Bounty: Bugcrowd / HackerOne
## 📄 许可证
MIT License — 详情请参阅 [LICENSE](LICENSE)。
标签:AI安全, Chat Copilot, CISA项目, DLL 劫持, 大语言模型, 字符串匹配, 密钥管理, 逆向工具, 配置错误