omnomkar/llm-scanner
GitHub: omnomkar/llm-scanner
基于 Garak 与 PyRIT 的 LLM API 安全扫描器,对越狱、提示注入和数据泄露等漏洞进行自动化探测、严重程度分级,并通过 CI/CD 流水线实现安全门控。
Stars: 0 | Forks: 0
# llm-scanner
## 功能简介
llm-scanner 使用两个互补的框架对 LLM API endpoint 进行安全漏洞探测。Garak (NVIDIA) 会在 DAN jailbreak、prompt injection 和垃圾信息/毒性检测等类别下运行包含约 5500 个自动化探测项的库。PyRIT (Microsoft) 则执行有针对性的红队攻击策略,包括 jailbreak 升级、system prompt 泄露和直接 injection。检测结果会经过去重和严重程度分类,并输出为 JSON 和 Markdown 报告,如果检测到严重漏洞,CI pipeline 将以状态码 1 退出。
## 架构
```
vulnerable Flask target
↓
┌─────────────────────┐
│ garak_runner.py │ ← ~5500 automated probes (DAN, promptinject, av_spam)
│ pyrit_runner.py │ ← targeted attacks (jailbreak, leakage, injection)
└─────────────────────┘
↓
aggregator.py ← deduplication, severity classification
↓
reporter.py ← JSON + Markdown output
↓
GitHub Actions ← CI/CD with severity gating (exits 1 on critical)
```
## 检测到的漏洞类别
| 类别 | 严重程度 | 检测方法 | 示例 |
|---|---|---|---|
| Jailbreak | 严重 | Garak DAN 探测项 + PyRIT | 模型绕过安全防护机制 |
| System Prompt 泄露 | 严重 | PyRIT 畸形 payload | System prompt + SSN 通过错误处理程序暴露 |
| Prompt Injection | 高危 | Garak promptinject + PyRIT | 被注入的指令被回显或执行 |
| 毒性 | 低危 | Garak av_spam_scanning | 已知的恶意特征未被过滤 |
## 扫描结果 Schema
```
{
"id": "uuid4",
"source": "garak | pyrit",
"category": "jailbreak | prompt_injection | system_prompt_leakage | ...",
"severity": "critical | high | medium | low",
"prompt": "attack prompt used",
"response": "model response",
"rationale": "why this is classified at this severity"
}
```
## 本地运行
```
git clone https://github.com/omnomkar/llm-scanner
cd llm-scanner
python3 -m venv venv && source venv/bin/activate
pip install -r requirements.txt
python scanner/main.py
```
## CI/CD
每次推送到 `master` 分支都会触发 GitHub Actions 工作流。单元测试首先在 `test` 作业中运行,如果测试失败,则会跳过扫描。测试通过后,`scan` 作业将启动存在漏洞的 Flask 目标,对其运行完整的扫描器 pipeline,并将 Markdown 报告作为 workflow artifact 上传。如果检测到严重的结果,pipeline 将以状态码 1 退出,导致该作业在 Actions UI 中显示为红色,这是预期的行为,作为一种严格的安全门控,在存在严重漏洞时阻止合并。
## 技术栈
- **Garak 0.15.1** (NVIDIA) — 自动化 LLM 探测库
- **PyRIT 0.14.0** (Microsoft) — 红队攻击框架
- **Flask** — 故意设计为存在漏洞的目标 endpoint
- **pytest** — 用于聚合逻辑的单元测试
- **GitHub Actions** — 带有严重程度门控的 CI/CD
- **Docker** — 用于可复现扫描的容器化目标
标签:AI安全, Chat Copilot, Garak, PyRIT, 多智能体系统, 安全规则引擎, 请求拦截, 逆向工具