agent-audit-kit 0.3.2__tar.gz → 0.3.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (318) hide show
  1. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/.github/workflows/cve-watcher.yml +16 -2
  2. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/.gitignore +3 -0
  3. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/CHANGELOG.cves.md +10 -0
  4. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/CHANGELOG.md +121 -0
  5. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/PKG-INFO +27 -6
  6. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/README.md +26 -5
  7. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/action.yml +1 -1
  8. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/__init__.py +2 -2
  9. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/cli.py +23 -4
  10. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/engine.py +2 -0
  11. agent_audit_kit-0.3.3/agent_audit_kit/output/sbom.py +289 -0
  12. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/rules/builtin.py +206 -18
  13. agent_audit_kit-0.3.3/agent_audit_kit/scanners/mcp_sdk_hardening.py +222 -0
  14. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/supply_chain.py +56 -0
  15. agent_audit_kit-0.3.3/agent_audit_kit/scanners/transport_limits.py +154 -0
  16. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/docs/owasp-agentic-coverage.md +4 -4
  17. agent_audit_kit-0.3.3/docs/plans/2026-04-21-v0.3.3-design.md +108 -0
  18. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/pyproject.toml +1 -1
  19. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/rules.json +337 -88
  20. agent_audit_kit-0.3.3/scripts/close_duplicate_cve_issues.py +145 -0
  21. agent_audit_kit-0.3.3/scripts/cve_watcher.py +216 -0
  22. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/scripts/gen_owasp_coverage.py +32 -0
  23. agent_audit_kit-0.3.3/tests/fixtures/cves/cve-2025-66335/patched/requirements.txt +2 -0
  24. agent_audit_kit-0.3.3/tests/fixtures/cves/cve-2025-66335/vulnerable/requirements.txt +2 -0
  25. agent_audit_kit-0.3.3/tests/fixtures/cves/cve-2026-39313/length-capped/http.ts +16 -0
  26. agent_audit_kit-0.3.3/tests/fixtures/cves/cve-2026-39313/patched/package.json +7 -0
  27. agent_audit_kit-0.3.3/tests/fixtures/cves/cve-2026-39313/vulnerable/http.ts +13 -0
  28. agent_audit_kit-0.3.3/tests/fixtures/cves/cve-2026-39313/vulnerable/package.json +7 -0
  29. agent_audit_kit-0.3.3/tests/fixtures/incidents/ox-mcp-2026-04-15/documented-risk/.agent-audit-kit.yml +4 -0
  30. agent_audit_kit-0.3.3/tests/fixtures/incidents/ox-mcp-2026-04-15/documented-risk/requirements.txt +1 -0
  31. agent_audit_kit-0.3.3/tests/fixtures/incidents/ox-mcp-2026-04-15/documented-risk/server.py +11 -0
  32. agent_audit_kit-0.3.3/tests/fixtures/incidents/ox-mcp-2026-04-15/python/sanitized/requirements.txt +1 -0
  33. agent_audit_kit-0.3.3/tests/fixtures/incidents/ox-mcp-2026-04-15/python/sanitized/server.py +17 -0
  34. agent_audit_kit-0.3.3/tests/fixtures/incidents/ox-mcp-2026-04-15/python/vulnerable/requirements.txt +1 -0
  35. agent_audit_kit-0.3.3/tests/fixtures/incidents/ox-mcp-2026-04-15/python/vulnerable/server.py +23 -0
  36. agent_audit_kit-0.3.3/tests/fixtures/incidents/ox-mcp-2026-04-15/typescript/sanitized/package.json +7 -0
  37. agent_audit_kit-0.3.3/tests/fixtures/incidents/ox-mcp-2026-04-15/typescript/sanitized/server.ts +12 -0
  38. agent_audit_kit-0.3.3/tests/fixtures/incidents/ox-mcp-2026-04-15/typescript/vulnerable/package.json +7 -0
  39. agent_audit_kit-0.3.3/tests/fixtures/incidents/ox-mcp-2026-04-15/typescript/vulnerable/server.ts +8 -0
  40. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_aicm.py +19 -0
  41. agent_audit_kit-0.3.3/tests/test_anthropic_sdk_hardening.py +80 -0
  42. agent_audit_kit-0.3.3/tests/test_cve_2025_66335.py +44 -0
  43. agent_audit_kit-0.3.3/tests/test_cve_2026_39313.py +54 -0
  44. agent_audit_kit-0.3.3/tests/test_cve_watcher_dedup.py +151 -0
  45. agent_audit_kit-0.3.3/tests/test_cyclonedx_aibom.py +78 -0
  46. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_owasp_agentic_coverage.py +19 -0
  47. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_phase5.py +1 -1
  48. agent_audit_kit-0.3.2/agent_audit_kit/output/sbom.py +0 -133
  49. agent_audit_kit-0.3.2/scripts/cve_watcher.py +0 -112
  50. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/.agent-audit-kit.yml +0 -0
  51. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/.claude/auto-memory/config.json +0 -0
  52. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/.github/FUNDING.yml +0 -0
  53. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  54. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  55. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  56. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/.github/dependabot.yml +0 -0
  57. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/.github/workflows/ci.yml +0 -0
  58. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/.github/workflows/codeql.yml +0 -0
  59. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/.github/workflows/docker-nightly.yml +0 -0
  60. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/.github/workflows/mcp-security-index.yml +0 -0
  61. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/.github/workflows/release.yml +0 -0
  62. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/.github/workflows/scorecard.yml +0 -0
  63. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/.github/workflows/sync-rule-count.yml +0 -0
  64. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/.pre-commit-config.yaml +0 -0
  65. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/.pre-commit-hooks.yaml +0 -0
  66. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/CLAUDE.md +0 -0
  67. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/CLAUDE_PROMPT.md +0 -0
  68. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/CODE_OF_CONDUCT.md +0 -0
  69. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/CONTRIBUTING.md +0 -0
  70. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/DEEP_ANALYSIS.md +0 -0
  71. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/Dockerfile +0 -0
  72. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/LICENSE +0 -0
  73. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/ROADMAP_2026.md +0 -0
  74. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/SECURITY.md +0 -0
  75. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/advisories.py +0 -0
  76. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/bundle.py +0 -0
  77. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/data/vuln_db.json +0 -0
  78. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/diff.py +0 -0
  79. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/discovery.py +0 -0
  80. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/fix.py +0 -0
  81. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/llm_scan.py +0 -0
  82. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/models.py +0 -0
  83. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/output/__init__.py +0 -0
  84. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/output/aicm.py +0 -0
  85. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/output/compliance.py +0 -0
  86. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/output/console.py +0 -0
  87. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/output/json_report.py +0 -0
  88. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/output/owasp_report.py +0 -0
  89. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/output/pdf_report.py +0 -0
  90. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/output/pr_summary.py +0 -0
  91. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/output/sarif.py +0 -0
  92. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/pinning.py +0 -0
  93. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/proxy/__init__.py +0 -0
  94. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/proxy/interceptor.py +0 -0
  95. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/rules/__init__.py +0 -0
  96. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/__init__.py +0 -0
  97. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/_helpers.py +0 -0
  98. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/a2a_protocol.py +0 -0
  99. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/agent_config.py +0 -0
  100. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/healthcare_ai.py +0 -0
  101. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/hook_injection.py +0 -0
  102. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/hook_rce.py +0 -0
  103. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/india_pii.py +0 -0
  104. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/langchain_vuln.py +0 -0
  105. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/legal_compliance.py +0 -0
  106. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/log_injection.py +0 -0
  107. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/marketplace_manifest.py +0 -0
  108. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/mcp_auth_patterns.py +0 -0
  109. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/mcp_config.py +0 -0
  110. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/mcp_middleware.py +0 -0
  111. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/mcp_tasks.py +0 -0
  112. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/neo4j_cve.py +0 -0
  113. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/oauth_misconfig.py +0 -0
  114. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/oauth_surface.py +0 -0
  115. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/pin_drift.py +0 -0
  116. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/routines.py +0 -0
  117. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/rust_pattern_scan.py +0 -0
  118. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/rust_scan.py +0 -0
  119. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/secret_exposure.py +0 -0
  120. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/skill_poisoning.py +0 -0
  121. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/ssrf_patterns.py +0 -0
  122. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/state_privacy.py +0 -0
  123. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/stdio_injection.py +0 -0
  124. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/taint_analysis.py +0 -0
  125. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/tool_poisoning.py +0 -0
  126. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/transport_security.py +0 -0
  127. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/trust_boundary.py +0 -0
  128. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/typescript_pattern_scan.py +0 -0
  129. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/typescript_scan.py +0 -0
  130. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scoring.py +0 -0
  131. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/verification.py +0 -0
  132. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/vuln_db.py +0 -0
  133. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/watch.py +0 -0
  134. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/benchmarks/README.md +0 -0
  135. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/benchmarks/crawler.py +0 -0
  136. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/benchmarks/index_builder.py +0 -0
  137. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/benchmarks/run_benchmark.sh +0 -0
  138. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/benchmarks/sample_configs/sample_01_clean.json +0 -0
  139. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/benchmarks/sample_configs/sample_02_secrets.json +0 -0
  140. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/benchmarks/sample_configs/sample_03_no_auth.json +0 -0
  141. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/benchmarks/sample_configs/sample_04_shell_injection.json +0 -0
  142. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/benchmarks/sample_configs/sample_05_mixed.json +0 -0
  143. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/benchmarks/sources.py +0 -0
  144. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/ci/gitlab/agent-audit-kit.gitlab-ci.yml +0 -0
  145. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/docs/CNAME +0 -0
  146. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/docs/blog/state-of-mcp-security-template.md +0 -0
  147. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/docs/ci-cd.md +0 -0
  148. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/docs/comparison.md +0 -0
  149. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/docs/comparisons.md +0 -0
  150. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/docs/disclosure-policy.md +0 -0
  151. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/docs/getting-started.md +0 -0
  152. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/docs/gitlab-ci.md +0 -0
  153. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/docs/index.md +0 -0
  154. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/docs/launch/CHECKLIST.md +0 -0
  155. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/docs/launch/hn.md +0 -0
  156. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/docs/launch/press.md +0 -0
  157. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/docs/launch/reddit.md +0 -0
  158. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/docs/launch/release-notes-v0.3.0.md +0 -0
  159. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/docs/launch/x-thread.md +0 -0
  160. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/docs/metrics.md +0 -0
  161. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/docs/owasp-mapping.md +0 -0
  162. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/docs/research-log.md +0 -0
  163. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/docs/rule-schema.md +0 -0
  164. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/docs/rules.md +0 -0
  165. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/entrypoint.sh +0 -0
  166. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/README.md +0 -0
  167. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/case-studies/damn-vulnerable-mcp/README.md +0 -0
  168. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/case-studies/damn-vulnerable-mcp/configs/dvmcp-inspired.mcp.json +0 -0
  169. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/case-studies/damn-vulnerable-mcp/configs/dvmcp-settings.json +0 -0
  170. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/case-studies/damn-vulnerable-mcp/scan-results.json +0 -0
  171. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/case-studies/damn-vulnerable-mcp/scan-results.sarif +0 -0
  172. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/ci-integration/README.md +0 -0
  173. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/ci-integration/docker-one-liner.sh +0 -0
  174. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/ci-integration/github-actions-sarif.yml +0 -0
  175. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/ci-integration/gitlab-ci-scan.yml +0 -0
  176. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/ci-integration/pre-commit-config.yaml +0 -0
  177. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/run-all-examples.sh +0 -0
  178. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/vulnerable-configs/01-no-auth-remote/.mcp.json +0 -0
  179. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/vulnerable-configs/01-no-auth-remote/expected-findings.json +0 -0
  180. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/vulnerable-configs/02-shell-injection/.mcp.json +0 -0
  181. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/vulnerable-configs/02-shell-injection/expected-findings.json +0 -0
  182. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/vulnerable-configs/03-hardcoded-secrets/.gitignore +0 -0
  183. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/vulnerable-configs/03-hardcoded-secrets/.mcp.json +0 -0
  184. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/vulnerable-configs/03-hardcoded-secrets/expected-findings.json +0 -0
  185. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/vulnerable-configs/04-hook-exfiltration/.claude/settings.json +0 -0
  186. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/vulnerable-configs/04-hook-exfiltration/expected-findings.json +0 -0
  187. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/vulnerable-configs/05-trust-boundary-violations/.claude/settings.json +0 -0
  188. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/vulnerable-configs/05-trust-boundary-violations/.mcp.json +0 -0
  189. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/vulnerable-configs/05-trust-boundary-violations/expected-findings.json +0 -0
  190. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/vulnerable-configs/06-tool-poisoning/.mcp.json +0 -0
  191. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/vulnerable-configs/06-tool-poisoning/expected-findings.json +0 -0
  192. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/vulnerable-configs/07-tainted-tool-function/expected-findings.json +0 -0
  193. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/vulnerable-configs/07-tainted-tool-function/server.py +0 -0
  194. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/vulnerable-configs/08-transport-insecurity/.mcp.json +0 -0
  195. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/vulnerable-configs/08-transport-insecurity/expected-findings.json +0 -0
  196. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/vulnerable-configs/09-a2a-insecure-agent/agent-card.json +0 -0
  197. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/vulnerable-configs/09-a2a-insecure-agent/expected-findings.json +0 -0
  198. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/vulnerable-configs/10-supply-chain-risks/.mcp.json +0 -0
  199. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/vulnerable-configs/10-supply-chain-risks/expected-findings.json +0 -0
  200. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/vulnerable-configs/10-supply-chain-risks/package.json +0 -0
  201. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/vulnerable-configs/11-legal-compliance/expected-findings.json +0 -0
  202. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/vulnerable-configs/11-legal-compliance/package.json +0 -0
  203. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/vulnerable-configs/11-legal-compliance/subproject/package.json +0 -0
  204. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/vulnerable-configs/README.md +0 -0
  205. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/launch/MARKET-RESEARCH-2026-04-12.md +0 -0
  206. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/launch/awesome-list-prs/awesome-opensource-security.md +0 -0
  207. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/launch/awesome-list-prs/awesome-security.md +0 -0
  208. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/launch/blog-50-mcp-servers.md +0 -0
  209. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/launch/demo.cast +0 -0
  210. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/launch/owasp-outreach.md +0 -0
  211. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/mkdocs.yml +0 -0
  212. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/requirements-lock.txt +0 -0
  213. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/scripts/generate_lockfile.py +0 -0
  214. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/scripts/sync_rule_count.py +0 -0
  215. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/scripts/watch_csa_mcp_baseline.py +0 -0
  216. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/conftest.py +0 -0
  217. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/clean_mcp.json +0 -0
  218. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/clean_settings.json +0 -0
  219. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/a2a_2026/vulnerable_card.json +0 -0
  220. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/cve-2026-30615/patched/py_argv_allowlist.py +0 -0
  221. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/cve-2026-30615/vulnerable/py_os_system_stdin.py +0 -0
  222. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/cve-2026-30615/vulnerable/py_subprocess_shell.py +0 -0
  223. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/cve-2026-30615/vulnerable/ts_execa_shell.ts +0 -0
  224. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/cve-2026-33032/patched/router.go +0 -0
  225. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/cve-2026-33032/vulnerable/router.go +0 -0
  226. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/cve-2026-33032/vulnerable/server.py +0 -0
  227. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/cve-2026-33032/vulnerable/server.ts +0 -0
  228. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/cve-2026-40933/vulnerable/flow.json +0 -0
  229. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/healthcare_ai/safe_skill.md +0 -0
  230. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/healthcare_ai/vulnerable_skill.md +0 -0
  231. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/hook_rce/safe_settings.json +0 -0
  232. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/hook_rce/vulnerable_settings.json +0 -0
  233. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/india_pii/safe.txt +0 -0
  234. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/india_pii/vulnerable.txt +0 -0
  235. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/langchain/safe_requirements.txt +0 -0
  236. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/langchain/vulnerable_prompt.py +0 -0
  237. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/langchain/vulnerable_requirements.txt +0 -0
  238. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/marketplace/safe.json +0 -0
  239. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/marketplace/vulnerable.json +0 -0
  240. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/mcp_auth/safe_server.py +0 -0
  241. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/mcp_auth/vulnerable_server.py +0 -0
  242. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/oauth/safe.py +0 -0
  243. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/oauth/vulnerable.py +0 -0
  244. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/routines/safe.json +0 -0
  245. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/routines/vulnerable.json +0 -0
  246. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/skills/safe.md +0 -0
  247. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/skills/vulnerable.md +0 -0
  248. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/ssrf/safe.py +0 -0
  249. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/ssrf/vulnerable.py +0 -0
  250. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/state_privacy/safe_privacy.md +0 -0
  251. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/state_privacy/vulnerable_privacy.md +0 -0
  252. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/tasks/safe.py +0 -0
  253. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/tasks/vulnerable.py +0 -0
  254. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/env_with_secrets +0 -0
  255. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/incidents/vercel-2026-04-19/app.yaml +0 -0
  256. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/package_with_risks.json +0 -0
  257. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/vulnerable_hooks.json +0 -0
  258. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/vulnerable_mcp.json +0 -0
  259. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/vulnerable_settings.json +0 -0
  260. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_a2a_2026.py +0 -0
  261. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_a2a_protocol.py +0 -0
  262. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_action.py +0 -0
  263. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_agent_config.py +0 -0
  264. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_cli.py +0 -0
  265. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_compliance_output.py +0 -0
  266. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_compliance_v2.py +0 -0
  267. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_csa_baseline_watcher.py +0 -0
  268. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_cve_fix_and_watch_and_advisories.py +0 -0
  269. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_cves_2026.py +0 -0
  270. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_diff.py +0 -0
  271. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_discovery.py +0 -0
  272. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_engine.py +0 -0
  273. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_examples.py +0 -0
  274. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_fix.py +0 -0
  275. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_flowise.py +0 -0
  276. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_healthcare_ai_and_state_privacy.py +0 -0
  277. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_hook_injection.py +0 -0
  278. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_index_builder.py +0 -0
  279. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_india_pii.py +0 -0
  280. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_legal_compliance.py +0 -0
  281. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_llm_scan.py +0 -0
  282. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_llm_scan_mod.py +0 -0
  283. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_marketplace_manifest.py +0 -0
  284. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_marketplace_sources.py +0 -0
  285. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_mcp_config.py +0 -0
  286. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_mcpwn.py +0 -0
  287. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_oauth_surface.py +0 -0
  288. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_owasp_report.py +0 -0
  289. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_owasp_report_output.py +0 -0
  290. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_phase3.py +0 -0
  291. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_pin_drift.py +0 -0
  292. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_pinning.py +0 -0
  293. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_pinning_mod.py +0 -0
  294. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_pr_summary.py +0 -0
  295. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_proxy.py +0 -0
  296. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_rule_count_sync.py +0 -0
  297. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_sarif_fingerprints.py +0 -0
  298. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_sarif_github_upload.py +0 -0
  299. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_sarif_output.py +0 -0
  300. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_scoring.py +0 -0
  301. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_secret_exposure.py +0 -0
  302. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_skill_poisoning.py +0 -0
  303. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_stdio_injection.py +0 -0
  304. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_supply_chain.py +0 -0
  305. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_taint_analysis.py +0 -0
  306. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_tool_poisoning.py +0 -0
  307. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_transport_security.py +0 -0
  308. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_trust_boundary.py +0 -0
  309. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_v0_3_1_cve_rules.py +0 -0
  310. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_verification.py +0 -0
  311. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_verification_mod.py +0 -0
  312. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_vuln_db.py +0 -0
  313. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/vscode-extension/.vscodeignore +0 -0
  314. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/vscode-extension/CLAUDE.md +0 -0
  315. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/vscode-extension/README.md +0 -0
  316. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/vscode-extension/package.json +0 -0
  317. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/vscode-extension/src/extension.ts +0 -0
  318. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/vscode-extension/tsconfig.json +0 -0
@@ -25,13 +25,27 @@ jobs:
25
25
  with:
26
26
  python-version: "3.11"
27
27
 
28
- - name: Fetch NVD MCP CVEs and diff against CHANGELOG.cves.md
28
+ - name: Restore cve-watcher state
29
+ uses: actions/cache@v4
30
+ with:
31
+ path: .aak/cve-watcher-state.json
32
+ key: cve-watcher-state-${{ github.repository }}
33
+ restore-keys: cve-watcher-state-
34
+
35
+ - name: Fetch NVD MCP CVEs and diff against CHANGELOG.cves.md + open issues
29
36
  id: diff
30
37
  env:
31
38
  NVD_API_KEY: ${{ secrets.NVD_API_KEY }}
39
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
40
+ GITHUB_REPOSITORY: ${{ github.repository }}
32
41
  run: |
33
42
  python3 scripts/cve_watcher.py > new_cves.json
34
- test -s new_cves.json && echo "new_cves=true" >> "$GITHUB_OUTPUT" || echo "new_cves=false" >> "$GITHUB_OUTPUT"
43
+ # Treat bare "[]" as empty.
44
+ if [ "$(tr -d ' \n\t' < new_cves.json)" = "[]" ] || [ ! -s new_cves.json ]; then
45
+ echo "new_cves=false" >> "$GITHUB_OUTPUT"
46
+ else
47
+ echo "new_cves=true" >> "$GITHUB_OUTPUT"
48
+ fi
35
49
 
36
50
  - name: File response-tracking issue
37
51
  if: steps.diff.outputs.new_cves == 'true'
@@ -45,3 +45,6 @@ Thumbs.db
45
45
  benchmarks/data/
46
46
  benchmarks/results.json
47
47
  benchmarks/site/
48
+
49
+ # v0.3.3: cve-watcher persistent state
50
+ .aak/cve-watcher-state.json
@@ -8,6 +8,16 @@ shipped-at timestamp. The GitHub Action `.github/workflows/cve-watcher.yml`
8
8
  diffs NVD's MCP keyword feed against this file and opens an
9
9
  `sla-48h`-labelled issue for anything new.
10
10
 
11
+ ## Shipped in v0.3.3 (2026-04-21)
12
+
13
+ | CVE / Incident | Advisory | AAK rule(s) | Shipped | Latency |
14
+ |---|---|---|---|---|
15
+ | CVE-2026-39313 | [GitLab advisory](https://advisories.gitlab.com/npm/mcp-framework/CVE-2026-39313/) — mcp-framework < 0.2.22 HTTP-body DoS | **AAK-MCPFRAME-001** | 2026-04-21 | 5d (tracking issue → rule) |
16
+ | CVE-2025-66335 | [Apache advisory](http://www.mail-archive.com/dev@doris.apache.org/msg11406.html) — apache-doris-mcp-server < 0.6.1 SQL injection | **AAK-DORIS-001** | 2026-04-21 | <48h |
17
+ | OX-MCP-2026-04-15 (incident) | [OX Security](https://www.ox.security/blog/the-mother-of-all-ai-supply-chains-critical-systemic-vulnerability-at-the-core-of-the-mcp/) · Anthropic declined to CVE | **AAK-ANTHROPIC-SDK-001** (SDK-level), AAK-STDIO-001 (sink-level) | 2026-04-21 | 6d (design-class rule) |
18
+
19
+ Deferred to v0.3.4 pending NVD resolution (records unresolvable during 2026-04-21 cycle): CVE-2026-6599 (#47), CVE-2026-39861 (#53).
20
+
11
21
  ## Shipped in v0.3.2 (2026-04-20)
12
22
 
13
23
  | CVE / Incident | Advisory | AAK rule(s) | Shipped | Latency |
@@ -5,6 +5,127 @@ All notable changes to AgentAuditKit are documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.3.3] - 2026-04-21
9
+
10
+ **Headline: mcp-framework + Apache Doris pin-checks, Anthropic MCP SDK
11
+ STDIO hardening, CVE-watcher dedup, AICM density to ≥51%, CycloneDX
12
+ AI-BOM emitter.**
13
+
14
+ Clears the 48h SLA on CVE-2026-39313 and CVE-2025-66335, adds the
15
+ SDK-level inheritance check the OX Security 2026-04-15 disclosure asked
16
+ for, roots out the watcher regression that opened five copies of
17
+ CVE-2026-6599, and lifts the AICM mapping density from a 7% starter to
18
+ a real procurement-facing 63%.
19
+
20
+ ### Added — rule coverage (3 new rules, 148 → 151)
21
+
22
+ - **AAK-MCPFRAME-001** (MEDIUM) — CVE-2026-39313, mcp-framework < 0.2.22
23
+ HTTP-body DoS. Detection: `package.json` pin-check + TS/JS regex for
24
+ `readRequestBody`-style chunk-concat accumulating into a string
25
+ without a `Content-Length` / `maxMessageSize` guard. Ships in a new
26
+ `scanners/transport_limits.py`. Strips `//` and `/* ... */` comments
27
+ before matching the size-guard regex so docstring mentions do not
28
+ spuriously suppress.
29
+ - **AAK-DORIS-001** (HIGH) — CVE-2025-66335, apache-doris-mcp-server
30
+ < 0.6.1 SQL injection via query-context neutralization bypass.
31
+ Pin-check scans `requirements*.txt`, `pyproject.toml`,
32
+ `Pipfile(.lock)`, `poetry.lock`, `uv.lock`. Lives in
33
+ `scanners/supply_chain.py`.
34
+ - **AAK-ANTHROPIC-SDK-001** (HIGH) — SDK-level STDIO sanitization
35
+ inheritance check covering the OX Security 2026-04-15 class.
36
+ Anthropic declined to CVE — "sanitization is the developer's
37
+ responsibility". Fires only when (a) an upstream MCP SDK is declared
38
+ in a manifest (Python `mcp`/`modelcontextprotocol`, TS
39
+ `@modelcontextprotocol/sdk`, Java `io.modelcontextprotocol:*`, Rust
40
+ equivalents), (b) a STDIO transport is exposed, and (c) no
41
+ sanitizer, HTTP opt-out, or documented risk acceptance is present.
42
+ Opt-out via `.agent-audit-kit.yml` with `accepts_stdio_risk: true`
43
+ plus a non-empty `justification:`. Ships in a new
44
+ `scanners/mcp_sdk_hardening.py`. Tagged
45
+ `incident_references=["OX-MCP-2026-04-15"]`.
46
+
47
+ ### Added — OWASP Agentic 2026 density floor
48
+
49
+ - `tests/test_owasp_agentic_coverage.py` now enforces a **≥3 rules per
50
+ ASI slot** density floor (parametrized). The marketing claim
51
+ "OWASP Agentic Top 10: 10/10" is now backed by a test that fails
52
+ CI if any slot falls below three rules.
53
+ - `AAK-A2A-003`, `AAK-A2A-011`, `AAK-A2A-012` gain `ASI08` tags
54
+ (Agent Communication Poisoning) — lifts ASI08 coverage from 1 rule
55
+ to 3.
56
+ - `scripts/gen_owasp_coverage.py` additionally rewrites a
57
+ `<!-- owasp-coverage:start -->`…`<!-- owasp-coverage:end -->`
58
+ marker in `README.md` so the rendered coverage table stays in lockstep
59
+ with the code.
60
+
61
+ ### Added — CSA AICM density to ≥51%
62
+
63
+ - `_AICM_TAGS` in `agent_audit_kit/rules/builtin.py` expands from 10
64
+ rules (7%) to **95 rules (63%)**, covering the SECRET-*, SUPPLY-*,
65
+ TRUST-*, TRANSPORT-*, A2A-*, POISON-*, TAINT-*, SSRF-*, OAUTH-*,
66
+ SKILL-*, MARKETPLACE-*, HOOK-*, and CVE-response families. Each
67
+ family maps to the canonical AICM control domain (DSP / IAM / STA /
68
+ CEK / AIS / LOG / IVS / CCC).
69
+ - `tests/test_aicm.py` gets a **density floor assertion** — the suite
70
+ now fails CI if fewer than 75 rules carry an AICM tag.
71
+ - `--compliance aicm` CSV output reflects the expanded mapping
72
+ automatically; no CLI change needed.
73
+
74
+ ### Added — CycloneDX AI-BOM emitter
75
+
76
+ - `agent-audit-kit sbom --format aibom` emits a CycloneDX 1.5 AI/ML-BOM
77
+ on top of the existing SBOM primitive. Adds:
78
+ - `components` entries with `type: "machine-learning-model"` for each
79
+ detected vendor SDK (anthropic/Claude, openai/GPT, cohere/Command).
80
+ - A `formulation` block listing detected agent-platform SDKs
81
+ (LangChain, LangSmith, LangGraph, LangFuse, Helicone, Humanloop,
82
+ MCP SDK) with pURLs where the pin can be extracted.
83
+ - `metadata.properties`: `aak:rule-bundle-sha256` (pulled from
84
+ `rules.json.sha256` if present), `aak:aibom: "1"` marker, and one
85
+ `aak:incident-fired` per fired incident reference so the BOM can
86
+ double as attestation evidence.
87
+ - Covered by `tests/test_cyclonedx_aibom.py`.
88
+
89
+ ### Fixed — CVE-response watcher dedup (Task A)
90
+
91
+ - `scripts/cve_watcher.py` was only deduping against
92
+ `CHANGELOG.cves.md`. A CVE sitting in the SLA queue without a rule
93
+ yet never reached the changelog, so the 6-hourly cron re-opened it.
94
+ Over 48h this filed five copies of CVE-2026-6599 (#47/#48/#50/#52/#55)
95
+ and three of CVE-2025-66335.
96
+ - Rewritten with three layers of dedup (any one suppresses):
97
+ 1. `CHANGELOG.cves.md`.
98
+ 2. Persistent `.aak/cve-watcher-state.json` (cached across workflow
99
+ runs via `actions/cache`).
100
+ 3. Open `cve-response` issue titles + bodies via the GitHub REST API.
101
+ - New `scripts/close_duplicate_cve_issues.py` groups existing open
102
+ `cve-response` issues by extracted CVE ID, keeps the lowest-numbered,
103
+ closes the rest with a cross-reference body. Ran against live repo
104
+ during this release: closed #48, #50, #51, #52, #54, #55, #56 (7
105
+ dups).
106
+ - `.github/workflows/cve-watcher.yml` now wires `GITHUB_TOKEN` +
107
+ `GITHUB_REPOSITORY` into the diff step and restores the state file
108
+ from `actions/cache`.
109
+ - Covered by `tests/test_cve_watcher_dedup.py` — five scenarios
110
+ including the observed "same CVE × 3 cron runs" replay.
111
+
112
+ ### Added — provenance plumbing
113
+
114
+ - `CHANGELOG.cves.md` gains entries for CVE-2026-39313,
115
+ CVE-2025-66335, and the OX-MCP-2026-04-15 incident class.
116
+ - `watch.py` parameter annotations updated from the string-form
117
+ `"callable | None"` to the proper `Callable[[int, list[Any]], None]`
118
+ (incidental mypy-1.x compatibility fix carried over from 0.3.2.1
119
+ hotfix).
120
+ - `scanners/marketplace_manifest.py` ships the Python 3.10 `tomli`
121
+ fallback that made CI green for 0.3.2 — kept for 0.3.3.
122
+
123
+ ### Thanks
124
+
125
+ OX Security for the 2026-04-15 "Mother of all AI supply chains"
126
+ disclosure; Apache Doris for the 0.6.1 patch turnaround; the CSA AICM
127
+ working group for publishing a v1 control catalog we can map to.
128
+
8
129
  ## [0.3.2] - 2026-04-20
9
130
 
10
131
  **Headline: MCPwn coverage + third-party OAuth-app surface + OWASP Agentic 2026 coverage proof.**
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agent-audit-kit
3
- Version: 0.3.2
3
+ Version: 0.3.3
4
4
  Summary: Security scanner for MCP-connected AI agent pipelines
5
5
  Project-URL: Homepage, https://github.com/sattyamjjain/agent-audit-kit
6
6
  Project-URL: Repository, https://github.com/sattyamjjain/agent-audit-kit
@@ -42,7 +42,7 @@ Description-Content-Type: text/markdown
42
42
  <a href="https://pypi.org/project/agent-audit-kit/"><img src="https://img.shields.io/pypi/v/agent-audit-kit.svg" alt="PyPI"></a>
43
43
  <a href="https://www.python.org/downloads/"><img src="https://img.shields.io/badge/python-3.9+-blue.svg" alt="Python 3.9+"></a>
44
44
  <a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="License: MIT"></a>
45
- <a href="#what-it-scans"><img src="https://img.shields.io/badge/rules-148-blue.svg" alt="Rules: 148"></a>
45
+ <a href="#what-it-scans"><img src="https://img.shields.io/badge/rules-151-blue.svg" alt="Rules: 151"></a>
46
46
  <a href="#frameworks--standards"><img src="https://img.shields.io/badge/OWASP_Agentic-10%2F10-green.svg" alt="OWASP Agentic: 10/10"></a>
47
47
  <a href="#frameworks--standards"><img src="https://img.shields.io/badge/OWASP_MCP-10%2F10-green.svg" alt="OWASP MCP: 10/10"></a>
48
48
  <a href="https://sattyamjjain.github.io/agent-audit-kit/"><img src="https://img.shields.io/badge/MCP_Security_Index-live-blue.svg" alt="MCP Security Index"></a>
@@ -57,7 +57,7 @@ Description-Content-Type: text/markdown
57
57
 
58
58
  Security scanner for MCP-connected AI agent pipelines. Finds misconfigurations, hardcoded secrets, tool poisoning, rug pulls, trust boundary violations, and tainted data flows across **13 agent platforms**.
59
59
 
60
- - **<!-- rule-count:total -->148<!-- /rule-count --> rules** across 11 security categories, covering the 2026 CVE wave
60
+ - **<!-- rule-count:total -->151<!-- /rule-count --> rules** across 11 security categories, covering the 2026 CVE wave
61
61
  - **28 scanner modules** including AST-based Python taint analysis and regex pattern scanners for TypeScript/JavaScript and Rust
62
62
  - **16 CLI commands**: `scan`, `discover`, `pin`, `verify`, `fix`, `score`, `update`, `proxy`, `kill`, `watch`, plus `export-rules`, `verify-bundle`, `sbom`, `report`, `install-precommit`, and the Security-Advisories scan flag
63
63
  - **OWASP coverage**: Agentic Top 10 (10/10), MCP Top 10 (10/10), Adversa AI Top 25
@@ -149,7 +149,7 @@ agent-audit-kit scan examples/vulnerable-configs/04-hook-exfiltration/
149
149
  | **Transport Security** | 4 | HTTP endpoints, TLS disabled, deprecated SSE, tokens in URL query strings |
150
150
  | **Legal Compliance** | 3 | Copyleft licenses (AGPL/SSPL), missing licenses, DMCA-flagged packages |
151
151
 
152
- **<!-- rule-count:total -->148<!-- /rule-count --> rules total.** Every finding includes severity, evidence, remediation, OWASP references, Adversa references, and CVE links where applicable.
152
+ **<!-- rule-count:total -->151<!-- /rule-count --> rules total.** Every finding includes severity, evidence, remediation, OWASP references, Adversa references, and CVE links where applicable.
153
153
 
154
154
  ### Agent Platforms Scanned
155
155
 
@@ -304,8 +304,29 @@ Generate an SVG badge for your README: `agent-audit-kit score . --badge`
304
304
 
305
305
  | Framework | Coverage |
306
306
  |-----------|----------|
307
- | **OWASP Agentic Top 10** (ASI01-ASI10) | 10/10 (100%) |
307
+ | **OWASP Agentic Top 10** (ASI01-ASI10) | 10/10 (100%) — density by slot below |
308
308
  | **OWASP MCP Top 10** (MCP01-MCP10) | 10/10 (100%) |
309
+
310
+ <details>
311
+ <summary>OWASP Agentic Top 10 — density by slot</summary>
312
+
313
+ <!-- owasp-coverage:start -->
314
+ | ASI | Title | # rules |
315
+ | --- | --- | --- |
316
+ | **ASI01** | Goal Hijack | 7 |
317
+ | **ASI02** | Tool Misuse | 12 |
318
+ | **ASI03** | Memory Poisoning | 42 |
319
+ | **ASI04** | Identity & Privilege Abuse | 20 |
320
+ | **ASI05** | Cascading Failures | 25 |
321
+ | **ASI06** | Unauthorized Capability Acquisition | 23 |
322
+ | **ASI07** | Plan Injection | 9 |
323
+ | **ASI08** | Agent Communication Poisoning | 4 |
324
+ | **ASI09** | Resource Abuse | 5 |
325
+ | **ASI10** | Supply-Chain | 5 |
326
+ <!-- owasp-coverage:end -->
327
+
328
+ </details>
329
+
309
330
  | **Adversa AI MCP Security Top 25** | Fully mapped |
310
331
  | **EU AI Act** | `--compliance eu-ai-act` |
311
332
  | **SOC 2 Type II** | `--compliance soc2` |
@@ -338,7 +359,7 @@ See [`docs/comparisons.md`](docs/comparisons.md) for a fully-sourced version. Ve
338
359
  | Feature | AgentAuditKit | Microsoft AGT | Snyk Agent Scan | Semgrep Multimodal |
339
360
  |---------|:---:|:---:|:---:|:---:|
340
361
  | Scope | Static scanner + compliance PDFs | Runtime governance | Static + runtime | Multimodal SAST |
341
- | Detection rules (static) | **<!-- rule-count:total -->148<!-- /rule-count -->** | Runtime policies, not rules | ~30 | LLM-assisted |
362
+ | Detection rules (static) | **<!-- rule-count:total -->151<!-- /rule-count -->** | Runtime policies, not rules | ~30 | LLM-assisted |
342
363
  | OWASP Agentic 10/10 | **Yes** | Yes | Partial | Partial |
343
364
  | OWASP MCP 10/10 | **Yes** | No (runtime-focused) | No | No |
344
365
  | Auditor-ready PDF compliance | **11 frameworks** | No | 0 | 0 |
@@ -8,7 +8,7 @@
8
8
  <a href="https://pypi.org/project/agent-audit-kit/"><img src="https://img.shields.io/pypi/v/agent-audit-kit.svg" alt="PyPI"></a>
9
9
  <a href="https://www.python.org/downloads/"><img src="https://img.shields.io/badge/python-3.9+-blue.svg" alt="Python 3.9+"></a>
10
10
  <a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="License: MIT"></a>
11
- <a href="#what-it-scans"><img src="https://img.shields.io/badge/rules-148-blue.svg" alt="Rules: 148"></a>
11
+ <a href="#what-it-scans"><img src="https://img.shields.io/badge/rules-151-blue.svg" alt="Rules: 151"></a>
12
12
  <a href="#frameworks--standards"><img src="https://img.shields.io/badge/OWASP_Agentic-10%2F10-green.svg" alt="OWASP Agentic: 10/10"></a>
13
13
  <a href="#frameworks--standards"><img src="https://img.shields.io/badge/OWASP_MCP-10%2F10-green.svg" alt="OWASP MCP: 10/10"></a>
14
14
  <a href="https://sattyamjjain.github.io/agent-audit-kit/"><img src="https://img.shields.io/badge/MCP_Security_Index-live-blue.svg" alt="MCP Security Index"></a>
@@ -23,7 +23,7 @@
23
23
 
24
24
  Security scanner for MCP-connected AI agent pipelines. Finds misconfigurations, hardcoded secrets, tool poisoning, rug pulls, trust boundary violations, and tainted data flows across **13 agent platforms**.
25
25
 
26
- - **<!-- rule-count:total -->148<!-- /rule-count --> rules** across 11 security categories, covering the 2026 CVE wave
26
+ - **<!-- rule-count:total -->151<!-- /rule-count --> rules** across 11 security categories, covering the 2026 CVE wave
27
27
  - **28 scanner modules** including AST-based Python taint analysis and regex pattern scanners for TypeScript/JavaScript and Rust
28
28
  - **16 CLI commands**: `scan`, `discover`, `pin`, `verify`, `fix`, `score`, `update`, `proxy`, `kill`, `watch`, plus `export-rules`, `verify-bundle`, `sbom`, `report`, `install-precommit`, and the Security-Advisories scan flag
29
29
  - **OWASP coverage**: Agentic Top 10 (10/10), MCP Top 10 (10/10), Adversa AI Top 25
@@ -115,7 +115,7 @@ agent-audit-kit scan examples/vulnerable-configs/04-hook-exfiltration/
115
115
  | **Transport Security** | 4 | HTTP endpoints, TLS disabled, deprecated SSE, tokens in URL query strings |
116
116
  | **Legal Compliance** | 3 | Copyleft licenses (AGPL/SSPL), missing licenses, DMCA-flagged packages |
117
117
 
118
- **<!-- rule-count:total -->148<!-- /rule-count --> rules total.** Every finding includes severity, evidence, remediation, OWASP references, Adversa references, and CVE links where applicable.
118
+ **<!-- rule-count:total -->151<!-- /rule-count --> rules total.** Every finding includes severity, evidence, remediation, OWASP references, Adversa references, and CVE links where applicable.
119
119
 
120
120
  ### Agent Platforms Scanned
121
121
 
@@ -270,8 +270,29 @@ Generate an SVG badge for your README: `agent-audit-kit score . --badge`
270
270
 
271
271
  | Framework | Coverage |
272
272
  |-----------|----------|
273
- | **OWASP Agentic Top 10** (ASI01-ASI10) | 10/10 (100%) |
273
+ | **OWASP Agentic Top 10** (ASI01-ASI10) | 10/10 (100%) — density by slot below |
274
274
  | **OWASP MCP Top 10** (MCP01-MCP10) | 10/10 (100%) |
275
+
276
+ <details>
277
+ <summary>OWASP Agentic Top 10 — density by slot</summary>
278
+
279
+ <!-- owasp-coverage:start -->
280
+ | ASI | Title | # rules |
281
+ | --- | --- | --- |
282
+ | **ASI01** | Goal Hijack | 7 |
283
+ | **ASI02** | Tool Misuse | 12 |
284
+ | **ASI03** | Memory Poisoning | 42 |
285
+ | **ASI04** | Identity & Privilege Abuse | 20 |
286
+ | **ASI05** | Cascading Failures | 25 |
287
+ | **ASI06** | Unauthorized Capability Acquisition | 23 |
288
+ | **ASI07** | Plan Injection | 9 |
289
+ | **ASI08** | Agent Communication Poisoning | 4 |
290
+ | **ASI09** | Resource Abuse | 5 |
291
+ | **ASI10** | Supply-Chain | 5 |
292
+ <!-- owasp-coverage:end -->
293
+
294
+ </details>
295
+
275
296
  | **Adversa AI MCP Security Top 25** | Fully mapped |
276
297
  | **EU AI Act** | `--compliance eu-ai-act` |
277
298
  | **SOC 2 Type II** | `--compliance soc2` |
@@ -304,7 +325,7 @@ See [`docs/comparisons.md`](docs/comparisons.md) for a fully-sourced version. Ve
304
325
  | Feature | AgentAuditKit | Microsoft AGT | Snyk Agent Scan | Semgrep Multimodal |
305
326
  |---------|:---:|:---:|:---:|:---:|
306
327
  | Scope | Static scanner + compliance PDFs | Runtime governance | Static + runtime | Multimodal SAST |
307
- | Detection rules (static) | **<!-- rule-count:total -->148<!-- /rule-count -->** | Runtime policies, not rules | ~30 | LLM-assisted |
328
+ | Detection rules (static) | **<!-- rule-count:total -->151<!-- /rule-count -->** | Runtime policies, not rules | ~30 | LLM-assisted |
308
329
  | OWASP Agentic 10/10 | **Yes** | Yes | Partial | Partial |
309
330
  | OWASP MCP 10/10 | **Yes** | No (runtime-focused) | No | No |
310
331
  | Auditor-ready PDF compliance | **11 frameworks** | No | 0 | 0 |
@@ -1,5 +1,5 @@
1
1
  name: 'AgentAuditKit MCP Security Scan'
2
- description: 'AgentAuditKit — MCP Security Scan (148 rules, OWASP Agentic Top 10 + MCP Top 10)'
2
+ description: 'AgentAuditKit — MCP Security Scan (151 rules, OWASP Agentic Top 10 + MCP Top 10)'
3
3
  author: 'sattyamjjain'
4
4
 
5
5
  branding:
@@ -1,5 +1,5 @@
1
1
  """AgentAuditKit — Security scanner for MCP-connected AI agent pipelines."""
2
2
  from __future__ import annotations
3
3
 
4
- __version__ = "0.3.2"
5
- RULE_COUNT = 148
4
+ __version__ = "0.3.3"
5
+ RULE_COUNT = 151
@@ -705,18 +705,37 @@ def verify_bundle_cmd(bundle: str, sig_path: str | None) -> None:
705
705
  @click.option(
706
706
  "--format",
707
707
  "sbom_format",
708
- type=click.Choice(["cyclonedx", "spdx"]),
708
+ type=click.Choice(["cyclonedx", "spdx", "aibom"]),
709
709
  default="cyclonedx",
710
- help="SBOM format.",
710
+ help=(
711
+ "SBOM format. `cyclonedx` + `spdx` are standard SBOMs; `aibom` "
712
+ "emits a CycloneDX 1.5 AI/ML-BOM with machine-learning-model "
713
+ "components, detected agent-platform SDKs, and rule-bundle "
714
+ "provenance properties."
715
+ ),
711
716
  )
712
717
  @click.option("--output", "-o", "output_file", type=click.Path(), default=None,
713
718
  help="Write SBOM to file (defaults to stdout).")
714
719
  def sbom_cmd(path: str, sbom_format: str, output_file: str | None) -> None:
715
- """Emit a CycloneDX 1.5 or SPDX 2.3 SBOM for the project's MCP dependencies."""
720
+ """Emit a CycloneDX 1.5 / SPDX 2.3 SBOM or a CycloneDX AI-BOM (`--format aibom`)."""
716
721
  from agent_audit_kit.output.sbom import emit_cyclonedx, emit_spdx
717
722
 
718
723
  project = Path(path)
719
- payload = emit_cyclonedx(project) if sbom_format == "cyclonedx" else emit_spdx(project)
724
+ if sbom_format == "spdx":
725
+ payload = emit_spdx(project)
726
+ elif sbom_format == "aibom":
727
+ # Best-effort: pull the shipped rule-bundle hash if the user has
728
+ # the file committed locally; don't fail the emit if it's absent.
729
+ sha256_path = project / "rules.json.sha256"
730
+ rule_hash: str | None = None
731
+ if sha256_path.is_file():
732
+ try:
733
+ rule_hash = sha256_path.read_text(encoding="utf-8").split()[0]
734
+ except OSError:
735
+ rule_hash = None
736
+ payload = emit_cyclonedx(project, aibom=True, rule_bundle_sha256=rule_hash)
737
+ else:
738
+ payload = emit_cyclonedx(project)
720
739
  if output_file:
721
740
  Path(output_file).write_text(payload, encoding="utf-8")
722
741
  click.echo(f"SBOM written to {output_file}", err=True)
@@ -51,6 +51,8 @@ _OPTIONAL_SCANNERS: list[tuple[str, str, list[str]]] = [
51
51
  ("log_injection", "MCP tool log-injection (CVE-2026-6494)", []),
52
52
  ("mcp_middleware", "MCPwn twin-route middleware asymmetry (CVE-2026-33032)", []),
53
53
  ("oauth_surface", "Third-party OAuth surface (VERCEL-2026-04-19)", []),
54
+ ("transport_limits", "Transport body-size limits (CVE-2026-39313)", []),
55
+ ("mcp_sdk_hardening", "Upstream MCP SDK STDIO hardening (OX-MCP-2026-04-15)", []),
54
56
  ]
55
57
 
56
58