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, 多智能体系统, 安全规则引擎, 请求拦截, 逆向工具