pjcampbe11/ai-redteam-eng

GitHub: pjcampbe11/ai-redteam-eng

面向AI管道、MCP集成和Agentic架构的安全工程工具包,提供从代码审计、红队对抗测试到运行时防护和云安全加固的全链路能力。

Stars: 1 | Forks: 0

# 🛡️ ai-redteam-eng ### 面向 AI pipeline、MCP 集成和 Agentic 架构的安全工程 *安全地设计它们。蓄意地破坏它们。为生产环境加固它们。* ![License](https://img.shields.io/badge/license-Apache--2.0-blue) ![Python](https://img.shields.io/badge/python-3.10%2B-blue) ![Tests](https://img.shields.io/badge/tests-33%20passing-brightgreen) ![Dependencies](https://img.shields.io/badge/core-dependency--free-success) ![OWASP](https://img.shields.io/badge/OWASP-LLM%20Top%2010%20(2025)-orange) ![MITRE ATLAS](https://img.shields.io/badge/MITRE-ATLAS%20TTPs-red)
本仓库一半是**实战指南**,一半是**工具包**。[深度文档](#-documentation) 解释了*如何*保护 AI 系统的各个层面;而 `src/airte/` 包为您提供了 **可运行、经过测试的代码**,涵盖那些需要它的部分 —— 一个 MCP 漏洞扫描器、一个 参考性加固 MCP 服务器、一个映射到 MITRE ATLAS 的对抗性红队测试框架、 runtime guardrails、云安全辅助工具、供应链审计以及数据 pipeline DLP。 ## 📑 目录 1. [为什么会有这个项目](#-why-this-exists) 2. [功能](#-features) 3. [架构](#-architecture) 4. [仓库结构](#-repository-structure) 5. [安装与快速开始](#-installation--quickstart) 6. [第一部分 — Model Context Protocol (MCP) 安全](#section-1--model-context-protocol-mcp-security) 7. [第二部分 — AI 威胁建模](#section-2--ai-threat-modeling) 8. [第三部分 — AI 系统安全:构建 / 破坏 / 加固](#section-3--ai-system-security-build--break--harden) 9. [第四部分 — 面向 AI 工作负载的云安全](#section-4--cloud-security-for-ai-workloads) 10. [第五部分 — 保护 Agentic AI 系统](#section-5--securing-agentic-ai-systems) 11. [第六部分 — 安全默认模式](#section-6--secure-by-default-patterns) 12. [第七部分 — MCP 安全架构审查](#section-7--mcp-security-architecture-review) 13. [第八部分 — ATLAS 威胁建模与红队测试](#section-8--atlas-threat-modeling--red-teaming) 14. [第九部分 — 保护 AI 的数据 pipeline](#section-9--securing-data-pipelines-for-ai) 15. [第十部分 — AI/ML 供应链安全](#section-10--aiml-supply-chain-security) 16. [模块参考](#-module-reference) 17. [使用方案](#-usage-recipes) 18. [测试 & CI](#-testing--ci) 19. [文档](#-documentation) 20. [路线图](#-roadmap) 21. [参考资料与许可协议](#-references--license) ## 🎯 为什么会有这个项目 LLM 和 Agentic 系统打破了常规的安全假设: - **自然语言输入也是控制流。** 一个字符串既可以是数据,也可以是指令。 - **检索到的内容可以携带指令。** 间接 prompt injection 意味着攻击者往往不是用户本人。 - **模型是攻击者可以部分影响的非确定性组件。** - **Agent 在循环中执行,拥有真实的权限**,并作用于它们部分可控的状态。 经典的应用安全措施是必要但不充分的。本仓库打包了真正能在生产环境中经受住考验的 模式和工具 —— 架构优先的防御,而不仅仅是那些会被轻易绕过的 检测启发式方法。 ## ✨ 功能 | 能力 | 您将获得 | |------------|--------------| | 🔍 **MCP 审计扫描器** | AST 污点分析,用于标记可从 MCP 工具输入触达的注入 sink(RCE、eval、反序列化、路径遍历、SSRF、SQLi、SSTI) | | 🧱 **加固的 MCP 服务器** | 参考注册表,强制执行 authN → authZ → 速率限制 → 输入验证 → 输出脱敏 → 审计,以及沙箱化执行器 | | ⚔️ **红队测试框架** | 7 套对抗性测试套件(注入、越狱、投毒、提取、无限制消耗、供应链、反转),带有攻击成功率评分 | | 🛡️ **Runtime guardrails** | 输入注入启发式检测、输出密钥/PII 脱敏、RAG 隔离/隔离区、Agent 范围化权限 + HITL + 预算、token/成本上限 | | ☁️ **云安全** | Vault 支持的密钥管理 (AWS/Azure/GCP)、API 网关策略、身份感知代理、Terraform 参考 | | 📦 **供应链审计** | 依赖锁定与模型来源检查;HMAC 数据完整性校验 | | 🗂️ **DLP 与最小权限** | 敏感数据检测/脱敏以及基于用户的数据访问范围界定 | | 🎯 **MITRE ATLAS 映射** | 将所有 8 项涵盖的技术映射到可运行案例以及 OWASP LLM Top 10 | ## 🏗️ 架构 核心支撑理念是**双平面设计**:模型是一个发出提议的*不可信规划器* ;而*确定性控制平面*负责在调用者的权限下验证并执行这些提议。 权限由 guard 强制执行,绝不依赖于模型的配合来假定其有效。 ``` ┌─────────────────────────── REASONING PLANE (untrusted) ──┐ user input ─► │ prompt assembly ─► LLM / agent ─► proposed action │ retrieved ─► └───────────────▲───────────────────────────┬──────────────┘ tool output fence as DATA │ │ proposal │ (rag_guardrails)│ ▼ │ │ ┌──────── ACTION PLANE (enforced) ───────┐ ├─ scan_input (heuristics) │ │ AgentGuard: scoped perms · HITL · │ │ │ │ step/cost budget │ ▼ │ │ SecureToolRegistry: authZ · validate · │ DLP classify/redact ─────────────┘ │ rate-limit · sandbox · audit │ (data_pipeline.dlp) └───────────────┬─────────────────────────┘ ▼ output ◄─ redact_secrets ◄─ schema-validate ◄─ effect (file/db/network/tool) ``` 围绕这一核心的是:云控制(网关速率/大小上限、vault 密钥、网络 隔离、身份感知代理),入口处的供应链审计,以及在 CI 中持续 验证整个系统的红队测试框架。 ## 📁 仓库结构 ``` ai-redteam-eng/ ├── README.md ← this file (single source of truth) ├── docs/ ← deep dives (.md + .pdf, render on GitHub) ├── src/airte/ │ ├── mcp_audit/ AST scanner for MCP server code (taint → sink) │ ├── secure_mcp_server/ hardened MCP server + sandboxed executor │ ├── redteam/ 7 adversarial suites + pluggable harness │ ├── guardrails/ input/output/agent/RAG guardrails + cost budget │ ├── cloud/ secrets (AWS/Azure/GCP), API gateway, IAP │ ├── data_pipeline/ DLP + least-privilege + data provenance │ ├── supply_chain/ dependency + model-card auditing (LLM03) │ └── atlas/ MITRE ATLAS TTP suite + OWASP mapping ├── examples/ vulnerable server, live red-team, audits ├── iac/terraform/aws-ai-gateway/ secure-by-default cloud reference (Terraform) ├── tests/ pytest suite (33 tests, runs offline) └── .github/workflows/ci.yml CI: tests + scan gate + red-team regression ``` ## 🚀 安装与快速开始 ``` git clone https://github.com//ai-redteam-eng.git cd ai-redteam-eng python -m pip install -e ".[dev]" # core is dependency-free; this adds pytest # 1) 审计 MCP server 中可从 tool input 访问的 injection sinks python -m airte.mcp_audit.scanner examples/vulnerable_mcp_server.py --fail-on HIGH # 2) 对目标进行 Red-team(内置 EchoTarget demo)→ attack-success-rate python -m airte.redteam.harness --suite all # 3) 查看内置对抗测试用例的 MITRE ATLAS 覆盖范围 python -m airte.atlas.ttp_suite # 4) 审计你的 supply chain python -m pytest -q # 33 tests, no network, no API keys ``` ## 第一部分 — Model Context Protocol (MCP) 安全 **📄 深度剖析:** [`docs/mcp-security.md`](docs/mcp-security.md) · [PDF](docs/mcp-security.pdf) ### 什么是 MCP Model Context Protocol 是一个开放协议,用于标准化应用程序如何向 LLM 提供上下文和能力。它定义了一个 **client–server** 架构:一个 *host* (IDE、聊天客户端、Agent runtime)运行 *MCP client*,每个 client 与 一个 *MCP server* 保持 1:1 的连接。服务器暴露 **tools**(可调用的函数)、**resources** (只读上下文)和 **prompts**(模板)。消息通过 JSON-RPC 2.0 经由以下 传输方式传递 —— **stdio**(host 将服务器作为子进程启动;继承本地 权限)或 **streamable HTTP/SSE**(网络服务;需要其自身的 authN/Z)。 传输方式的选择是一个主要的安全决策。 ### 服务器的结构以及工具如何触达模型 ``` initialize → negotiate protocol version + capabilities tools/list → server returns tool definitions (name, description, inputSchema) tools/call → host asks server to execute a tool with arguments resources/list, read → server advertises and serves read-only context prompts/list, get → server advertises reusable prompt templates ``` `tools/list` 为每个工具返回一个 `name`、一段自然语言 `description` 和一个 JSON `inputSchema`。host 将这些注入到模型的上下文中。这会导致两个后果: 1. **description 就是攻击面。** 恶意或被入侵的服务器可以在工具描述中嵌入 注入 payload(“工具投毒”),从而劫持模型。 2. **Schema 是建议性的,而非强制执行。** 模型只是被*要求*遵守; 服务器必须自行验证每一个参数。**将每一个工具参数视为 跨越信任边界的不可信输入** —— 因为它最终是由攻击者可能影响的模型 所选择的。 ### 审计注入漏洞 要寻找的模式是:*是否有源自工具参数的值在未经验证的情况下 到达了危险的 sink?* 本仓库提供了一个 AST 扫描器,专门执行这种污点 分析。 | Sink | 类别 | CWE | 规则 | |------|-------|-----|------| | `os.system`, `subprocess(shell=True)` | 命令注入 | CWE-78 | AIRTE-MCP-001 | | `eval`, `exec`, `compile` | 代码注入 | CWE-95 | AIRTE-MCP-002 | | `pickle.loads`, `yaml.load` | 不安全的反序列化 | CWE-502 | AIRTE-MCP-003 | | `open`, 原始路径拼接 | 路径遍历 | CWE-22 | AIRTE-MCP-004 | | `requests.get(user_url)` | SSRF (云元数据!) | CWE-918 | AIRTE-MCP-005 | | f-string SQL → `cursor.execute` | SQL 注入 | CWE-89 | AIRTE-MCP-006 | | `Template(user_input)` | SSTI | CWE-1336 | AIRTE-MCP-007 | ``` python -m airte.mcp_audit.scanner path/to/server.py --fail-on HIGH ``` 它会识别工具处理程序(通过 `@tool` 风格的装饰器或 `*_tool`/`handle_*` 命名约定),从处理程序参数中种下污点,经由赋值和 f-string 进行传播, 并在受污染数据到达 sink 时进行报告。 `examples/vulnerable_mcp_server.py` 是一个标注了每种漏洞类别的语料库。 ### 安全的企业部署模式 锁定并审查服务器(供应链) · 每台服务器最小权限 · 带有逐工具授权的经过身份验证的会话 · 验证/限制输入(schema、路径限制、URL 允许列表 + 元数据阻断) · 对 runtime 进行沙箱化,默认拒绝出站流量 · 针对高风险工具引入 human-in-the-loop · 集中式审计日志记录 · 将工具描述视为代码。 `airte.secure_mcp_server.SecureToolRegistry` 将所有这些串联成一条强制执行的路径。 ## 第二部分 — AI 威胁建模 **📄 深度剖析:** [`docs/threat-modeling.md`](docs/threat-modeling.md) · [PDF](docs/threat-modeling.pdf) 针对 AI 的威胁建模会在一个信任边界异乎寻常的系统上提出经典的四个问题:自然语言输入即是控制流,检索到的数据带有指令,而模型是一个受攻击者部分影响的组件。其方法是: 绘制数据/信任流图(标记不可信文本进入上下文的每一个位置),列举 模型的影响范围(它能触发的每一个工具/动作),应用 STRIDE **外加** OWASP LLM Top 10 和 ATLAS,并根据实际影响进行排序。 ### OWASP LLM 应用 Top 10 (2025) | ID | 风险 | 一句话威胁描述 | |----|------|-----------------| | **LLM01** | Prompt Injection | 构造的输入(直接或通过检索的内容)颠覆指令。 | | **LLM02** | 敏感信息泄露 | 模型泄露 PII、密钥或专有数据。 | | **LLM03** | 供应链 | 被破坏的模型、数据集、插件或 MCP 服务器。 | | **LLM04** | 数据和模型投毒 | 被篡改的训练/微调/RAG 数据改变了行为。 | | **LLM05** | 不当的输出处理 | 下游系统盲目信任模型输出(XSS/SSRF/RCE)。 | | **LLM06** | 过度的代理权 | 模型拥有过多的权限/自主权;动作未经检查即运行。 | | **LLM07** | System Prompt 泄露 | 隐藏在 system prompt 中的指令/密钥被暴露。 | | **LLM08** | 向量和 Embedding 漏洞 | RAG/embedding 投毒、反转、跨租户泄露。 | | **LLM09** | 错误信息 | 自信但错误的输出;未经核实的过度依赖。 | | **LLM10** | 无限制消耗 | 资源/成本耗尽、拒绝钱包、模型 DoS。 | ### 对抗性 ML 技术(附带可运行套件) - **Prompt injection**(LLM01 / ATLAS AML.T0051)—— 直接(`.000`)在用户输入中; 间接(`.001`)隐藏在检索到的内容中。间接形式是极其危险的变种。 - **Jailbreaking**(越狱,ATLAS AML.T0054)—— 人格扮演、假设性框架、拒绝 抑制、payload 分割。针对的是*策略*层。 - **Data poisoning**(数据投毒,LLM04 / ATLAS AML.T0020)—— 在 训练、微调或 RAG 数据中植入事实/后门。 - **Model extraction / inversion**(模型提取/反转,LLM02/LLM07 / ATLAS AML.T0024, T0056, T0048)—— 窃取 system prompt,恢复记忆中的秘密,重构训练数据。 ### 能在生产环境中经受考验的缓解措施 权限分离 / 最小代理权 (LLM06) · 将检索到的内容视为数据,绝不能作为指令 (间接 LLM01) · 输出处理 —— 绝不对模型输出进行 eval/render/exec (LLM05) · 针对不可逆动作引入 human-in-the-loop · 敏感数据最小化 (LLM02/LLM07) · 速率/成本限制 (LLM10) · 供应链控制 (M03)。然后 将每种威胁转化为红队测试案例,并在 CI 中以攻击成功率 (ASR) 作为门控。 ## 第三部分 — AI 系统安全:构建 / 破坏 / 加固 **📄 深度剖析:** [`docs/ai-system-security.md`](docs/ai-system-security.md) · [PDF](docs/ai-system-security.pdf) **构建** 安全即构造(secure-by-construction):双平面(不可信规划器 / 确定性动作 平面),一切皆 schema,默认拒绝 (default-deny),无状态密钥,从第一天起就具备可观测性。 **破坏** 它,使用一个经过衡量的框架来对**攻击成功率 (ASR)** 进行评分 —— 向它 抛出注入(直接*和*间接)、越狱、投毒、提取、过度 代理权探测以及工具链滥用。**加固** 它,通过将发现转化为控制措施, 并将控制措施转化为 CI 回归测试:输入/检索/Agent/输出 guardrails, 平台加固(沙箱、拒绝出站流量、最小权限身份),以及 ASR 门控,使得一旦发生 guardrail 回归,构建就会失败。 ``` from airte.redteam import RedTeamHarness class MySystem: def generate(self, prompt: str) -> str: return my_agent.run(prompt) report = RedTeamHarness(MySystem()).run("all") print(report.summary()) # ASR + which attacks succeeded ``` ## 第四部分 — 面向 AI 工作负载的云安全 **📄 深度剖析:** [`docs/cloud-security-ai.md`](docs/cloud-security-ai.md) · [PDF](docs/cloud-security-ai.pdf) AI 工作负载增加了三个属性:它们持有高价值密钥(模型密钥),会 向外部推理 API 发起出站调用,并处理可能触发动作的不可信语言。 四个核心支撑控制措施: 1. **安全的 API 网关。** 在模型 endpoint *之前* 终结 authN、基于主体的速率限制、请求大小 上限以及 content-type 固定(AWS API Gateway / WAF、Azure APIM / Front Door、GCP API Gateway / Cloud Armor)。 `airte.cloud.api_gateway` 将此编码为一种可移植的策略。 2. **密钥管理。** 模型密钥是具有财务影响的 bearer 凭证 —— 绝不要放在代码/镜像/环境变量中。应存储在 AWS Secrets Manager / Azure Key Vault / GCP Secret Manager 中;通过工作负载的身份授予对某一个密钥的读取权限;定期轮换; 绝不记录日志。`airte.cloud.secrets` 在统一的 `get_model_key()` 调用背后 提供了 env/内存(开发环境)和 AWS/Azure/GCP (生产环境)提供程序。 3. **网络隔离。** 私有子网,无公网 IP,**默认拒绝出站流量** 并允许列出云厂商的 CIDR,使用私有 endpoint,并将元数据 endpoint (169.254.169.254) 屏蔽。这是最有效的防数据渗出控制措施。 4. **身份感知代理。** 基于已验证的身份和上下文(群组、模型、 数据分类、设备安全态势、MFA)进行授权 —— 而非基于网络位置。 `airte.cloud.identity_proxy.IdentityAwareProxy`。 位于 [`iac/terraform/aws-ai-gateway`](iac/terraform/aws-ai-gateway) 中的 Terraform 代码预置了一个轮换的密钥、一个最小权限角色、一个 WAF 速率限制,以及一个 限制出站流量的安全组。 ## 第五部分 — 保护 Agentic AI 系统 **📄 深度剖析:** [`docs/agentic-security.md`](docs/agentic-security.md) · [PDF](docs/agentic-security.pdf) Agent 引入了单次调用所没有的攻击面:**复合信任**(每 一步都会馈送到下一步)、**间接注入**(Agent 读取攻击者可控的 内容)、**混淆代理**(Agent 运行时的权限大于用户)、**工具 组合**(安全的工具被链接成数据渗出)、**失控循环**(成本 暴增),以及**被投毒的记忆**(每次运行时都会重新注入)。控制措施: ``` from airte.guardrails import AgentGuard, Permission, ToolCallRequest guard = AgentGuard( permissions=[Permission("search"), Permission("read_doc", frozenset({"kb"}))], max_steps=15, max_tool_calls=30, require_approval_for=frozenset({"send_email", "delete_record"})) guard.tick() # loop guard guard.authorize(ToolCallRequest("search")) # default-deny allow-list guard.authorize(ToolCallRequest("delete_record"), # → HumanApprovalRequired human_approved=ask_human()) ``` 范围化权限(最小代理权,范围限定至*最终用户*) · 针对不可逆动作引入 human-in-the-loop · 步骤/成本预算(循环 + DoS 防护) · 将所有检索/工具 内容视为不可信数据 · 沙箱化、拒绝出站流量的执行环境 · 可观测性 + 终止开关。**核心不变式:权限由确定性 guard 强制执行,绝不 依赖于模型的配合来假定其有效。** ## 第六部分 — 安全默认模式 **📄 深度剖析:** [`docs/secure-by-default.md`](docs/secure-by-default.md) · [PDF](docs/secure-by-default.pdf) “安全默认”意味着最简单的构建方式也就是安全的方式;控制措施默认 开启,除非刻意放宽,且放宽过程必须是显式且可审查的。
默认开启检查清单(点击展开) 一个新的集成在初始时应:输入规范化**开启**,输出编码/脱敏 **开启**,工具允许列表**为空(全部拒绝)**,出站流量**拒绝**,密钥**存入 vault**, 速率/成本上限**已设定**,审计日志**开启**,并且红队测试套件**已接入 CI**。 每一次放宽策略都是一个经过审查、记录在案的例外。 - **LLM 集成:** 保持不可信输入的心态,密钥不要放入 prompt,输出同样是 不可信的,限制消耗。 - **Agentic 工作流:** 默认拒绝工具,设定预算的循环,针对不可逆动作的 HITL,沙箱化且拒绝出站流量的执行环境。 - **RAG pipeline:** 来源允许列表,聚光/隔离检索到的内容, 隔离区评分,基于用户的检索范围界定,在入口和出口处进行 DLP。 - **MCP 部署:** 审查并锁定服务器,经过身份验证和授权的工具调用, 验证/限制输入,沙箱化 + 拒绝出站流量,审计每一次调用,针对高风险动作引入 HITL。
## 第七部分 — MCP 安全架构审查 **📄 深度剖析:** [`docs/mcp-architecture-review.md`](docs/mcp-architecture-review.md) · [PDF](docs/mcp-architecture-review.pdf) 在接入任何 MCP 服务器**之前**运行此审查。它会评估工具定义、服务器 信任边界、prompt injection 攻击面以及工具调用授权 模型。
审查清单(复制到 PR 中) ``` [ ] Source pinned & provenance documented [ ] Egress allow-listed, metadata blocked [ ] Transport & process privileges reviewed [ ] Filesystem access confined to root [ ] Tool descriptions free of instructions [ ] Per-principal authZ + least privilege [ ] Input schemas strict [ ] HITL on irreversible tools [ ] Unused tools disabled [ ] Per-principal/per-tool rate limits [ ] Injection channels enumerated & fenced [ ] Every tool call audit-logged [ ] Static scan clean (or risks accepted) [ ] Dynamic abuse tests pass ```
如果任何工具能够在未经授权的情况下从模型选择的输入到达危险的 sink, 如果出站流量不受限制,如果没有基于主体的 authZ, 或者如果工具描述包含内嵌的指令,则应阻止接入。 ## 第八部分 — ATLAS 威胁建模与红队测试 **📄 深度剖析:** [`docs/atlas-redteaming.md`](docs/atlas-redteaming.md) · [PDF](docs/atlas-redteaming.pdf) 按 **MITRE ATLAS** 战术组织您的对抗性套件,能让覆盖盲点一目 了然。`airte.atlas.ttp_suite` 将技术映射到可运行的 `airte.redteam` 案例 以及 OWASP LLM Top 10。**所有八项涵盖的技术都提供了可运行案例:** | ATLAS ID | 技术 | 战术 | OWASP | 案例 | |----------|-----------|--------|-------|-------| | AML.T0051 | LLM Prompt Injection | 初始访问/执行 | LLM01 | ✓ | | AML.T0054 | LLM Jailbreak | 防御绕过 | LLM01 | ✓ | | AML.T0020 | 投毒训练/索引数据 | 资源开发 | LLM04 | ✓ | | AML.T0056 | 提取 LLM System Prompt | 数据渗出 | LLM07 | ✓ | | AML.T0024 | 通过推理 API 渗出 | 数据渗出 | LLM02 | ✓ | | AML.T0048 | 模型反转危害 | 影响 | LLM02 | ✓ | | AML.T0029 | 拒绝 ML 服务 | 影响 | LLM10 | ✓ | | AML.T0018 | 操纵 AI 模型 (供应链) | 持久化 | LLM03 | ✓ | ``` python -m airte.atlas.ttp_suite # coverage report ``` ## 第九部分 — 保护 AI 的数据 pipeline **📄 深度剖析:** [`docs/secure-data-pipelines.md`](docs/secure-data-pipelines.md) · [PDF](docs/secure-data-pipelines.pdf) 三个控制措施可以将敏感数据限制在范围内:**DLP**(在 入口和出口处检测/分类/脱敏)、**机密性边界**(分类并锁定数据;按租户 隔离;最小化触达模型的数据量),以及**最小权限访问**(将 检索绑定至*请求用户*的授权范围 —— 从而击败 RAG 的混淆代理 漏洞及跨租户泄露)。此外还有**来源与完整性**(在入口处对记录进行 HMAC 签名,在使用前进行验证)。 ``` from airte.data_pipeline import DLPEngine, DataScope, evaluate_access, Classification from airte.data_pipeline.least_privilege import AccessRequest DLPEngine().redact("contact a@b.com, AKIA....") # → "[REDACTED:email], [REDACTED:aws_key]" scope = DataScope(tenants=frozenset({"acme"}), max_classification=Classification.CONFIDENTIAL, purposes=frozenset({"support"})) evaluate_access(scope, AccessRequest("other", Classification.INTERNAL, "support")) # raises ``` ## 第十部分 — AI/ML 供应链安全 **📄 深度剖析:** [`docs/supply-chain-security.md`](docs/supply-chain-security.md) · [PDF](docs/supply-chain-security.pdf) 每一个模型、数据集、包和 MCP 服务器都是一个可以执行代码或影响行为的 依赖项。OWASP **LLM03** 始终是影响最大的风险之一,因为 一个被破坏的构件会绕过下游的每一道 guardrail。 ``` from airte.supply_chain import audit_requirements, audit_model_card deps = audit_requirements(open("requirements.txt").read()) # unpinned / VCS / risky model = audit_model_card({"name": "clf", "source": "hub", "sha256": "...", "trusted": True, "license": "apache-2.0"}) assert not deps and not model, "supply-chain audit failed" ``` 锁定并固定依赖 · 验证模型来源(不可变摘要、可信来源、 许可协议) · 优先使用 `safetensors` 而非 pickle · 签名并验证数据 (`airte.data_pipeline.provenance`) · 运行行为后门探测 (`airte.redteam.supply_chain`) · 审查 MCP 服务器与插件。 ## 🧰 模块参考 | 模块 | 作用 | 关键入口点 | |--------|--------------|------------------| | `airte.mcp_audit` | 对 MCP 服务器代码进行 AST 污点扫描以寻找注入 sink | `scan_path`,CLI `airte-scan` | | `airte.secure_mcp_server` | 加固的 MCP 服务器:authZ、验证、限制、沙箱、审计 | `SecureToolRegistry`、`authorize`、`validate_path`、`validate_url`、`Sandbox` | | `airte.redteam` | 7 套对抗性套件 + 带有 ASR 评分的可插拔框架 | `RedTeamHarness`、`Target`,CLI `airte-redteam` | | `airte.guardrails` | 输入/输出/Agent/RAG guardrails + token/成本预算 | `scan_input`、`redact_secrets`、`AgentGuard`、`RAGContext`、`CostTracker` | | `airte.cloud` | 密钥 (AWS/Azure/GCP)、API 网关策略、身份感知代理 | `get_model_key`、`validate_request`、`IdentityAwareProxy` | | `airte.data_pipeline` | DLP 检测/脱敏、最小权限访问、数据来源 | `DLPEngine`、`evaluate_access`、`SignedRecord` | | `airte.supply_chain` | 依赖锁定 + 模型来源审计 | `audit_requirements`、`audit_model_card` | | `airte.atlas` | MITRE ATLAS TTP 套件 + OWASP LLM 映射 | `build_atlas_suite`、`map_owasp_to_atlas` | ## 🍳 使用方案 **端到端纵深防御配置:** ``` from airte.guardrails import scan_input, redact_secrets, RAGContext, AgentGuard, Permission, ToolCallRequest, CostTracker from airte.data_pipeline import DLPEngine flag = scan_input(user_msg) # input heuristic ctx = RAGContext(allowed_sources=frozenset({"kb"})).build([(chunk, "kb")]) # fence retrieved budget = CostTracker(max_tokens_per_window=50_000) budget.check_and_record(principal="alice", tokens=1200) # LLM10 cost cap guard = AgentGuard(permissions=[Permission("search")], require_approval_for=frozenset({"send_email"}), max_steps=15) guard.authorize(ToolCallRequest("search")) # least agency safe = DLPEngine().redact(redact_secrets(model_output)) # output redaction ``` 请查看 [`examples/`](examples) 获取可运行脚本:`audit_mcp_server.py`、 `run_redteam.py`、`audit_supply_chain.py`。 ## 🧪 测试 & CI ``` PYTHONPATH=src python -m pytest -q # 33 tests, no network, no API keys needed make scan # MCP scanner on the vulnerable example make redteam # red-team harness ``` 内置的 GitHub Actions 工作流 ([`.github/workflows/ci.yml`](.github/workflows/ci.yml)) 会在每次 push/PR 时运行测试套件、MCP 审计严重性门控, 以及红队回归测试。 ## 📚 文档 以上每个部分都链接到了一份深度剖析文档,提供 Markdown 和 PDF 格式 (两者均可在 GitHub 上渲染): | 主题 | Markdown | PDF | |-------|----------|-----| | MCP 安全 | [md](docs/mcp-security.md) | [pdf](docs/mcp-security.pdf) | | AI 威胁建模 | [md](docs/threat-modeling.md) | [pdf](docs/threat-modeling.pdf) | | AI 系统安全 | [md](docs/ai-system-security.md) | [pdf](docs/ai-system-security.pdf) | | 面向 AI 的云安全 | [md](docs/cloud-security-ai.md) | [pdf](docs/cloud-security-ai.pdf) | | Agentic 安全 | [md](docs/agentic-security.md) | [pdf](docs/agentic-security.pdf) | | 安全默认 | [md](docs/secure-by-default.md) | [pdf](docs/secure-by-default.pdf) | | MCP 架构审查 | [md](docs/mcp-architecture-review.md) | [pdf]() | | ATLAS 红队测试 | [md](docs/atlas-redteaming.md) | [pdf](docs/atlas-redteaming.pdf) | | 安全数据 pipeline | [md](docs/secure-data-pipelines.md) | [pdf](docs/secure-data-pipelines.pdf) | | 供应链安全 | [md](docs/supply-chain-security.md) | [pdf](docs/supply-chain-security.pdf) | ## 🗺️ 路线图 - 将 ATLAS 覆盖范围扩展到更多战术(侦察、ML 攻击准备)。 - 将在线模型接入 `examples/run_redteam.py` (`LiveAnthropicTarget`) 并添加 OpenAI/Bedrock 目标。 - 在供应链审计器中添加 CycloneDX **AI-BOM** 导出器。 - 在 DLP 接口背后添加可选的基于 ML 的 PII 检测。 ## 📖 参考资料与许可协议 ATLAS 技术 ID 和 OWASP LLM Top 10 会不断更新 —— 在报告时请对照当前 来源进行核实: - **OWASP LLM 应用 Top 10 (2025):** https://genai.owasp.org/llm-top-10/ - **MITRE ATLAS:** https://atlas.mitre.org/ - **Model Context Protocol:** https://modelcontextprotocol.io/ 基于 **Apache-2.0** 协议授权。详见 [LICENSE](LICENSE)。
*为防御者打造。在别人动手之前,用它来破坏你自己的系统。*
标签:AI安全, Chat Copilot, DLL 劫持, MCP协议, Python, 大语言模型, 安全护栏, 安全规则引擎, 无后门, 逆向工具