vitorallo/atomic-atlas

GitHub: vitorallo/atomic-atlas

atomic-atlas 是一个提供 MITRE ATLAS 技术原子化测试的开源库,旨在解决 AI 智能体安全测试中公开可运行测试缺失的问题。

Stars: 1 | Forks: 0

# atomic-atlas **基于 ATLAS 密钥的智能体安全测试。面向 AI 智能体的 Atomic Red Team。** MITRE ATLAS v5.6.0 包含 170 项技术和 57 个案例研究。29 项高置信度的智能体技术(若包含可能项则为 51 项)几乎没有公开可用的可运行测试。 没有可运行的测试,任何声称"符合 ATLAS"的产品声明都无法验证。供应商和安全团队都说"我们覆盖了 X",却没有机械化的方法来验证。这与 2017 年 Atomic Red Team 出现之前 ATT&CK 的情况如出一辙。MITRE 提供了‘武器库’,而我们在这里要深入得多。 atomic-atlas 填补了这一空白,提供了用于测试 AI 智能体系统的原子化测试基础。 ## 📄 从这里开始 | | | |---|---| | 🎤 **项目概述 — 幻灯片 (PDF)** | [docs/AtomicAtlas_v0.4pre.pdf](docs/AtomicAtlas_v0.4pre.pdf) — *原因所在*:ATLAS 覆盖差距、传递载体和有效载荷可移植性问题,以及 atomic-atlas 如何解决它们 | | 📄 **示例评估报告,附带说明 (PDF)** | [docs/sample_assessment1/sample_assessment_explained.pdf](docs/sample_assessment1/sample_assessment_explained.pdf) — 一次真实的、实时的针对 DVAA LegacyBot 的评估,端到端,最终得出**存在漏洞/高风险**的发现,并提取了凭证 | | 📝 **分步操作指南** | [docs/sample_assessment1/sample_execution.md](docs/sample_assessment1/sample_execution.md) — 每一条命令及其输出 | | 📦 **原始工件(原样提交)** | [docs/sample_assessment1/](docs/sample_assessment1/) — `results.jsonl`,发现报告 / 导航器 / 覆盖率 / 运行报告,侦察([文件地图](docs/sample_assessment1/README.md)) | 示例中没有任何内容是合成的 —— 这是一次 `侦察 → 执行 → 报告` 运行的确切输出。 ## 它是什么 一个小型、自包含的对抗性测试库,每个测试都映射到一个 ATLAS 技术 ID 和一个入口向量。由 [PyRIT](https://github.com/Azure/PyRIT) 提供支持,用于有效载荷生成和攻击编排。增加了 PyRIT 所没有的功能:针对非聊天入口向量(RAG 注入、MCP 工具投毒、工具响应拦截、文档上传、webhook、邮件、A2A、计算机使用)的智能体传递目标。 格式是带有 YAML 前置元数据的 Markdown —— 每个 `(技术 × 向量)` 单元格对应一个 `.md` 文件。文件路径编码了这两个维度: ``` atomics/AML.T0051.001/rag_corpus.md ← technique + vector ``` **传统的 HTTP 聊天测试并非目标。** PyRIT、garak 和 Promptfoo 已经做得很好。这个项目的存在是为了覆盖它们未涵盖的传递向量。 ## 60 秒速览 ``` # 完整安装 (Python 3.10–3.13)。PyRIT 位于 [orchestrator] — 选择性启用; # 基础安装足以应对 list / recon / report / validate / MCP。 pip install 'atomic-atlas[orchestrator]' atomic-atlas list # browse the catalog atomic-atlas recon --target http://localhost:7003/v1 # fingerprint a target (DVAA LegacyBot) atomic-atlas exec AML.T0083/direct_chat \ --target http://localhost:7003/v1 \ --profile targets/dvaa_legacybot.yaml \ --authorized # run the flagship atomic # (appends to ./atomic-atlas-engagement/) atomic-atlas report --format findings # stakeholder verdict + evidence atomic-atlas report --format navigator # ATLAS Navigator layer JSON ``` 完整的操作指南 —— 安装、启动 [DVAA](https://github.com/opena2a-org/damn-vulnerable-ai-agent)、端到端运行演示、在 ATLAS Navigator 中打开结果 —— 请参见 **[docs/quickstart.md](docs/quickstart.md)**。 ## 关于 PyRIT 依赖 atomic-atlas 是一个 **[PyRIT](https://github.com/Azure/PyRIT) 扩展,而非重新实现。** 微软 PyRIT 掌握着 `atomic-atlas exec` 的编排主干 —— 多轮攻击者 LLM 变异循环、评分图谱和对话记忆。atomic-atlas 增加了 PyRIT 所没有的功能:12 个智能体传递向量、ATLAS 技术密钥化、两级评分器 + 证据、`adapt` 有效载荷生成器以及评估/发现层。 **PyRIT 是可选组件。** 只有 `exec` 命令需要它: | 安装方式 | 需要 PyRIT? | 可运行命令 | |---|---|---| | `pip install atomic-atlas` | 否 | `list` · `recon` · `report` · `validate` · MCP 服务器 | | `pip install 'atomic-atlas[orchestrator]'` | 是 | 上述所有 **+ `exec`** | 所有 `pyrit` 导入都是惰性的,因此基础安装保持轻约 1 GB,并且在编写/CI 过程中不会引入它。 完整详情 —— 使用的每个符号、集成边界、我们刻意不采用的内容 —— 请参见 **[docs/pyrit.md](docs/pyrit.md)**。 ## 附加信息 ### 跨所有 OpenSpec 变更的当前状态 本项目采用 AI 规范驱动开发(并非氛围编码)。 | 规范 | 状态 | 备注 | |---|---|---| | **atomic-format** | ✅ 已发布 | 原子化 Markdown 模式 + 解析器。27 个原子,19 项 ATLAS 技术(29 项高置信度智能体技术中覆盖 12 项)。 | | **agentic-targets** | ✅ 大部分已发布 | 6 个适配器在线(`direct_chat`、`rag_corpus`、`mcp_server`、`tool_response`、`document_upload`、`webhook`)。缺失:A2A、web_fetch、email、computer_use、model_api。 | | **agent-runner** | ✅ 已发布 | Claude Code 技能 + MCP 服务器(`atomic-atlas-mcp`)。 | | **cli-and-reporting** | ✅ 已发布 | `recon`、`list`、`validate`、`exec`、`report`、`runbook`、`adapt`。报告器:导航器、覆盖率、Markdown。 | | **runbooks** | ✅ 已发布 | DAG 执行器 + 22 个 DVAA 运行手册。缺失:杀伤链运行手册、评估模板。 | | **payload-adaptation** | ✅ 已发布 | `target_context` 配置文件字段、`RedTeamingAttack` 集成、`--hitl`。 | | **scoring-tiers** | ✅ 已发布 (v0.2) | 两级评分器(判断器 → 指标)、一等 `Evidence`、正则表达式提取器、拒绝短路。已在 DVAA 上端到端实时验证。 | | **payload-adapter** | ✅ 已发布 (v0.2) | `atomic-atlas adapt` CLI + `exec --payload-file` 交接。捆绑包往返、观测证据选择。已在 DVAA 上端到端实时验证。 | | **atlas-agentic-coverage** | ⏳ 部分完成 | 覆盖率跟踪;随原子添加而更新。 | | **vulnerable-agent (Lobster)** | ❌ 尚未开始 | 自定义漏洞 LangGraph 智能体。DVAA 的短语匹配限制使得 Lobster 比最初规划的更有价值。 | ### 产品需求文档里程碑 - **v0.1 — 主题演讲就绪**:14/16 项完成。待完成:git 标签 `v0.1.0`,在布鲁塞尔 MITRE ATTACK 2026 研讨会上进行现场主题演讲。 - **v0.2 — 评分、适配、评估记忆**:评分层级 + `adapt` + 评估/发现已发布。待完成:A2A 目标、标准杀伤链 + 评估模板运行手册、目录扩展至剩余的高置信度智能体技术(已覆盖 12/29 项)、成本遥测、运行手册报告器。 - **v0.3 — 社区流水线**:尚未开始。CI、PyPI、Pinecone 适配器、同级漏洞智能体。 - **v0.4 — 测试智能体的智能体**:web/email/computer_use 目标(12/12 个向量)、通用智能体技能、Lobster 漏洞 LangGraph 智能体(仅概念)。 ### 下一步 — 按影响力排序 **第一梯队 — 高影响力,与主题演讲明显相关:** 1. **Lobster (vulnerable-agent)** — 真实的 LLM 目标。DVAA 是一个短语匹配器,而非 LLM,因此它无法真正评估适配器生成的有效载荷。一个真实的、具有 ATLAS 标记失败的 LangGraph 智能体将证明该架构在面对实际 LLM 行为时的有效性。 2. **标准杀伤链运行手册**(位于 `runbooks/kill-chains/`)— `indirect-pi-to-tool-exfil` (T0051.001 → T0053 → T0086)、`rag-poison-to-cred-harvest`、`mcp-tool-poison-to-c2`。主题演讲最有力的演示材料。 3. **现场主题演讲彩排** — 针对 DVAA + Lobster 端到端演练整个演示文稿。目标是进行现场演示。 **第二梯队 — 填补可证明的空白:** 1. **A2ATarget** — 解锁 `RB-DVAA-L4-02`(已发布 3 个 a2a_message 原子,但缺少执行器)。智能体到智能体的攻击故事是五大维度之一。 2. **回填那些仅依赖判断器层级、缺少 `success_indicators` / `judge_guidance` 的原子** — 当无法访问判断器 LLM 时,为指标层级提供回退依据。 **第三梯队 — 债务 + 完善:** 6. 修复 `_build_attack` RedTeamingAttack 路径中的临时文件泄漏(小范围、精准修复)。 7. `atomic-atlas init-profile` — 基于侦察输出的 CLI 生成器(操作员用户体验,具体方式待定)。 8. 执行前进行成本估算;`last_verified_date` 字段 + 模型漂移 CI。 ## 文档 | 文档 | 涵盖内容 | |---|---| | [docs/quickstart.md](docs/quickstart.md) | 端到端流程:安装、启动 DVAA、侦察 → 执行 → 报告;运行手册执行;`--hitl` 交互式审查;`adapt` → `exec --payload-file` 链 | | [docs/sample_assessment1/sample_execution.md](docs/sample_assessment1/sample_execution.md) | 一次真实实时运行(DVAA LegacyBot,`AML.T0083`)的逐字指南:每条命令 + 输出,为什么多轮执行需要数分钟,如何解读存在漏洞/高风险发现 — 提交的工件位于 [docs/sample_assessment1/](docs/sample_assessment1/) | | [docs/use-cases.md](docs/use-cases.md) | 三个端到端演练:测试单个技术、使用 `adapt` 进行杀伤链链式攻击、完整评估运行手册 | | [docs/benchmarks.md](docs/benchmarks.md) | 跨 6 个 DVAA 机器人的 12 次实时运行 — 相同响应,三种判断器裁决;运行时间作为适应度信号;可复现命令 | | [docs/cli-reference.md](docs/cli-reference.md) | 每个子命令的参考:每个标志都附带可复制粘贴的示例 | | [docs/scoring.md](docs/scoring.md) | 评分器层级(判断器 / 指标)、Evidence 模式、`judge_guidance` / `judge_examples` / `extractors` 编写 | | [docs/adapt.md](docs/adapt.md) | 有效载荷适配器:捆绑包格式、提示结构、观测证据选择规则、审计跟踪 | | [docs/install.md](docs/install.md) | 安装矩阵(`base` / `[orchestrator]` / `[mcp-server]`)、为什么 PyRIT 是可选的、故障排除 | | [docs/pyrit.md](docs/pyrit.md) | atomic-atlas 如何使用 PyRIT:为什么需要依赖、精确使用的符号(target/attack/scorer/memory)、我们刻意不采用的、版本注意事项、集成边界 | | [docs/targets.md](docs/targets.md) | 目标配置文件格式、用于领域感知有效载荷适配的 `target_context`、DVAA 设置、认证方案 | | [docs/agent-runner.md](docs/agent-runner.md) | Claude Code 技能 + MCP 服务器、何时使用它们而非 CLI | | [docs/atlas-coverage.md](docs/atlas-coverage.md) | 项目级 ATLAS v5.6.0 覆盖率统计(技术、向量、战术、运行手册) | | [runbooks/dvaa/README.md](runbooks/dvaa/README.md) | DVAA → ATLAS 映射(22 个挑战,技术计数并列对比) | | [SPEC.md](SPEC.md) | 原子格式参考;有效载荷适配原则 | | [PRD.md](PRD.md) | 产品需求 + 里程碑范围 | ## 入口向量 | 向量 | 描述 | |---|---| | `direct_chat` | 用户发送到聊天界面的消息 | | `rag_corpus` | 注入检索语料库的文档 | | `document_upload` | 直接提交给智能体的文件 | | `tool_response` | 工具返回的投毒响应 | | `mcp_server` | 在 MCP 服务器上注册的工具 | | `web_fetch` | 智能体浏览的网页上的内容 | | `webhook` | 通过入站 webhook 传递的有效载荷 | | `email` | 触发智能体处理的邮件正文/附件 | | `a2a_message` | 智能体到智能体的消息 | | `computer_use` | 注入智能体看到的屏幕中的内容 | | `model_api` | 直接模型 API 交互 | 同一 ATLAS 技术通过不同向量进入,就是不同的攻击,具有不同的防御和有效载荷。覆盖范围是 `技术 × 向量` 的二维矩阵,而非平面列表。 ## 智能体运行器 CLI 之上的一个层。CLI 是确定性的原语;智能体推理运行哪个原子,根据观测目标适配有效载荷,从语义上评估成功,并链式连接原子。两种实现,一个契约: - **Claude Code 技能** — `/atomic-atlas exec AML.T0051.001/rag_corpus --target http://custom-agent.local` - **MCP 服务器** — `pip install 'atomic-atlas[mcp-server]' && atomic-atlas-mcp` 适用于 Hermes、GPT-4o、Gemini、AutoGen、LangChain 以及任何其他支持 MCP 的智能体。 完整接口、回退规则和 MCP 客户端配置,请参见 **[docs/agent-runner.md](docs/agent-runner.md)**。 智能体和技能仍在积极开发中,目前还处于实验阶段。 ## 种子原子(原始 v0.1 优先集) 目录最初创建的 9 项优先技术。此后已扩展至 **19 项 ATLAS 技术下的 27 个原子** — 运行 `atomic-atlas report --format coverage` 获取实时矩阵。 | 技术 | 向量 | |---|---| | AML.T0051.000 直接提示注入 | `direct_chat` | | AML.T0051.001 间接提示注入 | `rag_corpus`、`document_upload`、`mcp_server`、`tool_response` | | AML.T0053 智能体工具调用 | `tool_response` | | AML.T0065 LLM 提示制作 | `direct_chat` | | AML.T0086 通过智能体工具窃取数据 | `mcp_server` | | AML.T0093 通过公共应用渗透提示 | `webhook` | | AML.T0098 工具凭证收集 | `tool_response` | | AML.T0099 工具数据投毒 | `tool_response` | | AML.T0104 发布投毒的 AI 智能体工具 | `mcp_server` | ## 贡献一个原子 一个 PR = 一个原子。格式很简单: 1. 选择一个目录中尚未包含的 `(技术, 向量)` 单元格(`atomic-atlas report --format coverage`) 2. 复制 `atomics/_TEMPLATE/vector_template.md` 并重命名 3. 填写前置元数据和正文部分 4. 将任何有效载荷种子文件添加到 `payloads/` 5. 运行 `atomic-atlas validate` 检查前置元数据 6. 运行 `python scripts/generate_index.py` 刷新 `index.yaml` 目录 7. 提交 PR 完整格式规范请参见 [SPEC.md](SPEC.md)。 ## 不是产品。不是供应商。 这是一个社区库。贡献应定位为研究或从业者工具,而非商业产品。 目标:为 AI 安全团队建立一个覆盖范围共享库,使得"符合 ATLAS"成为一个可验证的主张。 ## 相关工作 - [MITRE ATLAS](https://atlas.mitre.org) — 技术矩阵 - [PyRIT](https://github.com/Azure/PyRIT) — 本项目扩展的编排主干 - [DVAA](https://github.com/opena2a-org/damn-vulnerable-ai-agent) — 推荐的测试目标 - [MITRE Arsenal](https://github.com/mitre-atlas/arsenal) — 前身(已过时,无智能体覆盖) - [Promptfoo MITRE ATLAS](https://www.promptfoo.dev/docs/red-team/mitre-atlas/) — 现已归属 OpenAI;将生成的插件测试映射到 ATLAS *战术* 预设(AI 模型访问是一个明确空白),而非技术密钥化的原子目录且无传递向量维度 — 互补而非竞争
标签:AES-256, AI代理, AI安全, ATLAS框架, Chat Copilot, PyRIT, 代理系统安全, 原子测试, 多智能体系统, 安全测试, 对抗性机器学习, 对抗性测试, 技术测试, 攻击性安全, 文档结构分析, 漏洞评估, 网络安全, 逆向工具, 防御加固, 隐私保护