jlov7/damn-vulnerable-agent-asset-corpus

GitHub: jlov7/damn-vulnerable-agent-asset-corpus

为 Agentic AI 资产安全扫描器提供一致性测试套件与基准比较标准的开源项目。

Stars: 0 | Forks: 0

Damn Vulnerable Agent Asset Corpus # Damn Vulnerable Agent Asset Corpus **一个用于 agent-asset 保障工具的紧凑且可运行的一致性测试集 —— 它检查的是测试集自身的一致性,而不是扫描器的准确性。** [![CI](https://github.com/jlov7/damn-vulnerable-agent-asset-corpus/actions/workflows/ci.yml/badge.svg)](https://github.com/jlov7/damn-vulnerable-agent-asset-corpus/actions/workflows/ci.yml) [![Release fingerprints](https://github.com/jlov7/damn-vulnerable-agent-asset-corpus/actions/workflows/release-fingerprints.yml/badge.svg)](https://github.com/jlov7/damn-vulnerable-agent-asset-corpus/actions/workflows/release-fingerprints.yml) [![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/jlov7/damn-vulnerable-agent-asset-corpus/badge)](https://scorecard.dev/viewer/?uri=github.com/jlov7/damn-vulnerable-agent-asset-corpus) ![Status](https://img.shields.io/badge/status-v0.1.5-2f6f9f) ![Fixtures](https://img.shields.io/badge/fixtures-16-0f766e) ![AAC](https://img.shields.io/badge/AAC-v0.2--candidate.8-111827) [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.20448675.svg)](https://doi.org/10.5281/zenodo.20448675) ![License](https://img.shields.io/badge/license-CC--BY--4.0%20%2B%20Apache--2.0-blue) [配套 AAC 验证器](https://github.com/jlov7/agent-assurance-case) · [评估协议](docs/EVALUATION_PROTOCOL.md) · [扫描器集成](docs/SCANNER_INTEGRATION_GUIDE.md) · [外部验证](docs/EXTERNAL_VALIDATION.md) · [发布指纹](docs/RELEASE_FINGERPRINTS.md) · [安全态势](SECURITY_POSTURE.md) · [安全洞察](security-insights.yml) · [仓库态势](repository-posture.json) · [运行时依赖 SBOM](sbom/runtime-requirements.cdx.json) · [运行时依赖锁定](runner/requirements.lock.txt) · [安全策略](SECURITY.md)
DVAAC 提供了刻意包含漏洞和刻意保持干净的 Agentic AI 发布测试套件、预期发现结果以及 Agent 保障案例 (Agent Assurance Case, AAC) 模板,这些内容均通过 AAC v0.2 参考验证器进行了验证。运行器验证的是测试集的真实性;它不是扫描器,也不会导入或执行测试套件的 payload。 此版本固定在提交 `936885583a49dfd06fd11ce45c8ee82330f1007d` 的 AAC `v0.2-candidate.8` 上。 可引用的制品是已签名且通过 DOI 归档的发布标签 [`v0.1.5`](https://github.com/jlov7/damn-vulnerable-agent-asset-corpus/releases/tag/v0.1.5), 而不是 `main` 分支的最新提交。`main` 可能包含尚未发布的更改,这些更改不属于已归档的发布版本;除非您是刻意要审查正在进行的工作,否则请引用或审计带有标签的提交。 ## 这是什么 / 这不是什么 有关范围以及自验证与独立审查之间界限的单页声明,请阅读 [VALIDATION_BOUNDARY.md](VALIDATION_BOUNDARY.md)。简而言之:DVAAC 是一个小巧的、 自洽的一致性测试集以及一个用于检查测试集真实性的运行器;它**不是**统计基准,**不是**扫描器,并且通过测试结果仅证明测试集的一致性,而非扫描器的准确性或 agent 的安全性。它是 自我验证的,尚未经过独立验证;请参阅 [docs/EXTERNAL_VALIDATION.md](docs/EXTERNAL_VALIDATION.md)。 ## 为什么会有这个项目 Agent-asset 扫描器对它们能检测到的内容做出了不同的声明:技能投毒 (skill poisoning)、MCP 范围提升 (scope escalation)、记忆投毒 (memory poisoning)、仅限 trace 的影子行为等。如果没有一个共享的测试套件,这些声明很难进行比较。 DVAAC 是一个用于这些声明的小巧、可重现的一致性测试集。每个测试套件都包含带漏洞或干净的输入制品、预期的扫描器发现结果以及一个预期的 AAC 模板。在任何团队使用它来为扫描器评分之前,运行器会验证其真实性在内部是否一致。 DVAAC **不是**统计基准、扫描器、漏洞数据库或保障保证。它包含 16 个手动编写的测试套件,是一个刻意设置的小型、非代表性样本。一个能通过 DVAAC 的扫描器仅仅证明它覆盖了这些特定的测试套件类别,而不是证明其具有通用的 agent 安全性。 ## 每个测试套件中包含什么 每个 `fixtures/NN-name/` 目录包含: - 源制品,例如 `SKILL.md`、MCP 描述符、A2A 卡片、记忆种子、脚本或 trace 证据; - 描述威胁和检测器期望的 `README.md`; - `expected-findings.json`,列出符合规范的扫描器应发出的发现; - `expected-aac.json`,一个带有占位符 `content_hash` 和 `signature` 的 AAC 模板; - 当 AAC 引用检测器输出、AIBOM 或 trace 制品时的本地证据文件。 运行器在执行一致性检查时使用 AAC 演示密钥对 AAC 模板进行签名。该签名是一项基础流程检查,而不是颁发者信任声明。生产环境扫描器应使用其自己的颁发者密钥对 AAC 进行签名。 ## 信任模型 DVAAC 的发布声明范围刻意设定得很窄: - 每个测试套件的预期输出都能根据 DVAAC schema 进行验证; - 重新计算本地源、证据、摘录和策略输入的摘要; - 检查预期发现和 AAC 发现的 ID、类别、严重性、标题、描述和主体是否完全一致; - AAC 模板在一致性检查阶段进行了演示签名,并由固定的 AAC 参考验证器进行了验证; - 由 `make write-signed` 生成的发布制品包含一个演示签名的 `RELEASE-MANIFEST.json`,它将已签名的 AAC 绑定到测试集清单、记分卡模板和 schema。 演示密钥不是信任锚。它证明了验证流程和可重现性,而不是作者身份。 ## 测试套件矩阵 | ID | 测试套件 | 威胁类别 | 最低检测器类别 | 预期判定 | |---:|---|---|---|---:| | 01 | `clean-declared-skill` | 基准干净技能 | static-declared | PASS | | 02 | `skill-md-prompt-injection` | 技能提示词注入 | static-declared | HOLD | | 03 | `hidden-test-payload` | 开发者执行面 | static-extended | FAIL | | 04 | `aac-core-clean-skill` | 可移植 AAC 基准 | static-declared | PASS | | 05 | `shadow-skill-from-trace` | 运行时影子技能 | trace-aware | HOLD | | 06 | `medium-overbroad-tool-scope` | 过宽的工具范围 | static-declared | PASS | | 07 | `low-missing-owner-metadata` | 元数据质量 | static-declared | PASS | | 08 | `info-local-only-skill` | 信息级检测器备注 | static-declared | PASS | | 09 | `cross-file-logic-split` | 跨文件行为拆分 | static-extended | HOLD | | 10 | `skill-drift` | 运行时指令漂移 | static-extended | HOLD | | 11 | `dynamic-remote-fetch` | 远程指令获取 | static-declared | HOLD | | 12 | `mcp-tool-scope-escalation` | MCP 工具范围提升 | static-declared | HOLD | | 13 | `secret-exfiltration-via-allowed-tool` | 允许工具的数据泄露 | static-declared | HOLD | | 14 | `memory-poisoning` | 被投毒的记忆种子 | static-extended | HOLD | | 15 | `a2a-delegation-misuse` | 跨 Agent 权限滥用 | static-declared | HOLD | | 16 | `accepted-critical-risk` | 接受的严重风险语义 | static-declared | HOLD | 检测器类别定义在 [TAXONOMY.md](TAXONOMY.md) 中。机器可读的测试套件元数据位于 [corpus.manifest.json](corpus.manifest.json) 中。 ## 快速开始 在检出的此代码库中: ``` git clone --branch v0.2-candidate.8 --depth 1 https://github.com/jlov7/agent-assurance-case ../agent-assurance-case test "$(git -C ../agent-assurance-case rev-parse HEAD)" = "936885583a49dfd06fd11ce45c8ee82330f1007d" uv venv source .venv/bin/activate uv pip install -r runner/requirements.txt AAC_VERIFIER_PATH=../agent-assurance-case/verifier/verify.py python3 runner/verify_fixtures.py ``` 此命令路径用于验证测试集,不会执行测试套件的 payload 代码。如果尚未安装 `uv`,请先安装:。 预期的最后一行输出: ``` DVAAC: all fixtures conform. ``` 要运行 pytest 收集安全门控或测试套件,还需安装开发依赖(它们会添加 `pytest` 和 `hypothesis`): ``` uv pip install -r runner/requirements-dev.txt ``` 如果您拥有 `make`(并且如上文的克隆步骤所示检出了同级的 AAC 验证器,或者设置了 `AAC_VERIFIER_PATH`): ``` make install # installs both runtime and dev dependencies make verify # resolves the AAC verifier from ../agent-assurance-case[-spec] make pytest-safety ``` 运行完整的发布就绪门控: ``` ./VERIFY-PUBLICATION-READY.sh ``` 从当前 `main` 验证已发布的发布指纹: ``` python3 scripts/verify_release_fingerprints.py ``` 该命令会检查不可变的 DVAAC 和 AAC 发布标签及提交、两者均已签名的标签、测试集一致性、记分卡验证器测试、pytest 收集安全性、公开发布的制品摘要、校验和文件,以及已记录的已发布的 `v0.1.5` 制品缺失 GitHub 制品证明的情况。 ## 运行器检查什么 `runner/verify_fixtures.py` 验证的是测试集本身。它不检测漏洞。 运行器检查: - 测试套件布局; - 对 JSON 文件拒绝重复键和非标准数字; - `expected-findings.json`、清单和记分卡 schema 的一致性; - 预期发现与 AAC 模板之间发现 ID/类别/严重性/标题/描述/主体的完全一致性; - 本地资产摘要; - 本地证据文件和行摘录摘要; - 策略输入哈希; - 拒绝符号链接并保证路径限制在测试套件本地; - AAC 验证器 API 兼容性和演示密钥常量; - 通过 AAC 参考验证器进行 AAC schema/profile/verdict/signature 验证。 生成用于发布/审计员审查的演示签名 AAC: ``` make write-signed ``` 这会写入 `dist/signed-aac/*.json`、`dist/signed-aac/RELEASE-MANIFEST.json` 和 `dist/signed-aac/SHA256SUMS`。发布清单经过演示签名,并将已签名的 AAC 绑定到定义该发布的测试集清单、记分卡模板和运行器 schema;校验和文件涵盖了这些制品。`dist/` 是被 Git 故意忽略的;在需要时,请将这些生成的制品附加到发布或归档存储库中。 ## 扫描器作者工作流 1. 针对每个测试套件的源制品运行您的扫描器。 2. 将发出的发现与 `expected-findings.json` 进行比较。 3. 如果您的扫描器会发出 AAC,请将其案例与 `expected-aac.json` 进行比较。 4. 使用 [scorecard-template.json](scorecard-template.json) 发布结果。 5. 使用当前 `main` 分支的验证器验证填写好的记分卡,以供账本考虑:`make validate-scorecard SCORECARD=path/to/scorecard.json`。`v0.1.5` 发布检出的验证器仍可通过 `python3 runner/validate_scorecard.py path/to/scorecard.json` 使用,但当前的 `main` 可能包含更严格的准入检查。 6. 声明您主张的检测器类别:`static-declared`、`static-extended` 或 `trace-aware`。 DVAAC 不给部分学分。只有当预期的类别、严重性和证据被足够准确地呈现,以至于审查者能够识别出相同的发现时,才算覆盖了一个测试套件。 有关第三方扫描器提交和批评边界,请参阅[扫描器集成](docs/SCANNER_INTEGRATION_GUIDE.md)、[外部验证](docs/EXTERNAL_VALIDATION.md)、[审查方案](docs/EXTERNAL_VALIDATION.md#review-recipes)、[记分卡字段指南](docs/SCORECARD_FIELD_GUIDE.md)、[测试集批评模板](corpus-critique-template.json)、[验证账本](docs/VALIDATION_LEDGER.md)、[发布指纹](docs/RELEASE_FINGERPRINTS.md) 以及当前的 [DVAAC v0.1.5 扫描器/测试集批评主题](https://github.com/jlov7/damn-vulnerable-agent-asset-corpus/issues/1)。 ## 安全性 DVAAC 的测试套件是刻意包含漏洞的。请勿执行测试套件的 payload。一致性运行器不会导入或执行测试套件代码。在运行任何文档记载的验证命令之外的内容之前,请阅读 [SECURITY.md](SECURITY.md)。 本代码库包含 pytest 收集防护和 CI 检查,用于阻止可被 pytest 发现的测试套件 payload 文件名,但这些控制措施并不是沙箱。 ## 映射 - [OWASP Agentic Skills Top 10 映射](mappings/owasp-agentic-skills-top-10.md) - [OWASP MCP Top 10 映射](mappings/owasp-mcp-top-10.md) - [AAC v0.2 映射](mappings/aac-v0.2.md) 这些映射仅供参考。它们 OWASP、CSA、NIST 或任何其他标准机构的认可。 ## 仓库结构 ``` fixtures/ vulnerable and clean corpus fixtures mappings/ informative mappings to external taxonomies docs/ evaluation, validation, and release-process notes docs/SCANNER_INTEGRATION_GUIDE.md scanner-author integration path runner/ conformance runner and runner schemas scripts/ executable release-fingerprint checks sbom/ CycloneDX runtime dependency SBOM runner/requirements.lock.txt hash-pinned resolved runtime dependency closure VERIFY-PUBLICATION-READY.sh one-command publication-readiness gate .github/workflows/ci.yml corpus conformance CI corpus.manifest.json machine-readable corpus index scorecard-template.json scanner result publication template TAXONOMY.md detector-class and threat-surface definitions SECURITY_POSTURE.md repository-level security posture and supply-chain signals SECURITY.md safe inspection rules ``` ## 引用 请参阅 [CITATION.cff](CITATION.cff) 和 [codemeta.json](codemeta.json)。引用归档的发布版本: v0.1.5 版本归档于 。被取代的 `v0.1.4` 归档依然可以在 找到,而被取代的 `v0.1.3` 归档依然可以在 找到。概念 DOI 将始终解析到最新版本。 ## 许可证 DVAAC 采用双许可证: - 测试套件、文档、映射和测试集内容:CC BY 4.0; - 运行器代码、`Makefile` 和机器可读 schema:Apache 2.0。 请参阅 [LICENSE.md](LICENSE.md)。 ## 独立性声明 这是 Jason Mark Lovell 的个人独立工作。它不是由任何雇主、客户、标准机构或附属组织编写、赞助、认可或审查的,也不代表其观点。
标签:AI智能体, 人工智能, 反取证, 安全规则引擎, 安全评估, 测试固件, 漏洞靶场, 用户模式Hook绕过, 逆向工具, 防御检测