agent-audit-kit 0.3.2__tar.gz → 0.3.4__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 (351) hide show
  1. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/.github/workflows/ci.yml +1 -1
  2. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/.github/workflows/cve-watcher.yml +17 -3
  3. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/.github/workflows/docker-nightly.yml +2 -2
  4. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/.github/workflows/mcp-security-index.yml +1 -1
  5. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/.github/workflows/release.yml +7 -7
  6. agent_audit_kit-0.3.4/.github/workflows/sync-repo-metadata.yml +45 -0
  7. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/.github/workflows/sync-rule-count.yml +1 -1
  8. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/.gitignore +3 -0
  9. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/CHANGELOG.cves.md +24 -0
  10. agent_audit_kit-0.3.4/CHANGELOG.md +411 -0
  11. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/PKG-INFO +28 -7
  12. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/README.md +27 -6
  13. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/action.yml +1 -1
  14. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/__init__.py +2 -2
  15. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/cli.py +23 -4
  16. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/engine.py +5 -0
  17. agent_audit_kit-0.3.4/agent_audit_kit/output/sbom.py +289 -0
  18. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/rules/builtin.py +401 -18
  19. agent_audit_kit-0.3.4/agent_audit_kit/scanners/dns_rebind.py +322 -0
  20. agent_audit_kit-0.3.4/agent_audit_kit/scanners/gha_hardening.py +120 -0
  21. agent_audit_kit-0.3.4/agent_audit_kit/scanners/log_token_leak.py +243 -0
  22. agent_audit_kit-0.3.4/agent_audit_kit/scanners/mcp_sdk_hardening.py +222 -0
  23. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/scanners/supply_chain.py +102 -0
  24. agent_audit_kit-0.3.4/agent_audit_kit/scanners/transport_limits.py +164 -0
  25. agent_audit_kit-0.3.4/docs/launch/owasp-reference-tool-submission.md +66 -0
  26. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/docs/launch/x-thread.md +1 -1
  27. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/docs/owasp-agentic-coverage.md +5 -5
  28. agent_audit_kit-0.3.4/docs/plans/2026-04-21-v0.3.3-design.md +108 -0
  29. agent_audit_kit-0.3.4/public/owasp-agentic-coverage.json +1332 -0
  30. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/pyproject.toml +1 -1
  31. agent_audit_kit-0.3.4/requirements-lock.txt +83 -0
  32. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/rules.json +514 -88
  33. agent_audit_kit-0.3.4/scripts/close_duplicate_cve_issues.py +145 -0
  34. agent_audit_kit-0.3.4/scripts/cve_watcher.py +216 -0
  35. agent_audit_kit-0.3.4/scripts/gen_owasp_coverage.py +221 -0
  36. agent_audit_kit-0.3.4/scripts/sync_repo_metadata.py +147 -0
  37. agent_audit_kit-0.3.4/tests/fixtures/cves/cve-2025-66335/patched/requirements.txt +2 -0
  38. agent_audit_kit-0.3.4/tests/fixtures/cves/cve-2025-66335/vulnerable/requirements.txt +2 -0
  39. agent_audit_kit-0.3.4/tests/fixtures/cves/cve-2026-20205/patched-splunk-pin/requirements.txt +1 -0
  40. agent_audit_kit-0.3.4/tests/fixtures/cves/cve-2026-20205/redacted-token-log/server.py +8 -0
  41. agent_audit_kit-0.3.4/tests/fixtures/cves/cve-2026-20205/vulnerable-splunk-pin/requirements.txt +1 -0
  42. agent_audit_kit-0.3.4/tests/fixtures/cves/cve-2026-20205/vulnerable-token-log/server.py +8 -0
  43. agent_audit_kit-0.3.4/tests/fixtures/cves/cve-2026-39313/length-capped/http.ts +16 -0
  44. agent_audit_kit-0.3.4/tests/fixtures/cves/cve-2026-39313/patched/package.json +7 -0
  45. agent_audit_kit-0.3.4/tests/fixtures/cves/cve-2026-39313/vulnerable/http.ts +13 -0
  46. agent_audit_kit-0.3.4/tests/fixtures/cves/cve-2026-39313/vulnerable/package.json +7 -0
  47. agent_audit_kit-0.3.4/tests/fixtures/cves/dns-rebind-sdk-class/apollo-patched/package.json +7 -0
  48. agent_audit_kit-0.3.4/tests/fixtures/cves/dns-rebind-sdk-class/apollo-vulnerable/package.json +7 -0
  49. agent_audit_kit-0.3.4/tests/fixtures/cves/dns-rebind-sdk-class/java-patched/pom.xml +14 -0
  50. agent_audit_kit-0.3.4/tests/fixtures/cves/dns-rebind-sdk-class/java-vulnerable/pom.xml +14 -0
  51. agent_audit_kit-0.3.4/tests/fixtures/cves/dns-rebind-sdk-class/python-patched/requirements.txt +1 -0
  52. agent_audit_kit-0.3.4/tests/fixtures/cves/dns-rebind-sdk-class/python-pattern-guarded/requirements.txt +2 -0
  53. agent_audit_kit-0.3.4/tests/fixtures/cves/dns-rebind-sdk-class/python-pattern-guarded/server.py +10 -0
  54. agent_audit_kit-0.3.4/tests/fixtures/cves/dns-rebind-sdk-class/python-pattern-unguarded/requirements.txt +2 -0
  55. agent_audit_kit-0.3.4/tests/fixtures/cves/dns-rebind-sdk-class/python-pattern-unguarded/server.py +6 -0
  56. agent_audit_kit-0.3.4/tests/fixtures/cves/dns-rebind-sdk-class/python-vulnerable/requirements.txt +1 -0
  57. agent_audit_kit-0.3.4/tests/fixtures/incidents/ox-mcp-2026-04-15/documented-risk/.agent-audit-kit.yml +4 -0
  58. agent_audit_kit-0.3.4/tests/fixtures/incidents/ox-mcp-2026-04-15/documented-risk/requirements.txt +1 -0
  59. agent_audit_kit-0.3.4/tests/fixtures/incidents/ox-mcp-2026-04-15/documented-risk/server.py +11 -0
  60. agent_audit_kit-0.3.4/tests/fixtures/incidents/ox-mcp-2026-04-15/python/sanitized/requirements.txt +1 -0
  61. agent_audit_kit-0.3.4/tests/fixtures/incidents/ox-mcp-2026-04-15/python/sanitized/server.py +17 -0
  62. agent_audit_kit-0.3.4/tests/fixtures/incidents/ox-mcp-2026-04-15/python/vulnerable/requirements.txt +1 -0
  63. agent_audit_kit-0.3.4/tests/fixtures/incidents/ox-mcp-2026-04-15/python/vulnerable/server.py +23 -0
  64. agent_audit_kit-0.3.4/tests/fixtures/incidents/ox-mcp-2026-04-15/typescript/sanitized/package.json +7 -0
  65. agent_audit_kit-0.3.4/tests/fixtures/incidents/ox-mcp-2026-04-15/typescript/sanitized/server.ts +12 -0
  66. agent_audit_kit-0.3.4/tests/fixtures/incidents/ox-mcp-2026-04-15/typescript/vulnerable/package.json +7 -0
  67. agent_audit_kit-0.3.4/tests/fixtures/incidents/ox-mcp-2026-04-15/typescript/vulnerable/server.ts +8 -0
  68. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/test_aicm.py +19 -0
  69. agent_audit_kit-0.3.4/tests/test_anthropic_sdk_hardening.py +80 -0
  70. agent_audit_kit-0.3.4/tests/test_cve_2025_66335.py +44 -0
  71. agent_audit_kit-0.3.4/tests/test_cve_2025_66414_python_sdk.py +40 -0
  72. agent_audit_kit-0.3.4/tests/test_cve_2026_20205_splunk.py +60 -0
  73. agent_audit_kit-0.3.4/tests/test_cve_2026_35568_java.py +47 -0
  74. agent_audit_kit-0.3.4/tests/test_cve_2026_35577_apollo.py +41 -0
  75. agent_audit_kit-0.3.4/tests/test_cve_2026_39313.py +54 -0
  76. agent_audit_kit-0.3.4/tests/test_cve_2026_40576_excel.py +40 -0
  77. agent_audit_kit-0.3.4/tests/test_cve_2026_40608_next_ai_draw.py +36 -0
  78. agent_audit_kit-0.3.4/tests/test_cve_watcher_dedup.py +152 -0
  79. agent_audit_kit-0.3.4/tests/test_cyclonedx_aibom.py +78 -0
  80. agent_audit_kit-0.3.4/tests/test_gha_immutable.py +133 -0
  81. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/test_owasp_agentic_coverage.py +19 -0
  82. agent_audit_kit-0.3.4/tests/test_owasp_public_json.py +74 -0
  83. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/test_phase5.py +1 -1
  84. agent_audit_kit-0.3.4/tests/test_repo_metadata_sync.py +68 -0
  85. agent_audit_kit-0.3.2/CHANGELOG.md +0 -198
  86. agent_audit_kit-0.3.2/agent_audit_kit/output/sbom.py +0 -133
  87. agent_audit_kit-0.3.2/requirements-lock.txt +0 -63
  88. agent_audit_kit-0.3.2/scripts/cve_watcher.py +0 -112
  89. agent_audit_kit-0.3.2/scripts/gen_owasp_coverage.py +0 -89
  90. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/.agent-audit-kit.yml +0 -0
  91. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/.claude/auto-memory/config.json +0 -0
  92. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/.github/FUNDING.yml +0 -0
  93. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  94. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  95. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  96. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/.github/dependabot.yml +0 -0
  97. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/.github/workflows/codeql.yml +0 -0
  98. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/.github/workflows/scorecard.yml +0 -0
  99. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/.pre-commit-config.yaml +0 -0
  100. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/.pre-commit-hooks.yaml +0 -0
  101. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/CLAUDE.md +0 -0
  102. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/CLAUDE_PROMPT.md +0 -0
  103. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/CODE_OF_CONDUCT.md +0 -0
  104. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/CONTRIBUTING.md +0 -0
  105. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/DEEP_ANALYSIS.md +0 -0
  106. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/Dockerfile +0 -0
  107. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/LICENSE +0 -0
  108. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/ROADMAP_2026.md +0 -0
  109. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/SECURITY.md +0 -0
  110. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/advisories.py +0 -0
  111. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/bundle.py +0 -0
  112. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/data/vuln_db.json +0 -0
  113. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/diff.py +0 -0
  114. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/discovery.py +0 -0
  115. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/fix.py +0 -0
  116. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/llm_scan.py +0 -0
  117. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/models.py +0 -0
  118. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/output/__init__.py +0 -0
  119. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/output/aicm.py +0 -0
  120. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/output/compliance.py +0 -0
  121. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/output/console.py +0 -0
  122. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/output/json_report.py +0 -0
  123. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/output/owasp_report.py +0 -0
  124. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/output/pdf_report.py +0 -0
  125. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/output/pr_summary.py +0 -0
  126. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/output/sarif.py +0 -0
  127. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/pinning.py +0 -0
  128. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/proxy/__init__.py +0 -0
  129. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/proxy/interceptor.py +0 -0
  130. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/rules/__init__.py +0 -0
  131. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/scanners/__init__.py +0 -0
  132. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/scanners/_helpers.py +0 -0
  133. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/scanners/a2a_protocol.py +0 -0
  134. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/scanners/agent_config.py +0 -0
  135. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/scanners/healthcare_ai.py +0 -0
  136. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/scanners/hook_injection.py +0 -0
  137. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/scanners/hook_rce.py +0 -0
  138. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/scanners/india_pii.py +0 -0
  139. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/scanners/langchain_vuln.py +0 -0
  140. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/scanners/legal_compliance.py +0 -0
  141. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/scanners/log_injection.py +0 -0
  142. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/scanners/marketplace_manifest.py +0 -0
  143. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/scanners/mcp_auth_patterns.py +0 -0
  144. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/scanners/mcp_config.py +0 -0
  145. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/scanners/mcp_middleware.py +0 -0
  146. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/scanners/mcp_tasks.py +0 -0
  147. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/scanners/neo4j_cve.py +0 -0
  148. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/scanners/oauth_misconfig.py +0 -0
  149. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/scanners/oauth_surface.py +0 -0
  150. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/scanners/pin_drift.py +0 -0
  151. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/scanners/routines.py +0 -0
  152. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/scanners/rust_pattern_scan.py +0 -0
  153. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/scanners/rust_scan.py +0 -0
  154. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/scanners/secret_exposure.py +0 -0
  155. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/scanners/skill_poisoning.py +0 -0
  156. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/scanners/ssrf_patterns.py +0 -0
  157. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/scanners/state_privacy.py +0 -0
  158. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/scanners/stdio_injection.py +0 -0
  159. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/scanners/taint_analysis.py +0 -0
  160. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/scanners/tool_poisoning.py +0 -0
  161. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/scanners/transport_security.py +0 -0
  162. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/scanners/trust_boundary.py +0 -0
  163. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/scanners/typescript_pattern_scan.py +0 -0
  164. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/scanners/typescript_scan.py +0 -0
  165. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/scoring.py +0 -0
  166. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/verification.py +0 -0
  167. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/vuln_db.py +0 -0
  168. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/agent_audit_kit/watch.py +0 -0
  169. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/benchmarks/README.md +0 -0
  170. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/benchmarks/crawler.py +0 -0
  171. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/benchmarks/index_builder.py +0 -0
  172. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/benchmarks/run_benchmark.sh +0 -0
  173. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/benchmarks/sample_configs/sample_01_clean.json +0 -0
  174. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/benchmarks/sample_configs/sample_02_secrets.json +0 -0
  175. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/benchmarks/sample_configs/sample_03_no_auth.json +0 -0
  176. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/benchmarks/sample_configs/sample_04_shell_injection.json +0 -0
  177. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/benchmarks/sample_configs/sample_05_mixed.json +0 -0
  178. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/benchmarks/sources.py +0 -0
  179. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/ci/gitlab/agent-audit-kit.gitlab-ci.yml +0 -0
  180. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/docs/CNAME +0 -0
  181. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/docs/blog/state-of-mcp-security-template.md +0 -0
  182. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/docs/ci-cd.md +0 -0
  183. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/docs/comparison.md +0 -0
  184. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/docs/comparisons.md +0 -0
  185. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/docs/disclosure-policy.md +0 -0
  186. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/docs/getting-started.md +0 -0
  187. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/docs/gitlab-ci.md +0 -0
  188. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/docs/index.md +0 -0
  189. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/docs/launch/CHECKLIST.md +0 -0
  190. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/docs/launch/hn.md +0 -0
  191. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/docs/launch/press.md +0 -0
  192. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/docs/launch/reddit.md +0 -0
  193. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/docs/launch/release-notes-v0.3.0.md +0 -0
  194. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/docs/metrics.md +0 -0
  195. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/docs/owasp-mapping.md +0 -0
  196. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/docs/research-log.md +0 -0
  197. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/docs/rule-schema.md +0 -0
  198. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/docs/rules.md +0 -0
  199. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/entrypoint.sh +0 -0
  200. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/examples/README.md +0 -0
  201. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/examples/case-studies/damn-vulnerable-mcp/README.md +0 -0
  202. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/examples/case-studies/damn-vulnerable-mcp/configs/dvmcp-inspired.mcp.json +0 -0
  203. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/examples/case-studies/damn-vulnerable-mcp/configs/dvmcp-settings.json +0 -0
  204. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/examples/case-studies/damn-vulnerable-mcp/scan-results.json +0 -0
  205. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/examples/case-studies/damn-vulnerable-mcp/scan-results.sarif +0 -0
  206. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/examples/ci-integration/README.md +0 -0
  207. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/examples/ci-integration/docker-one-liner.sh +0 -0
  208. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/examples/ci-integration/github-actions-sarif.yml +0 -0
  209. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/examples/ci-integration/gitlab-ci-scan.yml +0 -0
  210. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/examples/ci-integration/pre-commit-config.yaml +0 -0
  211. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/examples/run-all-examples.sh +0 -0
  212. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/examples/vulnerable-configs/01-no-auth-remote/.mcp.json +0 -0
  213. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/examples/vulnerable-configs/01-no-auth-remote/expected-findings.json +0 -0
  214. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/examples/vulnerable-configs/02-shell-injection/.mcp.json +0 -0
  215. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/examples/vulnerable-configs/02-shell-injection/expected-findings.json +0 -0
  216. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/examples/vulnerable-configs/03-hardcoded-secrets/.gitignore +0 -0
  217. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/examples/vulnerable-configs/03-hardcoded-secrets/.mcp.json +0 -0
  218. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/examples/vulnerable-configs/03-hardcoded-secrets/expected-findings.json +0 -0
  219. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/examples/vulnerable-configs/04-hook-exfiltration/.claude/settings.json +0 -0
  220. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/examples/vulnerable-configs/04-hook-exfiltration/expected-findings.json +0 -0
  221. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/examples/vulnerable-configs/05-trust-boundary-violations/.claude/settings.json +0 -0
  222. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/examples/vulnerable-configs/05-trust-boundary-violations/.mcp.json +0 -0
  223. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/examples/vulnerable-configs/05-trust-boundary-violations/expected-findings.json +0 -0
  224. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/examples/vulnerable-configs/06-tool-poisoning/.mcp.json +0 -0
  225. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/examples/vulnerable-configs/06-tool-poisoning/expected-findings.json +0 -0
  226. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/examples/vulnerable-configs/07-tainted-tool-function/expected-findings.json +0 -0
  227. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/examples/vulnerable-configs/07-tainted-tool-function/server.py +0 -0
  228. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/examples/vulnerable-configs/08-transport-insecurity/.mcp.json +0 -0
  229. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/examples/vulnerable-configs/08-transport-insecurity/expected-findings.json +0 -0
  230. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/examples/vulnerable-configs/09-a2a-insecure-agent/agent-card.json +0 -0
  231. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/examples/vulnerable-configs/09-a2a-insecure-agent/expected-findings.json +0 -0
  232. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/examples/vulnerable-configs/10-supply-chain-risks/.mcp.json +0 -0
  233. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/examples/vulnerable-configs/10-supply-chain-risks/expected-findings.json +0 -0
  234. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/examples/vulnerable-configs/10-supply-chain-risks/package.json +0 -0
  235. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/examples/vulnerable-configs/11-legal-compliance/expected-findings.json +0 -0
  236. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/examples/vulnerable-configs/11-legal-compliance/package.json +0 -0
  237. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/examples/vulnerable-configs/11-legal-compliance/subproject/package.json +0 -0
  238. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/examples/vulnerable-configs/README.md +0 -0
  239. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/launch/MARKET-RESEARCH-2026-04-12.md +0 -0
  240. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/launch/awesome-list-prs/awesome-opensource-security.md +0 -0
  241. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/launch/awesome-list-prs/awesome-security.md +0 -0
  242. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/launch/blog-50-mcp-servers.md +0 -0
  243. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/launch/demo.cast +0 -0
  244. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/launch/owasp-outreach.md +0 -0
  245. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/mkdocs.yml +0 -0
  246. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/scripts/generate_lockfile.py +0 -0
  247. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/scripts/sync_rule_count.py +0 -0
  248. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/scripts/watch_csa_mcp_baseline.py +0 -0
  249. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/conftest.py +0 -0
  250. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/fixtures/clean_mcp.json +0 -0
  251. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/fixtures/clean_settings.json +0 -0
  252. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/fixtures/cves/a2a_2026/vulnerable_card.json +0 -0
  253. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/fixtures/cves/cve-2026-30615/patched/py_argv_allowlist.py +0 -0
  254. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/fixtures/cves/cve-2026-30615/vulnerable/py_os_system_stdin.py +0 -0
  255. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/fixtures/cves/cve-2026-30615/vulnerable/py_subprocess_shell.py +0 -0
  256. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/fixtures/cves/cve-2026-30615/vulnerable/ts_execa_shell.ts +0 -0
  257. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/fixtures/cves/cve-2026-33032/patched/router.go +0 -0
  258. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/fixtures/cves/cve-2026-33032/vulnerable/router.go +0 -0
  259. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/fixtures/cves/cve-2026-33032/vulnerable/server.py +0 -0
  260. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/fixtures/cves/cve-2026-33032/vulnerable/server.ts +0 -0
  261. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/fixtures/cves/cve-2026-40933/vulnerable/flow.json +0 -0
  262. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/fixtures/cves/healthcare_ai/safe_skill.md +0 -0
  263. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/fixtures/cves/healthcare_ai/vulnerable_skill.md +0 -0
  264. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/fixtures/cves/hook_rce/safe_settings.json +0 -0
  265. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/fixtures/cves/hook_rce/vulnerable_settings.json +0 -0
  266. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/fixtures/cves/india_pii/safe.txt +0 -0
  267. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/fixtures/cves/india_pii/vulnerable.txt +0 -0
  268. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/fixtures/cves/langchain/safe_requirements.txt +0 -0
  269. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/fixtures/cves/langchain/vulnerable_prompt.py +0 -0
  270. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/fixtures/cves/langchain/vulnerable_requirements.txt +0 -0
  271. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/fixtures/cves/marketplace/safe.json +0 -0
  272. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/fixtures/cves/marketplace/vulnerable.json +0 -0
  273. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/fixtures/cves/mcp_auth/safe_server.py +0 -0
  274. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/fixtures/cves/mcp_auth/vulnerable_server.py +0 -0
  275. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/fixtures/cves/oauth/safe.py +0 -0
  276. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/fixtures/cves/oauth/vulnerable.py +0 -0
  277. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/fixtures/cves/routines/safe.json +0 -0
  278. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/fixtures/cves/routines/vulnerable.json +0 -0
  279. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/fixtures/cves/skills/safe.md +0 -0
  280. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/fixtures/cves/skills/vulnerable.md +0 -0
  281. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/fixtures/cves/ssrf/safe.py +0 -0
  282. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/fixtures/cves/ssrf/vulnerable.py +0 -0
  283. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/fixtures/cves/state_privacy/safe_privacy.md +0 -0
  284. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/fixtures/cves/state_privacy/vulnerable_privacy.md +0 -0
  285. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/fixtures/cves/tasks/safe.py +0 -0
  286. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/fixtures/cves/tasks/vulnerable.py +0 -0
  287. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/fixtures/env_with_secrets +0 -0
  288. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/fixtures/incidents/vercel-2026-04-19/app.yaml +0 -0
  289. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/fixtures/package_with_risks.json +0 -0
  290. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/fixtures/vulnerable_hooks.json +0 -0
  291. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/fixtures/vulnerable_mcp.json +0 -0
  292. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/fixtures/vulnerable_settings.json +0 -0
  293. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/test_a2a_2026.py +0 -0
  294. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/test_a2a_protocol.py +0 -0
  295. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/test_action.py +0 -0
  296. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/test_agent_config.py +0 -0
  297. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/test_cli.py +0 -0
  298. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/test_compliance_output.py +0 -0
  299. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/test_compliance_v2.py +0 -0
  300. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/test_csa_baseline_watcher.py +0 -0
  301. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/test_cve_fix_and_watch_and_advisories.py +0 -0
  302. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/test_cves_2026.py +0 -0
  303. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/test_diff.py +0 -0
  304. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/test_discovery.py +0 -0
  305. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/test_engine.py +0 -0
  306. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/test_examples.py +0 -0
  307. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/test_fix.py +0 -0
  308. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/test_flowise.py +0 -0
  309. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/test_healthcare_ai_and_state_privacy.py +0 -0
  310. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/test_hook_injection.py +0 -0
  311. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/test_index_builder.py +0 -0
  312. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/test_india_pii.py +0 -0
  313. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/test_legal_compliance.py +0 -0
  314. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/test_llm_scan.py +0 -0
  315. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/test_llm_scan_mod.py +0 -0
  316. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/test_marketplace_manifest.py +0 -0
  317. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/test_marketplace_sources.py +0 -0
  318. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/test_mcp_config.py +0 -0
  319. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/test_mcpwn.py +0 -0
  320. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/test_oauth_surface.py +0 -0
  321. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/test_owasp_report.py +0 -0
  322. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/test_owasp_report_output.py +0 -0
  323. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/test_phase3.py +0 -0
  324. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/test_pin_drift.py +0 -0
  325. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/test_pinning.py +0 -0
  326. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/test_pinning_mod.py +0 -0
  327. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/test_pr_summary.py +0 -0
  328. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/test_proxy.py +0 -0
  329. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/test_rule_count_sync.py +0 -0
  330. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/test_sarif_fingerprints.py +0 -0
  331. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/test_sarif_github_upload.py +0 -0
  332. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/test_sarif_output.py +0 -0
  333. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/test_scoring.py +0 -0
  334. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/test_secret_exposure.py +0 -0
  335. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/test_skill_poisoning.py +0 -0
  336. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/test_stdio_injection.py +0 -0
  337. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/test_supply_chain.py +0 -0
  338. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/test_taint_analysis.py +0 -0
  339. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/test_tool_poisoning.py +0 -0
  340. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/test_transport_security.py +0 -0
  341. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/test_trust_boundary.py +0 -0
  342. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/test_v0_3_1_cve_rules.py +0 -0
  343. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/test_verification.py +0 -0
  344. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/test_verification_mod.py +0 -0
  345. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/tests/test_vuln_db.py +0 -0
  346. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/vscode-extension/.vscodeignore +0 -0
  347. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/vscode-extension/CLAUDE.md +0 -0
  348. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/vscode-extension/README.md +0 -0
  349. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/vscode-extension/package.json +0 -0
  350. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/vscode-extension/src/extension.ts +0 -0
  351. {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.4}/vscode-extension/tsconfig.json +0 -0
@@ -17,7 +17,7 @@ jobs:
17
17
  - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
18
18
 
19
19
  - name: Set up Python ${{ matrix.python-version }}
20
- uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1
20
+ uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
21
21
  with:
22
22
  python-version: ${{ matrix.python-version }}
23
23
 
@@ -21,17 +21,31 @@ jobs:
21
21
  - uses: actions/checkout@v4
22
22
 
23
23
  - name: Set up Python
24
- uses: actions/setup-python@v5
24
+ uses: actions/setup-python@v6.2.0
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'
@@ -24,7 +24,7 @@ jobs:
24
24
  uses: docker/setup-buildx-action@v3
25
25
 
26
26
  - name: Login to GHCR
27
- uses: docker/login-action@v3
27
+ uses: docker/login-action@v4
28
28
  with:
29
29
  registry: ghcr.io
30
30
  username: ${{ github.actor }}
@@ -38,7 +38,7 @@ jobs:
38
38
 
39
39
  - name: Build + push (latest + nightly + date tag)
40
40
  id: push
41
- uses: docker/build-push-action@v5
41
+ uses: docker/build-push-action@v7
42
42
  with:
43
43
  context: .
44
44
  push: true
@@ -27,7 +27,7 @@ jobs:
27
27
  fetch-depth: 0
28
28
 
29
29
  - name: Set up Python
30
- uses: actions/setup-python@v5
30
+ uses: actions/setup-python@v6.2.0
31
31
  with:
32
32
  python-version: "3.11"
33
33
 
@@ -53,7 +53,7 @@ jobs:
53
53
  - uses: actions/checkout@v4
54
54
 
55
55
  - name: Set up Python
56
- uses: actions/setup-python@v5
56
+ uses: actions/setup-python@v6.2.0
57
57
  with:
58
58
  python-version: '3.11'
59
59
 
@@ -85,7 +85,7 @@ jobs:
85
85
  uses: docker/setup-buildx-action@v3
86
86
 
87
87
  - name: Log in to GHCR
88
- uses: docker/login-action@v3
88
+ uses: docker/login-action@v4
89
89
  with:
90
90
  registry: ghcr.io
91
91
  username: ${{ github.actor }}
@@ -96,7 +96,7 @@ jobs:
96
96
  run: echo "version=${GITHUB_REF_NAME#v}" >> "$GITHUB_OUTPUT"
97
97
 
98
98
  - name: Build image for scanning
99
- uses: docker/build-push-action@v5
99
+ uses: docker/build-push-action@v7
100
100
  with:
101
101
  context: .
102
102
  load: true
@@ -112,7 +112,7 @@ jobs:
112
112
 
113
113
  - name: Build and push
114
114
  id: push
115
- uses: docker/build-push-action@v5
115
+ uses: docker/build-push-action@v7
116
116
  with:
117
117
  context: .
118
118
  push: true
@@ -129,7 +129,7 @@ jobs:
129
129
  cache-to: type=gha,mode=max
130
130
 
131
131
  - name: Generate SLSA provenance attestation
132
- uses: actions/attest-build-provenance@v2
132
+ uses: actions/attest-build-provenance@v4
133
133
  with:
134
134
  subject-name: ghcr.io/sattyamjjain/agent-audit-kit
135
135
  subject-digest: ${{ steps.push.outputs.digest }}
@@ -149,7 +149,7 @@ jobs:
149
149
  - uses: actions/checkout@v4
150
150
 
151
151
  - name: Set up Python
152
- uses: actions/setup-python@v5
152
+ uses: actions/setup-python@v6.2.0
153
153
  with:
154
154
  python-version: '3.11'
155
155
 
@@ -216,7 +216,7 @@ jobs:
216
216
  path: signed
217
217
 
218
218
  - name: Create release
219
- uses: softprops/action-gh-release@v2
219
+ uses: softprops/action-gh-release@v3
220
220
  with:
221
221
  generate_release_notes: true
222
222
  files: |
@@ -0,0 +1,45 @@
1
+ name: Sync repo metadata
2
+ on:
3
+ release:
4
+ types: [published]
5
+ workflow_dispatch:
6
+
7
+ permissions:
8
+ contents: read
9
+
10
+ jobs:
11
+ sync:
12
+ runs-on: ubuntu-latest
13
+ permissions:
14
+ contents: write
15
+ steps:
16
+ - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
17
+ with:
18
+ fetch-depth: 0
19
+ token: ${{ secrets.METADATA_SYNC_TOKEN || secrets.GITHUB_TOKEN }}
20
+ - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v6.2.0
21
+ with:
22
+ python-version: '3.12'
23
+ - name: Rewrite README + docs pins
24
+ run: python scripts/sync_repo_metadata.py --write
25
+ - name: Update GitHub repo description
26
+ env:
27
+ GH_TOKEN: ${{ secrets.METADATA_SYNC_TOKEN || secrets.GITHUB_TOKEN }}
28
+ run: |
29
+ desc="$(python scripts/sync_repo_metadata.py --description)"
30
+ if [ -n "${GH_TOKEN:-}" ]; then
31
+ gh repo edit "${{ github.repository }}" --description "$desc" || true
32
+ else
33
+ echo "no GH_TOKEN available, skipping repo-edit"
34
+ fi
35
+ - name: Commit drift fixes
36
+ run: |
37
+ git config user.name "github-actions[bot]"
38
+ git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
39
+ if [ -n "$(git status --porcelain)" ]; then
40
+ git add README.md docs || true
41
+ git commit -m "chore(sync): refresh README + docs pins for ${GITHUB_REF_NAME}" || true
42
+ git push || true
43
+ else
44
+ echo "no drift to commit"
45
+ fi
@@ -29,7 +29,7 @@ jobs:
29
29
  token: ${{ secrets.GITHUB_TOKEN }}
30
30
 
31
31
  - name: Set up Python
32
- uses: actions/setup-python@v5
32
+ uses: actions/setup-python@v6.2.0
33
33
  with:
34
34
  python-version: "3.11"
35
35
 
@@ -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,30 @@ 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.4 (2026-04-24)
12
+
13
+ | CVE / Incident | Advisory | AAK rule(s) | Shipped | Latency |
14
+ |---|---|---|---|---|
15
+ | CVE-2025-66414 / CVE-2025-66416 | [vulnerablemcp.info](https://vulnerablemcp.info/vuln/cve-2025-66414-66416-dns-rebinding-mcp-sdks.html) — Python MCP SDK DNS-rebinding | **AAK-DNS-REBIND-001** (pattern), **AAK-DNS-REBIND-002** (pin) | 2026-04-24 | <72h (class-level coverage) |
16
+ | CVE-2026-35568 | [GitLab advisory](https://advisories.gitlab.com/pkg/maven/io.modelcontextprotocol.sdk/mcp-core/CVE-2026-35568/) — Java `mcp-core` DNS-rebinding | AAK-DNS-REBIND-001 / AAK-DNS-REBIND-002 | 2026-04-24 | <72h |
17
+ | CVE-2026-35577 | [SentinelOne](https://www.sentinelone.com/vulnerability-database/cve-2026-35577/) — `@apollo/mcp-server < 1.7.0` DNS-rebinding | AAK-DNS-REBIND-001 / AAK-DNS-REBIND-002 | 2026-04-24 | <72h |
18
+ | CVE-2026-20205 | [Splunk SVD-2026-0405](https://advisory.splunk.com/advisories/SVD-2026-0405) — splunk-mcp-server token cleartext in `_internal` index | **AAK-SPLUNK-TOKLOG-001** | 2026-04-24 | <72h |
19
+ | CVE-2026-40576 | [NVD](https://nvd.nist.gov/vuln/detail/CVE-2026-40576) — excel-mcp-server <= 0.1.7 path traversal (#57) | **AAK-EXCEL-MCP-001** | 2026-04-24 | <72h |
20
+ | CVE-2026-40608 | [NVD](https://nvd.nist.gov/vuln/detail/CVE-2026-40608) — next-ai-draw-io < 0.4.15 body-accumulation OOM (#58) | **AAK-NEXT-AI-DRAW-001** | 2026-04-24 | <72h |
21
+ | GHA-IMMUTABLE-2026-04 (policy) | [GitHub Blog](https://github.blog/news-insights/product-news/whats-coming-to-our-github-actions-2026-security-roadmap/) | **AAK-GHA-IMMUTABLE-001** | 2026-04-24 | pre-emptive scanner for downstream policy |
22
+
23
+ Deferred / closed without shipping: CVE-2026-31504 (#59, Linux kernel fanout UAF — out-of-scope for MCP scanner).
24
+
25
+ ## Shipped in v0.3.3 (2026-04-21)
26
+
27
+ | CVE / Incident | Advisory | AAK rule(s) | Shipped | Latency |
28
+ |---|---|---|---|---|
29
+ | 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) |
30
+ | 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 |
31
+ | 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) |
32
+
33
+ Deferred to v0.3.4 pending NVD resolution (records unresolvable during 2026-04-21 cycle): CVE-2026-6599 (#47), CVE-2026-39861 (#53).
34
+
11
35
  ## Shipped in v0.3.2 (2026-04-20)
12
36
 
13
37
  | CVE / Incident | Advisory | AAK rule(s) | Shipped | Latency |
@@ -0,0 +1,411 @@
1
+ # Changelog
2
+
3
+ All notable changes to AgentAuditKit are documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [0.3.4] - 2026-04-24
9
+
10
+ **Headline: DNS-rebinding SDK class (CVE-2025-66414/66416, CVE-2026-35568,
11
+ CVE-2026-35577), Splunk MCP token-in-log (CVE-2026-20205), GitHub Actions
12
+ Immutable-Action / SHA-pin gate, in-flight CVE pin-checks (CVE-2026-40576,
13
+ CVE-2026-40608), OWASP Agentic public JSON artefact, repo-metadata sync.**
14
+
15
+ Closes the April-2026 DNS-rebinding cluster across the Python, Java, TS and
16
+ Apollo MCP SDKs, ships a token-in-log sink detector covering the Splunk
17
+ MCP bulletin, wires a SHA-pin regression fence for downstream users on the
18
+ GitHub Actions 2026 roadmap, and publishes the OWASP Agentic reference-tool
19
+ submission packet with a machine-readable coverage artefact.
20
+
21
+ ### Added — rule coverage (6 new rules, 151 → 157)
22
+
23
+ - **AAK-DNS-REBIND-001** (CRITICAL, Category.TRANSPORT_SECURITY) — MCP
24
+ `StreamableHTTP*` transport exposed without a Host-header allow-list.
25
+ Covers CVE-2025-66414, CVE-2025-66416 (Python `mcp`), CVE-2026-35568
26
+ (Java `io.modelcontextprotocol.sdk:mcp-core`), CVE-2026-35577
27
+ (`@apollo/mcp-server`). New scanner `scanners/dns_rebind.py` walks
28
+ `.py`/`.ts`/`.js`/`.mjs`/`.cjs` sources for `StreamableHTTPSessionManager`,
29
+ `streamable_http`, `StreamableHTTPTransport` and suppresses only when a
30
+ host allow-list marker (`TrustedHostMiddleware`, `allowed_hosts=`,
31
+ `allowedHosts:`, `validate_host`, `HostHeaderFilter`) is reachable
32
+ anywhere in the project.
33
+ - **AAK-DNS-REBIND-002** (HIGH, Category.SUPPLY_CHAIN) — vulnerable MCP SDK
34
+ version pinned in a manifest. Patched floors: Python `mcp` ≥ 1.23.0, TS
35
+ `@modelcontextprotocol/sdk` ≥ 1.21.1, Java `mcp-core` ≥ 0.11.0,
36
+ `@apollo/mcp-server` ≥ 1.7.0. Scans `requirements*.txt`, `pyproject.toml`,
37
+ `package.json` (dependencies / devDependencies / peerDependencies),
38
+ `pom.xml`, `build.gradle`, `build.gradle.kts`.
39
+ - **AAK-SPLUNK-TOKLOG-001** (HIGH, Category.SECRET_EXPOSURE) — token-shaped
40
+ values (Bearer, JWT, `splunkd_session`, `st-*`, `sk-ant-*`, `ghp_*`) or
41
+ unredacted token-named variables interpolated into a log sink
42
+ (`logger.info/warn/error`, `print`, `console.log`, `System.out.println`).
43
+ Suppresses on explicit redact markers (`***`, `<redacted>`, `mask(...)`).
44
+ New scanner `scanners/log_token_leak.py`. Pin-check for
45
+ `splunk-mcp-server < 1.0.3` (CVE-2026-20205).
46
+ - **AAK-GHA-IMMUTABLE-001** (MEDIUM, Category.SUPPLY_CHAIN) — third-party
47
+ GitHub Action pinned by tag or branch instead of 40-character commit SHA.
48
+ `actions/*` and `github/*` are exempt (Immutable-Actions publishers).
49
+ Local composite actions (`./path/to/action`) are exempt. New scanner
50
+ `scanners/gha_hardening.py` walks `.github/workflows/*.yml` via PyYAML so
51
+ every `uses:` step shape is covered. Aligned to the GitHub Actions 2026
52
+ Security Roadmap.
53
+ - **AAK-EXCEL-MCP-001** (CRITICAL, Category.SUPPLY_CHAIN) — CVE-2026-40576,
54
+ `excel-mcp-server <= 0.1.7` path-traversal in `get_excel_path()` combined
55
+ with the default 0.0.0.0 bind on SSE / Streamable-HTTP. Pin-check in
56
+ `scanners/supply_chain.py`. Patched in 0.1.8.
57
+ - **AAK-NEXT-AI-DRAW-001** (MEDIUM, Category.TRANSPORT_SECURITY) —
58
+ CVE-2026-40608, `next-ai-draw-io < 0.4.15` body-accumulation OOM in the
59
+ embedded HTTP sidecar. Pin-check in `scanners/transport_limits.py` next
60
+ to AAK-MCPFRAME-001 (same class).
61
+
62
+ ### Added — coverage artefacts
63
+
64
+ - `public/owasp-agentic-coverage.json` — machine-readable OWASP Agentic
65
+ Top 10 2026 coverage schema (v1) with ASI slot density, CVE references,
66
+ AICM references per rule. Regenerated on every release by
67
+ `scripts/gen_owasp_coverage.py`. `tests/test_owasp_public_json.py`
68
+ enforces the schema and ≥3 rule density floor.
69
+ - `docs/launch/owasp-reference-tool-submission.md` — pre-filled submission
70
+ packet for the OWASP Agentic reference-tool registry. Closes #24 + #25.
71
+
72
+ ### Added — release-mechanics / tooling
73
+
74
+ - `scripts/sync_repo_metadata.py` — single source of truth for
75
+ `sattyamjjain/agent-audit-kit@vX.Y.Z` pins across `README.md`,
76
+ `docs/**/*.md` (excluding frozen `release-notes-v*.md` history), and the
77
+ canonical GitHub repo description string. `--check` exits non-zero on
78
+ drift, `--write` rewrites, `--description` prints the string.
79
+ - `.github/workflows/sync-repo-metadata.yml` — triggers on
80
+ `release.published` + `workflow_dispatch`; rewrites pins and edits the
81
+ repo description via `gh repo edit`. Uses SHA-pinned actions only.
82
+ - `tests/test_repo_metadata_sync.py` — regression fence: every README pin
83
+ must match the live `pyproject.toml` version.
84
+
85
+ ### Fixed
86
+
87
+ - Closed the cross-category drift where the README badge showed
88
+ "rules-151" while the OpenGraph / repo-description field was stuck at
89
+ "77 rules". The new sync workflow plus regression test remove the class.
90
+ - README example snippets now bump in lock-step with the release tag
91
+ instead of requiring a manual edit.
92
+
93
+ ### Deferred to v0.3.5
94
+
95
+ - CSA MCP Security Baseline v1.0 mapping — not yet public as of 2026-04-24.
96
+ Watcher (`scripts/watch_csa_mcp_baseline.py`) remains armed.
97
+ - CVE-2026-31504 (Linux kernel fanout UAF) — out-of-scope for an MCP /
98
+ agent-pipeline scanner. Closed on the CVE-response queue with rationale.
99
+
100
+ ## [0.3.3] - 2026-04-21
101
+
102
+ **Headline: mcp-framework + Apache Doris pin-checks, Anthropic MCP SDK
103
+ STDIO hardening, CVE-watcher dedup, AICM density to ≥51%, CycloneDX
104
+ AI-BOM emitter.**
105
+
106
+ Clears the 48h SLA on CVE-2026-39313 and CVE-2025-66335, adds the
107
+ SDK-level inheritance check the OX Security 2026-04-15 disclosure asked
108
+ for, roots out the watcher regression that opened five copies of
109
+ CVE-2026-6599, and lifts the AICM mapping density from a 7% starter to
110
+ a real procurement-facing 63%.
111
+
112
+ ### Added — rule coverage (3 new rules, 148 → 151)
113
+
114
+ - **AAK-MCPFRAME-001** (MEDIUM) — CVE-2026-39313, mcp-framework < 0.2.22
115
+ HTTP-body DoS. Detection: `package.json` pin-check + TS/JS regex for
116
+ `readRequestBody`-style chunk-concat accumulating into a string
117
+ without a `Content-Length` / `maxMessageSize` guard. Ships in a new
118
+ `scanners/transport_limits.py`. Strips `//` and `/* ... */` comments
119
+ before matching the size-guard regex so docstring mentions do not
120
+ spuriously suppress.
121
+ - **AAK-DORIS-001** (HIGH) — CVE-2025-66335, apache-doris-mcp-server
122
+ < 0.6.1 SQL injection via query-context neutralization bypass.
123
+ Pin-check scans `requirements*.txt`, `pyproject.toml`,
124
+ `Pipfile(.lock)`, `poetry.lock`, `uv.lock`. Lives in
125
+ `scanners/supply_chain.py`.
126
+ - **AAK-ANTHROPIC-SDK-001** (HIGH) — SDK-level STDIO sanitization
127
+ inheritance check covering the OX Security 2026-04-15 class.
128
+ Anthropic declined to CVE — "sanitization is the developer's
129
+ responsibility". Fires only when (a) an upstream MCP SDK is declared
130
+ in a manifest (Python `mcp`/`modelcontextprotocol`, TS
131
+ `@modelcontextprotocol/sdk`, Java `io.modelcontextprotocol:*`, Rust
132
+ equivalents), (b) a STDIO transport is exposed, and (c) no
133
+ sanitizer, HTTP opt-out, or documented risk acceptance is present.
134
+ Opt-out via `.agent-audit-kit.yml` with `accepts_stdio_risk: true`
135
+ plus a non-empty `justification:`. Ships in a new
136
+ `scanners/mcp_sdk_hardening.py`. Tagged
137
+ `incident_references=["OX-MCP-2026-04-15"]`.
138
+
139
+ ### Added — OWASP Agentic 2026 density floor
140
+
141
+ - `tests/test_owasp_agentic_coverage.py` now enforces a **≥3 rules per
142
+ ASI slot** density floor (parametrized). The marketing claim
143
+ "OWASP Agentic Top 10: 10/10" is now backed by a test that fails
144
+ CI if any slot falls below three rules.
145
+ - `AAK-A2A-003`, `AAK-A2A-011`, `AAK-A2A-012` gain `ASI08` tags
146
+ (Agent Communication Poisoning) — lifts ASI08 coverage from 1 rule
147
+ to 3.
148
+ - `scripts/gen_owasp_coverage.py` additionally rewrites a
149
+ `<!-- owasp-coverage:start -->`…`<!-- owasp-coverage:end -->`
150
+ marker in `README.md` so the rendered coverage table stays in lockstep
151
+ with the code.
152
+
153
+ ### Added — CSA AICM density to ≥51%
154
+
155
+ - `_AICM_TAGS` in `agent_audit_kit/rules/builtin.py` expands from 10
156
+ rules (7%) to **95 rules (63%)**, covering the SECRET-*, SUPPLY-*,
157
+ TRUST-*, TRANSPORT-*, A2A-*, POISON-*, TAINT-*, SSRF-*, OAUTH-*,
158
+ SKILL-*, MARKETPLACE-*, HOOK-*, and CVE-response families. Each
159
+ family maps to the canonical AICM control domain (DSP / IAM / STA /
160
+ CEK / AIS / LOG / IVS / CCC).
161
+ - `tests/test_aicm.py` gets a **density floor assertion** — the suite
162
+ now fails CI if fewer than 75 rules carry an AICM tag.
163
+ - `--compliance aicm` CSV output reflects the expanded mapping
164
+ automatically; no CLI change needed.
165
+
166
+ ### Added — CycloneDX AI-BOM emitter
167
+
168
+ - `agent-audit-kit sbom --format aibom` emits a CycloneDX 1.5 AI/ML-BOM
169
+ on top of the existing SBOM primitive. Adds:
170
+ - `components` entries with `type: "machine-learning-model"` for each
171
+ detected vendor SDK (anthropic/Claude, openai/GPT, cohere/Command).
172
+ - A `formulation` block listing detected agent-platform SDKs
173
+ (LangChain, LangSmith, LangGraph, LangFuse, Helicone, Humanloop,
174
+ MCP SDK) with pURLs where the pin can be extracted.
175
+ - `metadata.properties`: `aak:rule-bundle-sha256` (pulled from
176
+ `rules.json.sha256` if present), `aak:aibom: "1"` marker, and one
177
+ `aak:incident-fired` per fired incident reference so the BOM can
178
+ double as attestation evidence.
179
+ - Covered by `tests/test_cyclonedx_aibom.py`.
180
+
181
+ ### Fixed — CVE-response watcher dedup (Task A)
182
+
183
+ - `scripts/cve_watcher.py` was only deduping against
184
+ `CHANGELOG.cves.md`. A CVE sitting in the SLA queue without a rule
185
+ yet never reached the changelog, so the 6-hourly cron re-opened it.
186
+ Over 48h this filed five copies of CVE-2026-6599 (#47/#48/#50/#52/#55)
187
+ and three of CVE-2025-66335.
188
+ - Rewritten with three layers of dedup (any one suppresses):
189
+ 1. `CHANGELOG.cves.md`.
190
+ 2. Persistent `.aak/cve-watcher-state.json` (cached across workflow
191
+ runs via `actions/cache`).
192
+ 3. Open `cve-response` issue titles + bodies via the GitHub REST API.
193
+ - New `scripts/close_duplicate_cve_issues.py` groups existing open
194
+ `cve-response` issues by extracted CVE ID, keeps the lowest-numbered,
195
+ closes the rest with a cross-reference body. Ran against live repo
196
+ during this release: closed #48, #50, #51, #52, #54, #55, #56 (7
197
+ dups).
198
+ - `.github/workflows/cve-watcher.yml` now wires `GITHUB_TOKEN` +
199
+ `GITHUB_REPOSITORY` into the diff step and restores the state file
200
+ from `actions/cache`.
201
+ - Covered by `tests/test_cve_watcher_dedup.py` — five scenarios
202
+ including the observed "same CVE × 3 cron runs" replay.
203
+
204
+ ### Added — provenance plumbing
205
+
206
+ - `CHANGELOG.cves.md` gains entries for CVE-2026-39313,
207
+ CVE-2025-66335, and the OX-MCP-2026-04-15 incident class.
208
+ - `watch.py` parameter annotations updated from the string-form
209
+ `"callable | None"` to the proper `Callable[[int, list[Any]], None]`
210
+ (incidental mypy-1.x compatibility fix carried over from 0.3.2.1
211
+ hotfix).
212
+ - `scanners/marketplace_manifest.py` ships the Python 3.10 `tomli`
213
+ fallback that made CI green for 0.3.2 — kept for 0.3.3.
214
+
215
+ ### Thanks
216
+
217
+ OX Security for the 2026-04-15 "Mother of all AI supply chains"
218
+ disclosure; Apache Doris for the 0.6.1 patch turnaround; the CSA AICM
219
+ working group for publishing a v1 control catalog we can map to.
220
+
221
+ ## [0.3.2] - 2026-04-20
222
+
223
+ **Headline: MCPwn coverage + third-party OAuth-app surface + OWASP Agentic 2026 coverage proof.**
224
+
225
+ Closes the KEV-listed CVE-2026-33032 (MCPwn) with a targeted middleware-
226
+ asymmetry detector, ships first-class coverage for the April 19 2026
227
+ Vercel × Context.ai OAuth breach class, and gates every future PR on
228
+ OWASP Agentic Top 10 2026 coverage.
229
+
230
+ ### Added — rule coverage (6 new rules)
231
+
232
+ - **AAK-MCPWN-001** (CRITICAL) — twin-route middleware-asymmetry
233
+ detector across Go/Gin, Python/FastAPI, and Node/Express. This is
234
+ CVE-2026-33032 itself, not a generic MCP-config check: if `/mcp`
235
+ has AuthRequired() and `/mcp_message` doesn't, the rule fires. Also
236
+ recognises the `router.Group("/", AuthRequired())` patched pattern
237
+ so 2.3.4+ doesn't produce false positives. Maps CVE-2026-33032
238
+ and CVE-2026-27944.
239
+ - **AAK-FLOWISE-001** (CRITICAL) — CVE-2026-40933 (GHSA-c9gw-hvqq-f33r,
240
+ CVSS 10.0). Pin-check on `flowise` / `flowise-components` < 3.1.0,
241
+ plus a flow-config pass that flags MCP adapter nodes with
242
+ `customFunction` / `runCode` / `executeCommand` sinks. Auto-fixable
243
+ via `agent-audit-kit fix --cve`.
244
+ - **AAK-OAUTH-SCOPE-001** (HIGH) — third-party OAuth client granted
245
+ broad Google Workspace scopes (admin.*, cloud-platform, drive,
246
+ directory.*, gmail.modify/send). Repos add trusted client IDs to
247
+ `.aak-oauth-trust.yml`.
248
+ - **AAK-OAUTH-3P-001** (MEDIUM) — repo depends on an agent-platform
249
+ SDK (context-ai, langsmith, helicone, langfuse, humanloop, MCP SDK).
250
+ Informational finding so reviewers audit OAuth-scope footprints
251
+ before merge.
252
+ - Together AAK-OAUTH-* tag `incident_references=["VERCEL-2026-04-19"]`,
253
+ the first use of the new incident-provenance field.
254
+
255
+ ### Added — schema + tooling
256
+
257
+ - **`SCHEMA_VERSION = 2`** bump in `agent_audit_kit/models.py`:
258
+ - New `incident_references: list[str]` field (Task G).
259
+ Backfilled:
260
+ - `AAK-STDIO-001` → `OX-MCP-2026-04-15` (retrofit).
261
+ - `AAK-OAUTH-SCOPE-001` / `AAK-OAUTH-3P-001` → `VERCEL-2026-04-19`.
262
+ - `AAK-MCPWN-001` → `MCPWN-2026-04-16`.
263
+ - New `aicm_references: list[str]` field (Task E) — CSA AI Controls
264
+ Matrix control IDs. Seeded 10 mappings (DSP-17, IAM-01/02/16,
265
+ STA-02/08, CEK-08, LOG-06).
266
+ - **`--compliance aicm`** — new scan flag that emits a CSV sorted by
267
+ AICM control ID. `output/aicm.py` is the formatter.
268
+ - **OWASP Agentic 2026 coverage gate** — `tests/test_owasp_agentic_coverage.py`
269
+ fails CI if any of ASI01…ASI10 has zero backing rules. Paired with
270
+ `scripts/gen_owasp_coverage.py` that regenerates
271
+ `docs/owasp-agentic-coverage.md` on demand.
272
+ - **SARIF `fingerprint-strategy`** — `auto` (default) / `line-hash` /
273
+ `disabled`. `action.yml` exposes the input; `entrypoint.sh` threads
274
+ it. Fixes the GH Code Scanning de-dup regression that marketplace
275
+ runners (detached source) hit without self-emitted fingerprints.
276
+ - **CSA MCP Security Baseline watcher** — `scripts/watch_csa_mcp_baseline.py`
277
+ polls the CSA Resource Center + modelcontextprotocol-security.io
278
+ weekly, files a tracking issue on drop, and persists seen versions
279
+ in `.aak/csa-mcp-baseline-state.json` so each version triggers once.
280
+ - **`docs/rule-schema.md`** — documents v1 + v2 field set and the
281
+ SARIF tag projection.
282
+
283
+ ### Changed
284
+
285
+ - Rule count 144 → **148** (6 new rules, 2 of which technically land
286
+ as pairs under the OAuth umbrella).
287
+ - `rules.json` regenerated (SHA-256 `5c7b1c47cd067e86a533d6084925472a356442afbefcd8af6f3a0b3c3afd393b`).
288
+ - `CHANGELOG.cves.md` now lists the MCPwn + Flowise entries and
289
+ demotes the pre-v0.3.2 "covered by AAK-MCP-011/012/020" claim for
290
+ CVE-2026-33032 to secondary coverage (primary is now AAK-MCPWN-001).
291
+
292
+ ### Verified sources
293
+
294
+ - [NVD CVE-2026-33032](https://nvd.nist.gov/vuln/detail/CVE-2026-33032) — MCPwn, CVSS 9.8, KEV 2026-04-13.
295
+ - [Rapid7 ETR](https://www.rapid7.com/blog/post/etr-cve-2026-33032-nginx-ui-missing-mcp-authentication/).
296
+ - [Picus MCPwn writeup](https://www.picussecurity.com/resource/blog/cve-2026-33032-mcpwn-how-a-missing-middleware-call-in-nginx-ui-hands-attackers-full-web-server-takeover).
297
+ - [GHSA-c9gw-hvqq-f33r](https://github.com/advisories/GHSA-c9gw-hvqq-f33r) — Flowise, CVSS 10.0, fixed 3.1.0.
298
+ - [Vercel April 2026 bulletin](https://vercel.com/kb/bulletin/vercel-april-2026-security-incident).
299
+ - [OWASP Top 10 for Agentic Applications 2026](https://genai.owasp.org/resource/owasp-top-10-for-agentic-applications-for-2026/).
300
+ - [GitHub Docs — SARIF support for Code Scanning](https://docs.github.com/en/code-security/code-scanning/integrating-with-code-scanning/sarif-support-for-code-scanning).
301
+ - [CSA AI Controls Matrix v1.0](https://cloudsecurityalliance.org/artifacts/ai-controls-matrix).
302
+ - [CSA MCP Security Resource Center](https://cloudsecurityalliance.org/blog/2025/08/20/securing-the-agentic-ai-control-plane-announcing-the-mcp-security-resource-center).
303
+
304
+ ## [0.3.1] - 2026-04-19
305
+
306
+ **Headline: Ox MCP supply-chain coverage + rule-count single source of truth + SARIF fingerprints.**
307
+
308
+ Ships rule coverage for every disclosed MCP CVE from the last 48 hours, honoring
309
+ the public [AAK Response SLA](CHANGELOG.cves.md).
310
+
311
+ ### Added — rule coverage (6 new rules)
312
+
313
+ - **AAK-STDIO-001** (CRITICAL) — Ox Security's Apr-16 disclosure covered
314
+ 10 CVEs rooted in the same shape: user-controllable input reaching
315
+ STDIO command executors in MCP servers. One AST-based Python scanner
316
+ plus a TS regex pass closes the whole family in one rule. Maps
317
+ CVE-2026-30615, CVE-2025-65720, CVE-2026-30617, CVE-2026-30618,
318
+ CVE-2026-30623, CVE-2026-30624, CVE-2026-30625, CVE-2026-33224,
319
+ CVE-2026-26015.
320
+ - **AAK-WINDSURF-001** (HIGH) — zero-click `.windsurf/mcp.json`
321
+ auto-registration (CVE-2026-30615): flags `auto_approve:true` /
322
+ `auto_execute:true`, world-writable parent dirs, and unpinned server
323
+ commands.
324
+ - **AAK-NEO4J-001** (MEDIUM) — `mcp-neo4j-cypher < 0.6.0` read-only
325
+ bypass via APOC (CVE-2026-35402). Version-pin check + source pattern
326
+ detection (`read_only=True` + APOC call in the same file).
327
+ `auto_fixable=True` — `agent-audit-kit fix --cve` bumps the pin.
328
+ - **AAK-CLAUDE-WIN-001** (HIGH) — Claude Code Windows ProgramData
329
+ hijack (CVE-2026-35603). Requires sibling `setup.ps1` with `icacls`
330
+ ACL hardening when a `managed-settings.json` lives in a ProgramData
331
+ path.
332
+ - **AAK-LOGINJ-001** (MEDIUM) — log injection via CRLF/ANSI in tool
333
+ params (CVE-2026-6494, CWE-117). AST pass: `@tool` parameters flowing
334
+ into `logger.*` / `print` / `sys.stdout` / `console.log` without
335
+ sanitization.
336
+ - **AAK-SEC-MD-001** (LOW) — MCP-server repos without SECURITY.md /
337
+ `security_contact`. Anthropic Apr-2026 baseline expectation.
338
+
339
+ ### Added — trust / DevEx
340
+
341
+ - **Rule-count single source of truth**: `scripts/sync_rule_count.py`
342
+ rewrites the `rules-<N>-blue` badge, the `action.yml` description,
343
+ and `agent_audit_kit.__init__.RULE_COUNT` from `rules.json`. Wired
344
+ into `.github/workflows/sync-rule-count.yml` (auto-commits drift) and
345
+ `.pre-commit-config.yaml` (blocks human drift locally). Regression
346
+ fence in `tests/test_rule_count_sync.py`.
347
+ - **SARIF upgrades** (`output/sarif.py`):
348
+ - `partialFingerprints.primaryLocationLineHash` is now SHA-256 of
349
+ **line content + rule ID**, so GH Code Scanning de-dupes across
350
+ pushes even when line numbers shift, and flags as new when the
351
+ content changes. Falls back to a location-based hash when the
352
+ file can't be read.
353
+ - `helpUri` → `https://agent-audit-kit.dev/rules/{rule_id}` per rule.
354
+ - `results[].properties.security-severity` included on every result
355
+ (was only on the rule descriptor).
356
+ - **PR comment + `$GITHUB_STEP_SUMMARY`** (`output/pr_summary.py`):
357
+ scan results render as a Markdown table (Rule | Severity | Location |
358
+ Suggestion) written to `$GITHUB_STEP_SUMMARY` every run, and posted
359
+ as a sticky PR comment (marker-based) when `comment-on-pr=true`.
360
+ New `action.yml` input: `comment-on-pr` (default `true`).
361
+ New CLI flags: `--step-summary` / `--no-step-summary` and
362
+ `--pr-summary-out PATH`.
363
+
364
+ ### Changed
365
+
366
+ - Rule count 138 → **144**.
367
+ - `description:` in `action.yml` now includes the current rule count
368
+ ("144 rules, OWASP Agentic Top 10 + MCP Top 10").
369
+ - `rules.json` regenerated and re-signed with the new rule set.
370
+
371
+ ### Fixed
372
+
373
+ - `README.md` comparison table row claiming "138 rules" for A2A
374
+ scanning (it's always been 12 rules); regression guarded by the
375
+ rule-count sync test.
376
+
377
+ ### Supply chain
378
+
379
+ Every release artifact continues to ship alongside a Sigstore-signed
380
+ `rules.json`, CycloneDX and SPDX SBOMs, and SLSA build provenance on
381
+ the Docker image.
382
+
383
+ ## [0.3.0] - 2026-04-18
384
+
385
+ Retroactive SLA coverage for the 2026 MCP CVE wave. See [v0.3.0 release
386
+ notes](docs/launch/release-notes-v0.3.0.md) for the full scope — 46 new
387
+ rules across the 10 ROADMAP §2.2 families (AAK-MCP-011..020, SSRF,
388
+ OAUTH, HOOK-RCE, LANGCHAIN, MARKETPLACE, ROUTINE, A2A-008..012,
389
+ TASKS, SKILL). Rule count 77 → 138.
390
+
391
+ ## [0.2.0] - 2026-04-05
392
+
393
+ Initial public release.
394
+
395
+ ### Added
396
+
397
+ - **74 security rules** across 11 scanner categories: MCP configuration, hook injection, trust boundaries, secret exposure, supply chain, agent config, tool poisoning, taint analysis, transport security, A2A protocol, and legal compliance.
398
+ - **11 scanners** with full coverage of MCP-connected AI agent pipelines.
399
+ - **9 CLI commands**: `scan`, `discover`, `pin`, `verify`, `fix`, `score`, `update`, and CI-mode shortcuts.
400
+ - **SARIF 2.1.0** output with GitHub Security tab integration and inline PR annotations.
401
+ - **GitHub Action** (`sattyamjjain/agent-audit-kit@v1`) for zero-install CI scanning.
402
+ - **Pre-commit hook** for local scanning before every commit.
403
+ - **OWASP coverage**: full mapping to OWASP Agentic Top 10 (10/10), OWASP MCP Top 10, and Adversa AI Top 25.
404
+ - **Compliance mapping** for EU AI Act, SOC2, ISO 27001, HIPAA, and NIST AI RMF via `--compliance` flag.
405
+ - **Tool pinning** (`pin` and `verify` commands) to detect rug-pull and supply chain drift.
406
+ - **Taint analysis** tracking `@tool` parameter flows to shell, eval, SQL, SSRF, file, and deserialization sinks.
407
+ - **Security scoring** with letter grades and embeddable badges via `score` command.
408
+ - **Auto-fix** with `fix --dry-run` for safe remediation of common findings.
409
+ - **Agent discovery** supporting Claude Code, Cursor, VS Code Copilot, Windsurf, Amazon Q, Gemini CLI, Goose, Continue, Roo Code, and Kiro.
410
+
411
+ [0.2.0]: https://github.com/sattyamjjain/agent-audit-kit/releases/tag/v0.2.0