giselleevita/vendor-red-team-passport

GitHub: giselleevita/vendor-red-team-passport

针对 OpenAI 兼容 LLM API 的自动化红队安全评估工具,通过十类对抗性攻击测试生成可验证的合规报告。

Stars: 0 | Forks: 0

# AI 供应商红队护照 [![CI](https://static.pigsec.cn/wp-content/uploads/repos/cas/ad/ad5834178f7599af9fdda11629d49cae07f2997beec49821b2920eff5bfd50e7.svg)](https://github.com/giselleevita/vendor-red-team-passport/actions/workflows/ci.yml) [![部署](https://static.pigsec.cn/wp-content/uploads/repos/cas/09/09f756d4dd04875d74f0b024557cfa795f1d6b01ea6221151704d7f028b39310.svg)](https://github.com/giselleevita/vendor-red-team-passport/actions/workflows/deploy.yml) ![覆盖率](https://img.shields.io/badge/attack%20classes-A1--A10%20✓-brightgreen) ![版本](https://img.shields.io/badge/version-0.1.1-green) ![Python](https://img.shields.io/badge/python-3.11%2B-blue) ![许可证](https://img.shields.io/badge/license-Apache--2.0-green) Vendor Red-Team Passport 自动化执行针对 OpenAI 兼容 LLM API 的结构化对抗性测试,并生成可移植的 **Passport Report**:JSON + HTML 输出,包含攻击覆盖率、评分闸门、经过脱敏的证据,以及带有可选 HMAC 签名的防篡改清单。 专为需要对 LLM API 安全性进行可重现、供应商中立评估的安全团队、采购审核员和合规审计员而设计。 **运行时强制策略:**如需阻止已部署 agent 中的不安全工具调用,请参阅 [agent-security-gate](https://github.com/giselleevita/agent-security-gate) —— 这是此攻击性评估工具的防御性补充。 ![AI 供应商红队护照仪表板](https://raw.githubusercontent.com/giselleevita/vendor-red-team-passport/main/docs/screenshots/dashboard.png) 有关设计原理和评估权衡,请参阅 [docs/CASE_STUDY.md](docs/CASE_STUDY.md)。 ## 安全控制 - JWT 身份验证和基于角色的授权保护非健康检查 endpoint。 - 在执行运行和访问护照前会检查租户所有权。 - `POST /runs` 受到速率限制,且请求体上限为 10 MB。 - 审计事件可使用 `VENDOR_RTP_MANIFEST_HMAC_KEY` 进行 HMAC 签名,并使用 `scripts/verify_audit_log.py` 进行验证。 - 启动时会拒绝在启用身份验证的情况下缺失或使用弱 HS256 密钥,并拒绝在没有 DSN 的情况下使用 SQL 作业存储。 仅在执行实时供应商评估时才需要 Featherless API key;离线测试和报告查看无需该 key 也可正常使用。 ## 审核员快速入门 如需进行快速技术审核: 1. 运行 `pytest tests/ -v --tb=short --ignore=tests/e2e`,在没有供应商 API key 的情况下验证离线测试套件。 2. 设置 `AUTH_JWT_HS256_SECRET=local-demo-secret`,并使用 `python scripts/make_demo_jwt.py` 生成本地 bearer token。 3. 使用 `uvicorn apps.api.main:app --reload --port 8000` 启动 API。 4. 使用 `Authorization: Bearer ` 调用受保护的路由;有关 curl 示例,请参阅 `docs/demo-authz.md`。 5. 查看 `data/coverage.json` 和 `docs/CASE_STUDY.md` 以了解 OWASP/NIST 交叉映射和设计原理。 本项目旨在作为治理和采购工件:可重复的 LLM 供应商测试、确定性的评分闸门、脱敏的证据,以及无需暴露原始模型输出即可共享的 Passport Report。 ## 核心功能 - 针对配置的 OpenAI 兼容 LLM API 运行 **10 种攻击类别 (A1–A10)** - 根据确定性闸门对每个类别进行评分(通过 / 失败 / 部分) - 生成 JSON + HTML 格式的 **Passport Report**,无需原始模型输出即可共享 - 提供服务器端渲染的仪表板页面(`/`、`/runs`、`/compare`),用于运行管理和比较 - 支持多模型基准比较 (`/compare`) - 将结果映射到 OWASP Top 10 for LLMs 和 NIST AI RMF ## 攻击类别 | ID | 类别 | OWASP LLM | NIST | 描述 | |---|---|---|---|---| | A1 | Prompt Injection | LLM01 | SI-10 | 直接和间接的指令覆盖尝试 | | A2 | Insecure Output Handling | LLM02 | SI-15 | 输出中的代码执行、XSS、markdown 注入 | | A3 | Sensitive Information Disclosure | LLM06 | SC-28 | System prompt 泄露、PII、输出中的凭据 | | A4 | Model Denial of Service | LLM04 | SC-5 | 资源耗尽、重复循环 | | A5 | Training Data Poisoning | LLM03 | SI-3 | 成员推理、逐字复现 | | A6 | Insecure Plugin Design | LLM07 | CM-7 | 第三方插件和工具信任滥用 | | A7 | Excessive Agency | LLM08 | AC-6 | 未经授权的工具调用、范围蔓延 | | A8 | Overreliance | LLM09 | RA-3 | 模型反演、fine-tuning 信号提取 | | A9 | Output Schema Compliance | LLM10 | SI-7 | 结构化输出契约强制执行 | | A10 | Supply Chain Vulnerabilities | LLM05 | SA-12 | 第三方模型和依赖项风险 | 有关完整的 OWASP × NIST × 测试交叉映射,请参阅 `data/coverage.json`。 ## Passport 报告 每次运行会生成: - `passport.json` — 包含分数、闸门结果、OWASP 交叉映射的机器可读结果 - `passport.html` — 面向利益相关者共享的人类可读报告 - `manifest.json` — 带有可选 HMAC 签名的工件哈希值(配置后) - 仅包含脱敏证据 — 不持久化任何原始模型输出 生成的报告存储在 `reports/runs//` 下,并通过经过身份验证的运行范围路由提供服务。 ## 架构 ``` flowchart TD Analyst[Analyst / CI] --> API[FastAPI API + dashboard] API --> Profiles[Vendor profiles] API --> Runs[Run manager] Runs --> Attacks[Attack runner A1-A10] Attacks --> Gates[Deterministic scoring gates] Gates --> Coverage[OWASP / NIST crosswalk] Gates --> Store[Job store] Store --> Passport[Tamper-evident Passport Report] Passport --> JSON[passport.json] Passport --> HTML[passport.html] ``` ## 快速入门 ``` git clone https://github.com/giselleevita/vendor-red-team-passport cd vendor-red-team-passport python -m venv .venv source .venv/bin/activate pip install -e .[dev] cp .env.example .env export AUTH_JWT_HS256_SECRET=local-demo-secret export TOKEN=$(python scripts/make_demo_jwt.py) uvicorn apps.api.main:app --reload --port 8000 ``` 检查: - `curl http://127.0.0.1:8000/health` — 健康检查 - `curl -H "Authorization: Bearer $TOKEN" http://127.0.0.1:8000/profiles` — 经过身份验证的配置文件列表 - `curl -H "Authorization: Bearer $TOKEN" http://127.0.0.1:8000/runs` — 经过身份验证的运行视图 ### Docker ``` docker compose up -d --build ``` ## API Endpoints | 方法 | Endpoint | 描述 | |---|---|---| | `GET` | `/health` | 健康检查 | | `POST` | `/runs` | 启动新的评估运行 | | `GET` | `/runs/jobs/{job_id}` | 轮询运行状态 | | `GET` | `/passports/{run_id}` | 获取 Passport Report | | `GET` | `/profiles` | 列出可用的供应商配置文件 | | `GET` | `/metrics` | 汇总的评分指标 | | `GET` | `/compare` | 多模型基准比较 | ## 供应商配置文件 配置文件以 YAML 文件形式存放在 `profiles/` 中。每个配置文件定义: - 目标 API endpoint 和身份验证 - 攻击类别选择(子集或全部 A1–A10) - 评分闸门阈值 - OWASP/NIST 交叉映射覆盖 添加新的供应商目标无需修改代码 —— 只需将一个 YAML 文件放入 `profiles/`。 ## 运行测试 ``` # 所有单元测试(无需 API key — 完全离线) pytest tests/ -v --tb=short --ignore=tests/e2e # 仅覆盖 Attack class pytest tests/api/test_attack_classes.py -v # 包含覆盖率报告的完整套件 pytest tests/ --cov=apps --cov-report=term-missing ``` ## 部署 有关 Railway/Render 环境变量,请参阅 [`SECRETS_SETUP.md`](SECRETS_SETUP.md);有关生产运维,请参阅 [`ops/runbook.md`](ops/runbook.md)。 要通过 Railway 启用自动部署:请将 `RAILWAY_TOKEN` 添加到 GitHub → Settings → Secrets → Actions。 Render 部署配置:`render.yaml` ## 合规交叉映射 | 框架 | 映射 | |---|---| | OWASP Top 10 for LLMs | A1–A10 映射到 LLM01–LLM10 | | NIST AI RMF | 治理、映射、测量、管理 | | ISO/IEC 42001 | AI 风险评估与文档记录 | ## 路线图 - [x] 10 种攻击类别框架 (A1–A10) - [x] Passport Report (JSON + HTML) - [x] FastAPI 后端 + 服务器端渲染的仪表板 - [x] Docker + Railway/Render 部署 - [x] 脱敏证据包(无原始输出) - [x] 完整的 A1–A10 确定性测试用例 — 30 项测试 + OWASP×NIST 交叉映射 (`data/coverage.json`) - [ ] `/compare` 上的多模型比较 UI (#3) - [x] v0.1.0 发布标签 + 脱敏样本 Passport - [ ] 用于 Passport 结果的 SIEM/webhook 导出 - [ ] CLI 运行器 (`passport run --profile vendor.yaml`) ## 道德与范围 此工具仅供**在授权的实验室环境中进行防御性测试**。 未经明确的书面授权,请勿针对 API 运行。 所有证据均已脱敏 —— 原始模型输出绝不会被持久化。 ## 相关项目 | 层级 | 项目 | |---|---| | **强制策略**(运行时) | [agent-security-gate](https://github.com/giselleevita/agent-security-gate) — 用于工具调用决策的 OPA 策略网关 | | **治理**(指导) | [security-compliance-copilot](https://github.com/giselleevita/security-compliance-copilot) — 带有引用的 NIST/CISA RAG 助手 | | **证据** | [proofrail-evidence-api](https://github.com/giselleevita/proofrail-evidence-api) — 已签名的合规证据包 | ## 许可证 版权所有 (c) 2026 Giselle Evita Koch。 基于 [Apache License 2.0](LICENSE) 授权。
标签:API安全测试, CISA项目, DLL 劫持, 人工智能安全, 合规性, 大语言模型, 红队评估, 自动化攻防, 请求拦截, 逆向工具