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 以便自动检测。 ## 📸 输出示例 ![输出示例](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/9a71288f53060134.png) ![输出示例](https://raw.githubusercontent.com/Gemz-AACT/ai-security-scanner/main/Screenshot3.png) ## 📄 报告示例 `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 劫持, 大语言模型, 字符串匹配, 密钥管理, 逆向工具, 配置错误