agent-audit-kit 0.3.49__tar.gz → 0.3.52__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 (715) hide show
  1. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/.github/workflows/cve-watcher.yml +13 -7
  2. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/.github/workflows/release.yml +7 -6
  3. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/CHANGELOG.cves.md +102 -9
  4. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/CHANGELOG.md +145 -0
  5. agent_audit_kit-0.3.52/Makefile +43 -0
  6. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/PKG-INFO +35 -42
  7. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/README.md +34 -41
  8. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/action.yml +1 -1
  9. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/__init__.py +2 -2
  10. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/cli.py +21 -6
  11. agent_audit_kit-0.3.52/agent_audit_kit/presets/mcp-2026-07-28.yaml +25 -0
  12. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/rules/builtin.py +405 -2
  13. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/mcp_cve_pins_2026_07.py +72 -5
  14. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/oauth_misconfig.py +100 -4
  15. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/ci-cd.md +2 -2
  16. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/comparison-gitlab-agentic-sast.md +1 -1
  17. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/comparison.md +1 -1
  18. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/coverage/owasp-agentic-top10.md +4 -4
  19. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/coverage/owasp-mcp-top10.md +4 -4
  20. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/getting-started.md +2 -2
  21. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/launch/CHECKLIST.md +1 -1
  22. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/launch/hn.md +2 -2
  23. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/launch/reddit.md +3 -3
  24. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/launch/x-thread.md +2 -2
  25. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/owasp-agentic-coverage.md +4 -4
  26. agent_audit_kit-0.3.52/docs/presets/mcp-2026-07-28.md +37 -0
  27. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/presets/mcp-ox-2026-04.md +1 -1
  28. agent_audit_kit-0.3.52/docs/reports/mcp-2026-07-28-readiness.md +116 -0
  29. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/rules.md +12 -7
  30. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/public/owasp-agentic-coverage.json +193 -7
  31. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/pyproject.toml +1 -1
  32. agent_audit_kit-0.3.52/research/state-of-mcp-2026/.gitignore +1 -0
  33. agent_audit_kit-0.3.52/research/state-of-mcp-2026/REPORT.md +199 -0
  34. agent_audit_kit-0.3.52/research/state-of-mcp-2026/blackhat-arsenal-abstract.md +53 -0
  35. agent_audit_kit-0.3.52/research/state-of-mcp-2026/blackhat-briefings-abstract.md +81 -0
  36. agent_audit_kit-0.3.52/research/state-of-mcp-2026/corpus/registry-manifest.json +14208 -0
  37. agent_audit_kit-0.3.52/research/state-of-mcp-2026/fetch_registry.py +189 -0
  38. agent_audit_kit-0.3.52/research/state-of-mcp-2026/results.json +238 -0
  39. agent_audit_kit-0.3.52/research/state-of-mcp-2026/run_report.py +347 -0
  40. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/rules.json +443 -1
  41. agent_audit_kit-0.3.52/scripts/mcp_2026_07_28_readiness.py +107 -0
  42. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/scripts/sync_rule_count.py +115 -2
  43. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/site/coverage/index.html +2 -2
  44. agent_audit_kit-0.3.52/tests/test_mcp_cve_pins_2026_07.py +284 -0
  45. agent_audit_kit-0.3.52/tests/test_oauth_resource_indicators.py +192 -0
  46. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_phase5.py +1 -1
  47. agent_audit_kit-0.3.52/tests/test_preset_mcp_2026_07_28.py +70 -0
  48. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_rule_count_sync.py +77 -10
  49. agent_audit_kit-0.3.52/tests/test_state_of_mcp_report.py +101 -0
  50. agent_audit_kit-0.3.49/docs/blog/state-of-mcp-security-template.md +0 -63
  51. agent_audit_kit-0.3.49/docs/launch/github-verified-creator-application.md +0 -92
  52. agent_audit_kit-0.3.49/docs/launch/owasp-reference-tool-submission.md +0 -66
  53. agent_audit_kit-0.3.49/docs/launch/release-notes-v0.3.0.md +0 -80
  54. agent_audit_kit-0.3.49/docs/plans/2026-04-21-v0.3.3-design.md +0 -108
  55. agent_audit_kit-0.3.49/docs/spec/sarif-runtime-context.md +0 -73
  56. agent_audit_kit-0.3.49/research/state-of-mcp-2026/REPORT.md +0 -36
  57. agent_audit_kit-0.3.49/research/state-of-mcp-2026/results.json +0 -166
  58. agent_audit_kit-0.3.49/research/state-of-mcp-2026/run_report.py +0 -218
  59. agent_audit_kit-0.3.49/tests/test_mcp_cve_pins_2026_07.py +0 -112
  60. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/.agent-audit-kit.yml +0 -0
  61. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/.claude/auto-memory/config.json +0 -0
  62. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/.editorconfig +0 -0
  63. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/.github/FUNDING.yml +0 -0
  64. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  65. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  66. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  67. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/.github/dependabot.yml +0 -0
  68. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/.github/workflows/badge-ox-coverage.yml +0 -0
  69. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/.github/workflows/ci.yml +0 -0
  70. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/.github/workflows/codeql.yml +0 -0
  71. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/.github/workflows/coverage-page.yml +0 -0
  72. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/.github/workflows/docker-nightly.yml +0 -0
  73. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/.github/workflows/mcp-security-index.yml +0 -0
  74. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/.github/workflows/scorecard.yml +0 -0
  75. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/.github/workflows/self-scan.yml +0 -0
  76. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/.github/workflows/sync-repo-metadata.yml +0 -0
  77. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/.github/workflows/sync-rule-count.yml +0 -0
  78. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/.gitignore +0 -0
  79. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/.pre-commit-config.yaml +0 -0
  80. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/.pre-commit-hooks.yaml +0 -0
  81. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/CLAUDE.md +0 -0
  82. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/CLAUDE_PROMPT.md +0 -0
  83. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/CODE_OF_CONDUCT.md +0 -0
  84. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/CONTRIBUTING.md +0 -0
  85. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/DEEP_ANALYSIS.md +0 -0
  86. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/Dockerfile +0 -0
  87. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/LICENSE +0 -0
  88. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/ROADMAP_2026.md +0 -0
  89. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/SECURITY.md +0 -0
  90. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/advisories.py +0 -0
  91. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/autofix/__init__.py +0 -0
  92. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/autofix/langgraph_toolnode.py +0 -0
  93. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/bundle.py +0 -0
  94. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/checks/__init__.py +0 -0
  95. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/checks/economic_drift.py +0 -0
  96. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/checks/openclaw.py +0 -0
  97. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/cli_modules/__init__.py +0 -0
  98. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/cli_modules/rule_lint.py +0 -0
  99. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/corpus/__init__.py +0 -0
  100. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/corpus/manifest.py +0 -0
  101. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/coverage.py +0 -0
  102. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/data/aivss-v08-defaults.json +0 -0
  103. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/data/fhi_universal_suffixes.txt +0 -0
  104. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/data/ipi_wild_payloads_2026_04.json +0 -0
  105. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/data/ox-cve-manifest.json +0 -0
  106. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/data/prisma-airs-aak-map.json +0 -0
  107. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/data/prisma-airs-catalog.json +0 -0
  108. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/data/toxic_flow_pairs.yml +0 -0
  109. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/data/vuln_db.json +0 -0
  110. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/diff.py +0 -0
  111. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/discovery.py +0 -0
  112. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/engine.py +0 -0
  113. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/feeds/__init__.py +0 -0
  114. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/fix.py +0 -0
  115. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/ide/__init__.py +0 -0
  116. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/ide/lsp_diag.py +0 -0
  117. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/integrations/__init__.py +0 -0
  118. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/integrations/notify.py +0 -0
  119. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/llm_scan.py +0 -0
  120. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/models.py +0 -0
  121. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/output/__init__.py +0 -0
  122. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/output/aicm.py +0 -0
  123. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/output/compliance.py +0 -0
  124. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/output/console.py +0 -0
  125. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/output/json_report.py +0 -0
  126. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/output/owasp_report.py +0 -0
  127. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/output/pdf_report.py +0 -0
  128. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/output/pr_summary.py +0 -0
  129. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/output/sarif.py +0 -0
  130. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/output/sbom.py +0 -0
  131. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/parity/__init__.py +0 -0
  132. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/pinning.py +0 -0
  133. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/presets/__init__.py +0 -0
  134. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/presets/mcp-ox-2026-04.yaml +0 -0
  135. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/proxy/__init__.py +0 -0
  136. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/proxy/interceptor.py +0 -0
  137. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/remediation/__init__.py +0 -0
  138. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/remediation/engine.py +0 -0
  139. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/rules/__init__.py +0 -0
  140. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/sanitizers/__init__.py +0 -0
  141. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/sanitizers/crewai.py +0 -0
  142. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/sanitizers/deepseek.py +0 -0
  143. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/sarif/__init__.py +0 -0
  144. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/sarif/diff.py +0 -0
  145. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/__init__.py +0 -0
  146. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/_helpers.py +0 -0
  147. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/a2a_protocol.py +0 -0
  148. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/agent_config.py +0 -0
  149. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/agent_harness_shared_state.py +0 -0
  150. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/argv_toctou.py +0 -0
  151. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/crewai_rce_chain.py +0 -0
  152. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/deepseek_v4_tool_injection.py +0 -0
  153. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/dns_rebind.py +0 -0
  154. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/docsgpt_transport_flip.py +0 -0
  155. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/eu_ai_act_art15_locale.py +0 -0
  156. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/gha_hardening.py +0 -0
  157. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/gpt_researcher_transport_flip.py +0 -0
  158. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/healthcare_ai.py +0 -0
  159. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/hook_injection.py +0 -0
  160. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/hook_rce.py +0 -0
  161. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/india_pii.py +0 -0
  162. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/ipi_wild_corpus.py +0 -0
  163. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/langchain_prompt_loader.py +0 -0
  164. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/langchain_vuln.py +0 -0
  165. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/langgraph_toolnode.py +0 -0
  166. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/legal_compliance.py +0 -0
  167. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/llm_sql_rce.py +0 -0
  168. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/log_injection.py +0 -0
  169. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/log_token_leak.py +0 -0
  170. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/marketplace_manifest.py +0 -0
  171. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/mcp_atlassian.py +0 -0
  172. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/mcp_auth_pathtraversal.py +0 -0
  173. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/mcp_auth_patterns.py +0 -0
  174. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/mcp_config.py +0 -0
  175. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/mcp_deprecated_features.py +0 -0
  176. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/mcp_env_placeholder_exfil.py +0 -0
  177. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/mcp_fhi.py +0 -0
  178. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/mcp_http_noauth_server.py +0 -0
  179. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/mcp_inspector_cve.py +0 -0
  180. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/mcp_marketplace_fetch.py +0 -0
  181. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/mcp_middleware.py +0 -0
  182. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/mcp_noauth_default.py +0 -0
  183. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/mcp_sampling_capability.py +0 -0
  184. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/mcp_sdk_hardening.py +0 -0
  185. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/mcp_server_auth.py +0 -0
  186. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/mcp_server_card.py +0 -0
  187. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/mcp_ssrf_toolarg.py +0 -0
  188. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/mcp_stateless_migration.py +0 -0
  189. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/mcp_stdio_launcher.py +0 -0
  190. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/mcp_stdio_params.py +0 -0
  191. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/mcp_tasks.py +0 -0
  192. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/mcp_tool_unsafe_eval.py +0 -0
  193. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/mcp_toolgate_asymmetry.py +0 -0
  194. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/mcp_tunnel.py +0 -0
  195. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/metis_pomdp.py +0 -0
  196. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/neo4j_cve.py +0 -0
  197. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/oauth_surface.py +0 -0
  198. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/openapi_smells.py +0 -0
  199. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/openclaw_privesc.py +0 -0
  200. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/pin_drift.py +0 -0
  201. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/project_deal_drift.py +0 -0
  202. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/prtitle_ipi.py +0 -0
  203. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/routines.py +0 -0
  204. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/rust_pattern_scan.py +0 -0
  205. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/rust_scan.py +0 -0
  206. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/sandbox_self_disable.py +0 -0
  207. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/secret_exposure.py +0 -0
  208. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/shared_resource_authz.py +0 -0
  209. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/skill_lifecycle_attribution.py +0 -0
  210. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/skill_poisoning.py +0 -0
  211. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/skill_untrusted_exec_path.py +0 -0
  212. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/social_agent_hijack.py +0 -0
  213. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/splunk_mcp_config.py +0 -0
  214. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/ssrf_patterns.py +0 -0
  215. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/ssrf_redirect.py +0 -0
  216. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/ssrf_toctou.py +0 -0
  217. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/stainless_lineage.py +0 -0
  218. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/state_privacy.py +0 -0
  219. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/stdio_injection.py +0 -0
  220. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/supply_chain.py +0 -0
  221. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/taint_analysis.py +0 -0
  222. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/tool_poisoning.py +0 -0
  223. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/toxic_flow.py +0 -0
  224. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/transport_limits.py +0 -0
  225. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/transport_security.py +0 -0
  226. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/trust_boundary.py +0 -0
  227. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/typescript_pattern_scan.py +0 -0
  228. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/typescript_scan.py +0 -0
  229. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scoring/__init__.py +0 -0
  230. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scoring/aivss.py +0 -0
  231. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scoring/aivss_schema.py +0 -0
  232. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/translators/__init__.py +0 -0
  233. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/translators/pipelock.py +0 -0
  234. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/translators/prisma_airs.py +0 -0
  235. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/verification.py +0 -0
  236. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/vuln_db.py +0 -0
  237. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/watch.py +0 -0
  238. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/benchmarks/README.md +0 -0
  239. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/benchmarks/crawler.py +0 -0
  240. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/benchmarks/determinism/RESULTS.md +0 -0
  241. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/benchmarks/determinism/run.py +0 -0
  242. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/benchmarks/index_builder.py +0 -0
  243. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/benchmarks/results-2026-06-13.json +0 -0
  244. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/benchmarks/run_benchmark.sh +0 -0
  245. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/benchmarks/sample_configs/sample_01_clean.json +0 -0
  246. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/benchmarks/sample_configs/sample_02_secrets.json +0 -0
  247. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/benchmarks/sample_configs/sample_03_no_auth.json +0 -0
  248. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/benchmarks/sample_configs/sample_04_shell_injection.json +0 -0
  249. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/benchmarks/sample_configs/sample_05_mixed.json +0 -0
  250. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/benchmarks/sources.py +0 -0
  251. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/ci/gitlab/agent-audit-kit.gitlab-ci.yml +0 -0
  252. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/CNAME +0 -0
  253. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/DISTRIBUTION-CHECKLIST.md +0 -0
  254. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/RELEASING.md +0 -0
  255. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/azure-pipelines.md +0 -0
  256. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/circleci.md +0 -0
  257. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/comparisons.md +0 -0
  258. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/disclosure-policy.md +0 -0
  259. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/gitlab-ci.md +0 -0
  260. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/index.md +0 -0
  261. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/launch/press.md +0 -0
  262. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/metrics.md +0 -0
  263. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/notes/adjudicator-pattern.md +0 -0
  264. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/owasp-mapping.md +0 -0
  265. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/research-log.md +0 -0
  266. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/roadmap/ox-mcp-2026-05-01-batch.md +0 -0
  267. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/rule-schema.md +0 -0
  268. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/rules/AAK-AZURE-MCP-001.md +0 -0
  269. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/rules/AAK-AZURE-MCP-NOAUTH-001.md +0 -0
  270. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/rules/AAK-LANGCHAIN-SSRF-REDIR-001.md +0 -0
  271. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/rules/AAK-LMDEPLOY-VL-SSRF-001.md +0 -0
  272. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/rules/AAK-MCP-AUTH-PATHTRAVERSAL-001.md +0 -0
  273. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/rules/AAK-MCP-MARKETPLACE-CONFIG-FETCH-001.md +0 -0
  274. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/rules/AAK-MCP-STDIO-CMD-INJ-001.md +0 -0
  275. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/rules/AAK-MCP-STDIO-CMD-INJ-002.md +0 -0
  276. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/rules/AAK-MCP-STDIO-CMD-INJ-003.md +0 -0
  277. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/rules/AAK-MCP-STDIO-CMD-INJ-004.md +0 -0
  278. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/rules/AAK-SPLUNK-MCP-TOKEN-LEAK-001.md +0 -0
  279. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/rules/AAK-SSRF-TOCTOU-001.md +0 -0
  280. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/rules/AAK-TOXICFLOW-001.md +0 -0
  281. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/rules/index.md +0 -0
  282. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/editors/zed/README.md +0 -0
  283. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/editors/zed/extension.toml +0 -0
  284. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/entrypoint.sh +0 -0
  285. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/README.md +0 -0
  286. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/case-studies/damn-vulnerable-mcp/README.md +0 -0
  287. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/case-studies/damn-vulnerable-mcp/configs/dvmcp-inspired.mcp.json +0 -0
  288. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/case-studies/damn-vulnerable-mcp/configs/dvmcp-settings.json +0 -0
  289. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/case-studies/damn-vulnerable-mcp/scan-results.json +0 -0
  290. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/case-studies/damn-vulnerable-mcp/scan-results.sarif +0 -0
  291. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/ci-integration/README.md +0 -0
  292. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/ci-integration/docker-one-liner.sh +0 -0
  293. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/ci-integration/github-actions-sarif.yml +0 -0
  294. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/ci-integration/gitlab-ci-scan.yml +0 -0
  295. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/ci-integration/pre-commit-config.yaml +0 -0
  296. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/run-all-examples.sh +0 -0
  297. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/vulnerable-configs/01-no-auth-remote/.mcp.json +0 -0
  298. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/vulnerable-configs/01-no-auth-remote/expected-findings.json +0 -0
  299. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/vulnerable-configs/02-shell-injection/.mcp.json +0 -0
  300. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/vulnerable-configs/02-shell-injection/expected-findings.json +0 -0
  301. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/vulnerable-configs/03-hardcoded-secrets/.gitignore +0 -0
  302. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/vulnerable-configs/03-hardcoded-secrets/.mcp.json +0 -0
  303. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/vulnerable-configs/03-hardcoded-secrets/expected-findings.json +0 -0
  304. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/vulnerable-configs/04-hook-exfiltration/.claude/settings.json +0 -0
  305. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/vulnerable-configs/04-hook-exfiltration/expected-findings.json +0 -0
  306. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/vulnerable-configs/05-trust-boundary-violations/.claude/settings.json +0 -0
  307. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/vulnerable-configs/05-trust-boundary-violations/.mcp.json +0 -0
  308. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/vulnerable-configs/05-trust-boundary-violations/expected-findings.json +0 -0
  309. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/vulnerable-configs/06-tool-poisoning/.mcp.json +0 -0
  310. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/vulnerable-configs/06-tool-poisoning/expected-findings.json +0 -0
  311. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/vulnerable-configs/07-tainted-tool-function/expected-findings.json +0 -0
  312. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/vulnerable-configs/07-tainted-tool-function/server.py +0 -0
  313. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/vulnerable-configs/08-transport-insecurity/.mcp.json +0 -0
  314. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/vulnerable-configs/08-transport-insecurity/expected-findings.json +0 -0
  315. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/vulnerable-configs/09-a2a-insecure-agent/agent-card.json +0 -0
  316. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/vulnerable-configs/09-a2a-insecure-agent/expected-findings.json +0 -0
  317. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/vulnerable-configs/10-supply-chain-risks/.mcp.json +0 -0
  318. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/vulnerable-configs/10-supply-chain-risks/expected-findings.json +0 -0
  319. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/vulnerable-configs/10-supply-chain-risks/package.json +0 -0
  320. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/vulnerable-configs/11-legal-compliance/expected-findings.json +0 -0
  321. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/vulnerable-configs/11-legal-compliance/package.json +0 -0
  322. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/vulnerable-configs/11-legal-compliance/subproject/package.json +0 -0
  323. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/vulnerable-configs/README.md +0 -0
  324. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/launch/MARKET-RESEARCH-2026-04-12.md +0 -0
  325. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/launch/awesome-list-prs/awesome-opensource-security.md +0 -0
  326. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/launch/awesome-list-prs/awesome-security.md +0 -0
  327. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/launch/blog-50-mcp-servers.md +0 -0
  328. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/launch/demo.cast +0 -0
  329. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/launch/owasp-outreach.md +0 -0
  330. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/launch/state-of-mcp-security-2026.md +0 -0
  331. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/mkdocs.yml +0 -0
  332. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/public/badges/ox-coverage.json +0 -0
  333. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/public/corpora/manifest.json +0 -0
  334. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/releases/v0.3.10.md +0 -0
  335. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/releases/v0.3.5.md +0 -0
  336. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/releases/v0.3.6.md +0 -0
  337. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/releases/v0.3.7.md +0 -0
  338. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/releases/v0.3.8.md +0 -0
  339. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/releases/v0.3.9.md +0 -0
  340. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/requirements-lock.txt +0 -0
  341. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/research/state-of-mcp-2026/PREVALENCE.md +0 -0
  342. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/schema/ox-cve-manifest.schema.json +0 -0
  343. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/scripts/backfill_cve_property.py +0 -0
  344. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/scripts/build_coverage_page.py +0 -0
  345. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/scripts/close_duplicate_cve_issues.py +0 -0
  346. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/scripts/cve_watcher.py +0 -0
  347. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/scripts/gen_coverage.py +0 -0
  348. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/scripts/gen_owasp_coverage.py +0 -0
  349. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/scripts/generate_lockfile.py +0 -0
  350. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/scripts/install-pre-commit.sh +0 -0
  351. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/scripts/sync_repo_metadata.py +0 -0
  352. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/scripts/sync_scanner_count.py +0 -0
  353. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/scripts/watch_csa_mcp_baseline.py +0 -0
  354. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/site/coverage/ox.json +0 -0
  355. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/site/coverage/prisma-airs.json +0 -0
  356. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/conftest.py +0 -0
  357. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/LICENSES.md +0 -0
  358. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/clean_mcp.json +0 -0
  359. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/clean_settings.json +0 -0
  360. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/crewai/safe/full_chain.py +0 -0
  361. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/crewai/vulnerable/full_chain.py +0 -0
  362. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/a2a_2026/vulnerable_card.json +0 -0
  363. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/comment-and-control-2026-04-25/patched/review_agent.py +0 -0
  364. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/comment-and-control-2026-04-25/vulnerable/review_agent.py +0 -0
  365. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2025-65720-gpt-researcher/config-safe-rejected/.mcp.json +0 -0
  366. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2025-65720-gpt-researcher/config-unsafe/.mcp.json +0 -0
  367. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2025-65720-gpt-researcher/pin-vulnerable-git/package.json +0 -0
  368. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2025-65720-gpt-researcher/pin-vulnerable-pypi/requirements.txt +0 -0
  369. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2025-66335/patched/requirements.txt +0 -0
  370. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2025-66335/vulnerable/requirements.txt +0 -0
  371. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-20205/patched-splunk-pin/requirements.txt +0 -0
  372. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-20205/redacted-token-log/server.py +0 -0
  373. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-20205/vulnerable-splunk-pin/requirements.txt +0 -0
  374. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-20205/vulnerable-token-log/server.py +0 -0
  375. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-20205-config/patched-yaml/splunk-mcp.yaml +0 -0
  376. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-20205-config/vulnerable-inputs/inputs.conf +0 -0
  377. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-20205-config/vulnerable-yaml/splunk-mcp.yaml +0 -0
  378. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-23744-mcp-inspector/vendored-fork/vendor/mcpjam-inspector/server.ts +0 -0
  379. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-26015-docsgpt/config-safe-no-override/.mcp.json +0 -0
  380. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-26015-docsgpt/config-safe-rejected/.mcp.json +0 -0
  381. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-26015-docsgpt/config-unsafe/.mcp.json +0 -0
  382. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-26015-docsgpt/pin-safe/package.json +0 -0
  383. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-26015-docsgpt/pin-vulnerable/package.json +0 -0
  384. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-26015-docsgpt/pin-vulnerable-git/package.json +0 -0
  385. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-26030-semantic-kernel/pin-safe/requirements.txt +0 -0
  386. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-26030-semantic-kernel/pin-safe-floor/requirements.txt +0 -0
  387. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-26030-semantic-kernel/pin-vulnerable/requirements.txt +0 -0
  388. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-27825-atlassian/patched-pin/requirements.txt +0 -0
  389. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-27825-atlassian/vulnerable/agent.py +0 -0
  390. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-30615/patched/py_argv_allowlist.py +0 -0
  391. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-30615/vulnerable/py_os_system_stdin.py +0 -0
  392. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-30615/vulnerable/py_subprocess_shell.py +0 -0
  393. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-30615/vulnerable/ts_execa_shell.ts +0 -0
  394. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-30623-litellm/patched/requirements-floor.txt +0 -0
  395. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-30623-litellm/patched/requirements.txt +0 -0
  396. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-30623-litellm/vulnerable/requirements.txt +0 -0
  397. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-32211/patched-with-auth/.mcp.json +0 -0
  398. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-32211/vulnerable-no-auth/.mcp.json +0 -0
  399. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-32211-server/pyproject.toml +0 -0
  400. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-32211-server/server.py +0 -0
  401. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-33032/patched/router.go +0 -0
  402. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-33032/vulnerable/router.go +0 -0
  403. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-33032/vulnerable/server.py +0 -0
  404. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-33032/vulnerable/server.ts +0 -0
  405. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-33626/patched-pin/requirements.txt +0 -0
  406. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-33626/vulnerable/pipeline.py +0 -0
  407. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-39313/length-capped/http.ts +0 -0
  408. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-39313/patched/package.json +0 -0
  409. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-39313/vulnerable/http.ts +0 -0
  410. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-39313/vulnerable/package.json +0 -0
  411. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-40068-claudecode/pin-safe/package.json +0 -0
  412. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-40068-claudecode/pin-vulnerable/package.json +0 -0
  413. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-40933/vulnerable/flow.json +0 -0
  414. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-41481/patched-no-redirect/server.py +0 -0
  415. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-41481/patched-pin/requirements.txt +0 -0
  416. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-41481/vulnerable-pin/requirements.txt +0 -0
  417. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-41481/vulnerable-redirect/server.py +0 -0
  418. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-41488/patched-pin/requirements.txt +0 -0
  419. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-41488/patched-pinned/server.py +0 -0
  420. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-41488/vulnerable-pin/requirements.txt +0 -0
  421. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-41488/vulnerable-toctou/server.py +0 -0
  422. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-44717-mcp-calculate-server/pin-safe/requirements.txt +0 -0
  423. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-44717-mcp-calculate-server/pin-safe-floor/requirements.txt +0 -0
  424. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-44717-mcp-calculate-server/pin-vulnerable/requirements.txt +0 -0
  425. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-7061-chatgpt-mcp/safe/package.json +0 -0
  426. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-7061-chatgpt-mcp/vulnerable-git/package.json +0 -0
  427. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-7061-chatgpt-mcp/vulnerable-shorthand/package.json +0 -0
  428. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-7591-astro-mcp/source-safe/no_import.ts +0 -0
  429. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-7591-astro-mcp/source-safe/parametrized.ts +0 -0
  430. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-7591-astro-mcp/source-safe/tagged_template.ts +0 -0
  431. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-7591-astro-mcp/source-unsafe/index.ts +0 -0
  432. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-7591-astro-mcp/vulnerable/package.json +0 -0
  433. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/dns-rebind-sdk-class/apollo-patched/package.json +0 -0
  434. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/dns-rebind-sdk-class/apollo-vulnerable/package.json +0 -0
  435. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/dns-rebind-sdk-class/java-patched/pom.xml +0 -0
  436. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/dns-rebind-sdk-class/java-vulnerable/pom.xml +0 -0
  437. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/dns-rebind-sdk-class/python-patched/requirements.txt +0 -0
  438. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/dns-rebind-sdk-class/python-pattern-guarded/requirements.txt +0 -0
  439. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/dns-rebind-sdk-class/python-pattern-guarded/server.py +0 -0
  440. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/dns-rebind-sdk-class/python-pattern-unguarded/requirements.txt +0 -0
  441. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/dns-rebind-sdk-class/python-pattern-unguarded/server.py +0 -0
  442. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/dns-rebind-sdk-class/python-vulnerable/requirements.txt +0 -0
  443. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/healthcare_ai/safe_skill.md +0 -0
  444. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/healthcare_ai/vulnerable_skill.md +0 -0
  445. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/hook_rce/safe_settings.json +0 -0
  446. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/hook_rce/vulnerable_settings.json +0 -0
  447. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/india_pii/safe.txt +0 -0
  448. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/india_pii/vulnerable.txt +0 -0
  449. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/langchain/safe_requirements.txt +0 -0
  450. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/langchain/vulnerable_prompt.py +0 -0
  451. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/langchain/vulnerable_requirements.txt +0 -0
  452. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/marketplace/safe.json +0 -0
  453. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/marketplace/vulnerable.json +0 -0
  454. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/mcp_auth/safe_server.py +0 -0
  455. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/mcp_auth/vulnerable_server.py +0 -0
  456. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/oauth/safe.py +0 -0
  457. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/oauth/vulnerable.py +0 -0
  458. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/ox-mcp-stdio-class/patched_java.java +0 -0
  459. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/ox-mcp-stdio-class/patched_py.py +0 -0
  460. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/ox-mcp-stdio-class/patched_rust.rs +0 -0
  461. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/ox-mcp-stdio-class/patched_ts.ts +0 -0
  462. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/ox-mcp-stdio-class/vulnerable_java.java +0 -0
  463. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/ox-mcp-stdio-class/vulnerable_py.py +0 -0
  464. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/ox-mcp-stdio-class/vulnerable_rust.rs +0 -0
  465. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/ox-mcp-stdio-class/vulnerable_ts.ts +0 -0
  466. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/routines/safe.json +0 -0
  467. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/routines/vulnerable.json +0 -0
  468. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/skills/safe.md +0 -0
  469. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/skills/vulnerable.md +0 -0
  470. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/ssrf/safe.py +0 -0
  471. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/ssrf/vulnerable.py +0 -0
  472. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/state_privacy/safe_privacy.md +0 -0
  473. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/state_privacy/vulnerable_privacy.md +0 -0
  474. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/tasks/safe.py +0 -0
  475. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/tasks/vulnerable.py +0 -0
  476. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/deepseek/safe/agent.py +0 -0
  477. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/deepseek/vulnerable/agent.py +0 -0
  478. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/env_with_secrets +0 -0
  479. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/eu_ai_act_art15_locale/documented_risk/.agent-audit-kit.yml +0 -0
  480. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/eu_ai_act_art15_locale/documented_risk/agent.yaml +0 -0
  481. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/eu_ai_act_art15_locale/multilingual_en_only/agent.yaml +0 -0
  482. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/eu_ai_act_art15_locale/multilingual_en_only/evals/welcome.en.yaml +0 -0
  483. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/eu_ai_act_art15_locale/multilingual_internal_only/agent.yaml +0 -0
  484. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/eu_ai_act_art15_locale/multilingual_with_coverage/agent.yaml +0 -0
  485. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/eu_ai_act_art15_locale/multilingual_with_coverage/evals/welcome.de.yaml +0 -0
  486. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/eu_ai_act_art15_locale/multilingual_with_coverage/evals/welcome.en.yaml +0 -0
  487. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/eu_ai_act_art15_locale/multilingual_with_coverage/evals/welcome.fr.yaml +0 -0
  488. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/eu_ai_act_art15_locale/single_locale/agent.yaml +0 -0
  489. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/harness_shared_state/safe_multi_agent.py +0 -0
  490. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/harness_shared_state/unsafe_multi_agent.py +0 -0
  491. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/incidents/ipi-wild-2026-04-24/poisoned_template.md +0 -0
  492. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/incidents/mcp-fhi/clean/server.py +0 -0
  493. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/incidents/mcp-fhi/vulnerable/server.py +0 -0
  494. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/incidents/ox-mcp-2026-04-15/documented-risk/.agent-audit-kit.yml +0 -0
  495. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/incidents/ox-mcp-2026-04-15/documented-risk/requirements.txt +0 -0
  496. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/incidents/ox-mcp-2026-04-15/documented-risk/server.py +0 -0
  497. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/incidents/ox-mcp-2026-04-15/python/sanitized/requirements.txt +0 -0
  498. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/incidents/ox-mcp-2026-04-15/python/sanitized/server.py +0 -0
  499. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/incidents/ox-mcp-2026-04-15/python/vulnerable/requirements.txt +0 -0
  500. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/incidents/ox-mcp-2026-04-15/python/vulnerable/server.py +0 -0
  501. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/incidents/ox-mcp-2026-04-15/typescript/sanitized/package.json +0 -0
  502. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/incidents/ox-mcp-2026-04-15/typescript/sanitized/server.ts +0 -0
  503. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/incidents/ox-mcp-2026-04-15/typescript/vulnerable/package.json +0 -0
  504. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/incidents/ox-mcp-2026-04-15/typescript/vulnerable/server.ts +0 -0
  505. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/incidents/ox-mcp-marketplace-fetch/patched.py +0 -0
  506. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/incidents/ox-mcp-marketplace-fetch/vulnerable.py +0 -0
  507. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/incidents/ox-mcp-marketplace-fetch/vulnerable.ts +0 -0
  508. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/incidents/vercel-2026-04-19/app.yaml +0 -0
  509. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/kong_konnect/.mcp.json +0 -0
  510. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/langchain_prompt_loader/constant_safe.py +0 -0
  511. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/langchain_prompt_loader/user_path_unsafe.py +0 -0
  512. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/langchain_prompt_loader/validated_safe.py +0 -0
  513. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/langgraph/safe/graph.py +0 -0
  514. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/langgraph/vulnerable/graph.py +0 -0
  515. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_deprecated/clean_migrated/server.py +0 -0
  516. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_deprecated/config_all/.mcp.json +0 -0
  517. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_deprecated/logging_py/server.py +0 -0
  518. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_deprecated/roots_py/server.py +0 -0
  519. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_deprecated/sampling_py/server.py +0 -0
  520. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_deprecated/stdlib_logging_fp/util.py +0 -0
  521. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_sampling/clean_python/requirements.txt +0 -0
  522. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_sampling/clean_python/server.py +0 -0
  523. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_sampling/config_clean/.mcp.json +0 -0
  524. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_sampling/config_vulnerable/.mcp.json +0 -0
  525. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_sampling/documented_risk/.agent-audit-kit.yml +0 -0
  526. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_sampling/documented_risk/requirements.txt +0 -0
  527. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_sampling/documented_risk/server.py +0 -0
  528. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_sampling/vulnerable_python/requirements.txt +0 -0
  529. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_sampling/vulnerable_python/server.py +0 -0
  530. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_sampling/vulnerable_typescript/package.json +0 -0
  531. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_sampling/vulnerable_typescript/server.ts +0 -0
  532. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_ssrf/safe_tool.py +0 -0
  533. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_ssrf/vulnerable_tool.py +0 -0
  534. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_stateless/clean_py/requirements.txt +0 -0
  535. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_stateless/clean_py/server.py +0 -0
  536. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_stateless/documented_risk/.agent-audit-kit.yml +0 -0
  537. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_stateless/documented_risk/requirements.txt +0 -0
  538. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_stateless/documented_risk/server.py +0 -0
  539. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_stateless/vulnerable_001_py/requirements.txt +0 -0
  540. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_stateless/vulnerable_001_py/server.py +0 -0
  541. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_stateless/vulnerable_001_ts/package.json +0 -0
  542. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_stateless/vulnerable_001_ts/server.ts +0 -0
  543. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_stateless/vulnerable_002_py/client.py +0 -0
  544. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_stateless/vulnerable_002_py/requirements.txt +0 -0
  545. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_stateless/vulnerable_003_k8s/service.yaml +0 -0
  546. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_stateless/vulnerable_003_nginx/nginx.conf +0 -0
  547. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_stateless/vulnerable_003_store_py/handlers.py +0 -0
  548. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_stateless/vulnerable_003_store_py/requirements.txt +0 -0
  549. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_stateless/vulnerable_004_client/client.py +0 -0
  550. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_stateless/vulnerable_004_client/requirements.txt +0 -0
  551. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_tool_unsafe_eval/eval_safe.py +0 -0
  552. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_tool_unsafe_eval/eval_unsafe.py +0 -0
  553. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_tool_unsafe_eval/no_tool_decorator.py +0 -0
  554. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/metis_pomdp/refusal_refeed_safe.py +0 -0
  555. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/metis_pomdp/refusal_refeed_unsafe.py +0 -0
  556. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/metis_pomdp/scoring_sink_unsafe.py +0 -0
  557. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/openapi_smells/clean.openapi.yaml +0 -0
  558. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/openapi_smells/smelly.openapi.yaml +0 -0
  559. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/openclaw/role_default_admin_unsafe.py +0 -0
  560. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/openclaw/role_explicit_safe.py +0 -0
  561. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/package_with_risks.json +0 -0
  562. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/pipelock/policy_invalid.yaml +0 -0
  563. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/pipelock/policy_minimal.yaml +0 -0
  564. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/pipelock/policy_with_parity.yaml +0 -0
  565. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/project_deal/safe/pricer.py +0 -0
  566. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/project_deal/vulnerable/pricer.py +0 -0
  567. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/server_cards/clean.server-card.json +0 -0
  568. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/server_cards/poisoned.server-card.json +0 -0
  569. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/skill_lifecycle/safe_skill.py +0 -0
  570. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/skill_lifecycle/unsafe_skill.py +0 -0
  571. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/social_agents/tiktok_human_in_loop.py +0 -0
  572. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/social_agents/tiktok_unsafe.py +0 -0
  573. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/stainless_lineage/config_root/stainless.yml +0 -0
  574. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/stainless_lineage/generated_python_sdk/client.py +0 -0
  575. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/stainless_lineage/generated_typescript_sdk/client.ts +0 -0
  576. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/stainless_lineage/handwritten/server.py +0 -0
  577. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/vulnerable_hooks.json +0 -0
  578. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/vulnerable_mcp.json +0 -0
  579. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/vulnerable_settings.json +0 -0
  580. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_a2a_2026.py +0 -0
  581. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_a2a_protocol.py +0 -0
  582. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_action.py +0 -0
  583. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_agent_config.py +0 -0
  584. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_aicm.py +0 -0
  585. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_anthropic_sdk_hardening.py +0 -0
  586. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_argv_toctou.py +0 -0
  587. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_cli.py +0 -0
  588. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_compliance_output.py +0 -0
  589. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_compliance_v2.py +0 -0
  590. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_coverage_tables.py +0 -0
  591. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_crewai_nvd_and_evasion.py +0 -0
  592. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_csa_baseline_watcher.py +0 -0
  593. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_cve_2025_66335.py +0 -0
  594. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_cve_2025_66414_python_sdk.py +0 -0
  595. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_cve_2026_20205_config.py +0 -0
  596. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_cve_2026_20205_splunk.py +0 -0
  597. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_cve_2026_32211.py +0 -0
  598. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_cve_2026_32211_server.py +0 -0
  599. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_cve_2026_33626.py +0 -0
  600. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_cve_2026_35568_java.py +0 -0
  601. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_cve_2026_35577_apollo.py +0 -0
  602. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_cve_2026_39313.py +0 -0
  603. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_cve_2026_40576_excel.py +0 -0
  604. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_cve_2026_40608_next_ai_draw.py +0 -0
  605. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_cve_2026_41481.py +0 -0
  606. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_cve_2026_41488.py +0 -0
  607. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_cve_fix_and_watch_and_advisories.py +0 -0
  608. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_cve_watcher_dedup.py +0 -0
  609. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_cves_2026.py +0 -0
  610. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_cyclonedx_aibom.py +0 -0
  611. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_determinism_benchmark.py +0 -0
  612. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_diff.py +0 -0
  613. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_discovery.py +0 -0
  614. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_engine.py +0 -0
  615. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_engine_ignore_paths.py +0 -0
  616. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_eu_ai_act_art15_locale.py +0 -0
  617. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_examples.py +0 -0
  618. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_fix.py +0 -0
  619. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_flowise.py +0 -0
  620. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_gha_immutable.py +0 -0
  621. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_healthcare_ai_and_state_privacy.py +0 -0
  622. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_hook_injection.py +0 -0
  623. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_index_builder.py +0 -0
  624. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_india_pii.py +0 -0
  625. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_integrations_notify.py +0 -0
  626. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_kong_konnect_cve_2026_13341.py +0 -0
  627. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_legal_compliance.py +0 -0
  628. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_llm_scan.py +0 -0
  629. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_llm_scan_mod.py +0 -0
  630. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_llm_sql_rce.py +0 -0
  631. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_marketplace_manifest.py +0 -0
  632. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_marketplace_sources.py +0 -0
  633. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_mcp_attestation.py +0 -0
  634. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_mcp_auth_pathtraversal.py +0 -0
  635. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_mcp_config.py +0 -0
  636. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_mcp_deprecated_features.py +0 -0
  637. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_mcp_env_placeholder_exfil.py +0 -0
  638. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_mcp_gateway_registry_cve_2026_14471.py +0 -0
  639. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_mcp_http_noauth_server.py +0 -0
  640. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_mcp_marketplace_fetch.py +0 -0
  641. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_mcp_noauth_default.py +0 -0
  642. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_mcp_sampling_capability.py +0 -0
  643. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_mcp_server_card.py +0 -0
  644. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_mcp_ssrf_toolarg.py +0 -0
  645. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_mcp_stateless_migration.py +0 -0
  646. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_mcp_stdio_cmd_inj_java.py +0 -0
  647. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_mcp_stdio_cmd_inj_python.py +0 -0
  648. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_mcp_stdio_cmd_inj_rust.py +0 -0
  649. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_mcp_stdio_cmd_inj_typescript.py +0 -0
  650. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_mcp_stdio_launcher.py +0 -0
  651. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_mcp_toolgate_asymmetry.py +0 -0
  652. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_mcp_tunnel.py +0 -0
  653. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_mcpwn.py +0 -0
  654. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_nsa_mcp_csi.py +0 -0
  655. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_oauth_surface.py +0 -0
  656. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_owasp_agentic_coverage.py +0 -0
  657. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_owasp_public_json.py +0 -0
  658. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_owasp_report.py +0 -0
  659. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_owasp_report_output.py +0 -0
  660. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_parity_region_drift.py +0 -0
  661. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_phase3.py +0 -0
  662. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_pin_drift.py +0 -0
  663. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_pinning.py +0 -0
  664. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_pinning_mod.py +0 -0
  665. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_pr_summary.py +0 -0
  666. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_preset_mcp_ox_2026_04.py +0 -0
  667. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_proxy.py +0 -0
  668. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_repo_metadata_sync.py +0 -0
  669. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_sandbox_self_disable.py +0 -0
  670. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_sarif_fingerprints.py +0 -0
  671. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_sarif_github_upload.py +0 -0
  672. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_sarif_output.py +0 -0
  673. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_scoring.py +0 -0
  674. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_secret_exposure.py +0 -0
  675. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_serena_cve_2026_49471.py +0 -0
  676. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_shared_resource_authz.py +0 -0
  677. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_skill_poisoning.py +0 -0
  678. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_skill_untrusted_exec_path.py +0 -0
  679. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_stdio_injection.py +0 -0
  680. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_supply_chain.py +0 -0
  681. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_taint_analysis.py +0 -0
  682. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_tool_poisoning.py +0 -0
  683. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_toxic_flow.py +0 -0
  684. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_transport_security.py +0 -0
  685. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_trust_boundary.py +0 -0
  686. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_typescript_pattern_scan_sql.py +0 -0
  687. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_v0_3_10_features.py +0 -0
  688. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_v0_3_10_rules.py +0 -0
  689. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_v0_3_11_rules.py +0 -0
  690. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_v0_3_13_rules.py +0 -0
  691. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_v0_3_14_rules.py +0 -0
  692. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_v0_3_15_rules.py +0 -0
  693. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_v0_3_16_rules.py +0 -0
  694. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_v0_3_17_rules.py +0 -0
  695. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_v0_3_18_rules.py +0 -0
  696. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_v0_3_19_rules.py +0 -0
  697. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_v0_3_1_cve_rules.py +0 -0
  698. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_v0_3_20_rules.py +0 -0
  699. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_v0_3_21_rules.py +0 -0
  700. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_v0_3_22_rules.py +0 -0
  701. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_v0_3_8_features.py +0 -0
  702. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_v0_3_8_rules.py +0 -0
  703. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_v0_3_9_features.py +0 -0
  704. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_v0_3_9_features_p1.py +0 -0
  705. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_v0_3_9_rules.py +0 -0
  706. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_verification.py +0 -0
  707. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_verification_mod.py +0 -0
  708. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_vuln_db.py +0 -0
  709. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/vscode-extension/.vscodeignore +0 -0
  710. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/vscode-extension/CLAUDE.md +0 -0
  711. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/vscode-extension/README.md +0 -0
  712. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/vscode-extension/package.json +0 -0
  713. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/vscode-extension/src/extension.ts +0 -0
  714. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/vscode-extension/src/sarifReader.ts +0 -0
  715. {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/vscode-extension/tsconfig.json +0 -0
@@ -1,9 +1,12 @@
1
- name: AAK Response SLACVE watcher
1
+ name: AAK CVE watcherbest-effort rule coverage
2
2
 
3
- # Implements the public 48-hour CVE-to-rule commitment described in
4
- # ROADMAP_2026.md §2.3. Queries NVD's keyword feed for recent MCP-related
5
- # CVEs, diffs against what's already in CHANGELOG.cves.md, and files an
6
- # issue tagged `cve-response` for anything new. Runs every 6 hours.
3
+ # Best-effort disclosed-CVE rule coverage (ROADMAP_2026.md §2.3): triage newly
4
+ # disclosed MCP CVEs and turn them into rules as fast as we responsibly can.
5
+ # No public deadline is promised a solo maintainer can't carry an unbounded
6
+ # clock but the CHANGELOG.cves.md ledger keeps actual coverage and timing
7
+ # transparent. Queries NVD's keyword feed for recent MCP-related CVEs, diffs
8
+ # against what's already in CHANGELOG.cves.md, and files an issue tagged
9
+ # `cve-response` for anything new. Runs every 6 hours.
7
10
 
8
11
  on:
9
12
  schedule:
@@ -67,7 +70,7 @@ jobs:
67
70
  ``,
68
71
  cve.description || '(no description yet)',
69
72
  ``,
70
- `### AAK response checklist (48h SLA)`,
73
+ `### AAK response checklist (best-effort — no fixed deadline)`,
71
74
  ``,
72
75
  `- [ ] Verify CVE on NVD + vendor advisory`,
73
76
  `- [ ] Author rule(s): \`AAK-XXX-XXX\``,
@@ -81,6 +84,9 @@ jobs:
81
84
  repo: context.repo.repo,
82
85
  title,
83
86
  body,
84
- labels: ['cve-response', 'sla-48h'],
87
+ // The release gate (release.yml) refuses to ship while any open
88
+ // `cve-response` issue exists. The old `sla-48h` label was
89
+ // retired with the 48h SLA (PR #432); it is no longer applied.
90
+ labels: ['cve-response'],
85
91
  });
86
92
  }
@@ -13,9 +13,10 @@ permissions:
13
13
 
14
14
  jobs:
15
15
  # --------------------------------------------------------------------------
16
- # 0. Gate: refuse to release while any sla-48h CVE-response issue is open.
16
+ # 0. Gate: refuse to release while any cve-response issue is open.
17
17
  # Implements CLAUDE_PROMPT.md §5(1) — "blocks release until the issue
18
- # is closed". (C14)
18
+ # is closed". (C14). Keys off the `cve-response` label; the old `sla-48h`
19
+ # label was retired with the 48h SLA (PR #432).
19
20
  # --------------------------------------------------------------------------
20
21
  cve-response-gate:
21
22
  name: CVE-response gate
@@ -29,13 +30,13 @@ jobs:
29
30
  GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
30
31
  run: |
31
32
  set -euo pipefail
32
- count=$(gh issue list --repo "$GITHUB_REPOSITORY" --label sla-48h --state open --json number --jq length)
33
+ count=$(gh issue list --repo "$GITHUB_REPOSITORY" --label cve-response --state open --json number --jq length)
33
34
  if [ "$count" != "0" ]; then
34
- echo "::error ::cve-response gate: $count open sla-48h issue(s). Close them (or resolve with patch-release) before tagging."
35
- gh issue list --repo "$GITHUB_REPOSITORY" --label sla-48h --state open
35
+ echo "::error ::cve-response gate: $count open cve-response issue(s). Triage + close them (pin or disposition) before tagging."
36
+ gh issue list --repo "$GITHUB_REPOSITORY" --label cve-response --state open
36
37
  exit 1
37
38
  fi
38
- echo "cve-response gate: clean — 0 open sla-48h issues."
39
+ echo "cve-response gate: clean — 0 open cve-response issues."
39
40
 
40
41
  # --------------------------------------------------------------------------
41
42
  # 1. Publish to PyPI using trusted publishing (OIDC)
@@ -1,20 +1,113 @@
1
- # AAK Response SLA — CVE-to-Rule Ledger
1
+ # AAK CVE-to-Rule Ledger
2
2
 
3
- We publicly commit to shipping rule coverage for every disclosed MCP CVE
4
- within **48 hours of NVD disclosure**. This file is the audit trail.
3
+ We triage newly disclosed MCP CVEs continuously and ship rule coverage as fast
4
+ as we responsibly can no fixed public deadline (see `ROADMAP_2026.md §2.3`).
5
+ This file is the audit trail of what shipped and when.
5
6
 
6
7
  Format: one line per CVE, `CVE-YYYY-NNNNN` → `AAK-XXX-NNN` with the
7
8
  shipped-at timestamp. The GitHub Action `.github/workflows/cve-watcher.yml`
8
- diffs NVD's MCP keyword feed against this file and opens an
9
- `sla-48h`-labelled issue for anything new.
9
+ diffs NVD's MCP keyword feed against this file and opens a `cve-response`
10
+ issue for anything new; the release gate blocks a tag while any such issue is
11
+ open.
12
+
13
+ > **On the "48h" figures below:** AgentAuditKit does not commit to a 48-hour (or
14
+ > any fixed) CVE-response SLA — that public commitment was retired in PR #432.
15
+ > The `sla-48h` label is likewise retired and should be removed from any open
16
+ > issue. The per-CVE latency figures in the tables are **measurements recorded at
17
+ > the time**, kept as dated facts, not a standing promise.
18
+
19
+ ## Dispositioned 2026-07-19 (v0.3.52)
20
+
21
+ | Incident / Anchor | Reference | AAK rule(s) / disposition | Dispositioned |
22
+ |---|---|---|---|
23
+ | CVE-2026-16133 (LiuMengxuan04 MiniCode 0.1.0 — `child_process.spawn` command injection in `mcp.ts`) | [NVD CVE-2026-16133](https://nvd.nist.gov/vuln/detail/CVE-2026-16133) (MEDIUM, CVSS 5) | **Class-covered** by `AAK-MCP-STDIO-CMD-INJ-*` (TS/JS MCP stdio `child_process.spawn` command injection). Not pinned — GitHub-only project (0.1.0), no released fix (upstream PR pending), no matching npm/PyPI artifact. | 2026-07-19 |
24
+
25
+ ## MCP 2026-07-28 ratification reconciliation — 2026-07-16 (v0.3.50)
26
+
27
+ The 2026-07-28 MCP specification is still a **release candidate** as of this
28
+ date: the RC was locked on 2026-05-21 (milestone `2026-07-28-RC`) and the final,
29
+ ratified spec publishes on **2026-07-28** (12 days out). Every AAK rule shipped
30
+ in July for that spec is therefore *correctly* labelled "release candidate" — no
31
+ rule is relabelled "ratified" ahead of publication. This attestation records that
32
+ each rule's cited SEP number was re-verified against primary sources and is
33
+ accurate; nothing needed correcting.
34
+
35
+ Primary sources: [SEP-2596 PR #2596](https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2596)
36
+ (labelled `final`, milestone `2026-07-28-RC`),
37
+ [SEP-2577/2596 spec-incorporation PR #2791](https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2791),
38
+ [2026-07-28 RC blog](https://blog.modelcontextprotocol.io/posts/2026-07-28-release-candidate/).
39
+
40
+ | Rule(s) | Cited SEP(s) | Verified meaning | Status |
41
+ |---|---|---|---|
42
+ | AAK-MCP-DEPRECATED-001..003 | SEP-2577 + SEP-2596 | SEP-2577 annotation-deprecates Roots/Sampling/Logging; SEP-2596 is the 12-month feature-lifecycle & deprecation policy | ✓ accurate · RC label correct |
43
+ | AAK-OAUTH-006 | SEP-2468 (RFC 9207) | `iss` authorization-response validation | ✓ accurate · RC label correct |
44
+ | AAK-MCP-STATELESS-001 | SEP-2567, SEP-2575, SEP-1442 | session removal / stateless transport; optional initialization handshake | ✓ accurate · RC label correct |
45
+ | AAK-MCP-STATELESS-002 | SEP-1686, SEP-2663 | experimental Tasks primitive → Tasks extension | ✓ accurate · RC label correct |
46
+
47
+ Separately, **AAK-OAUTH-007** (new in v0.3.50) is cited to the **ratified** MCP
48
+ 2025-11-25 authorization spec — RFC 8707 Resource Indicators are mandatory today
49
+ (`resource` parameter on authorization + token requests; server-side audience
50
+ validation), independent of the 2026-07-28 RC. It is not part of this RC
51
+ reconciliation.
52
+
53
+ ## Shipped in v0.3.50 (2026-07-18) — 2026-07-15..17 wave
54
+
55
+ Response to a second 2026-07 disclosure wave (24 CVEs, issues #445–#468) the NVD
56
+ watcher filed while the earlier backlog was being cleared. Fourteen CVEs cluster
57
+ onto seven pinnable packages (many share one fix version) and ship as version-pins
58
+ (`mcp_cve_pins_2026_07`, now 22 pins); one is covered by an existing pin; nine are
59
+ dispositioned (PHP / GitHub Action / WordPress ecosystems, no vendor fix, or no NVD
60
+ version data). Packages + floors verified against PyPI / npm; `mcp` and `n8n-mcp`
61
+ pins use precise token regexes so they never trip `fastmcp` / `mcp-text-editor` /
62
+ `n8n`.
63
+
64
+ | Incident / Anchor | Reference | AAK rule(s) / disposition | Shipped |
65
+ |---|---|---|---|
66
+ | CVE-2026-52869 + CVE-2026-52870 + CVE-2026-59950 (MCP Python SDK `mcp` < 1.28.1 — cross-client session injection, task cross-access, WebSocket no-Origin) | [NVD CVE-2026-52869](https://nvd.nist.gov/vuln/detail/CVE-2026-52869) (HIGH, CVSS 7.1) | **AAK-MCP-SDK-CVE-2026-52869-001** (NEW: HIGH, SUPPLY_CHAIN — pin `mcp` >= 1.28.1) | 2026-07-18 |
67
+ | CVE-2026-46339 + CVE-2026-49353 + CVE-2026-62312 (9Router `9router` < 0.5.2 — unauthenticated MCP bridge → command exec / RCE) | [NVD CVE-2026-46339](https://nvd.nist.gov/vuln/detail/CVE-2026-46339) (CRITICAL, CVSS 10) | **AAK-MCP-9ROUTER-CVE-2026-46339-001** (NEW: CRITICAL, SUPPLY_CHAIN — pin `9router` >= 0.5.2) | 2026-07-18 |
68
+ | CVE-2026-54052 + CVE-2026-55608 (n8n-MCP `n8n-mcp` < 2.57.4 — multi-tenant workflow-backup isolation bypass) | [NVD CVE-2026-54052](https://nvd.nist.gov/vuln/detail/CVE-2026-54052) (CRITICAL, CVSS 9.9) | **AAK-MCP-N8NMCP-CVE-2026-54052-001** (NEW: CRITICAL, SUPPLY_CHAIN — pin `n8n-mcp` >= 2.57.4) | 2026-07-18 |
69
+ | CVE-2026-44968 + CVE-2026-44970 + CVE-2026-44969 (dbt-mcp `dbt-mcp` < 1.17.1 — dbt-flag injection into subprocess argv; tool-arg leakage via telemetry + file logging) | [NVD CVE-2026-44968](https://nvd.nist.gov/vuln/detail/CVE-2026-44968) (MEDIUM, CVSS 6.3) | **AAK-MCP-DBTMCP-CVE-2026-44968-001** (NEW: MEDIUM, SUPPLY_CHAIN — pin `dbt-mcp` >= 1.17.1) | 2026-07-18 |
70
+ | CVE-2026-46341 (Apify MCP `@apify/actors-mcp-server` < 0.9.21 — `fetch-apify-docs` `startsWith()` allowlist bypass → SSRF) | [NVD CVE-2026-46341](https://nvd.nist.gov/vuln/detail/CVE-2026-46341) (MEDIUM, CVSS 6.1) | **AAK-MCP-APIFY-CVE-2026-46341-001** (NEW: MEDIUM, SUPPLY_CHAIN — pin `@apify/actors-mcp-server` >= 0.9.21) | 2026-07-18 |
71
+ | CVE-2026-58195 (Agentic-Flow `agentic-flow` < 2.0.14 — MCP tool params interpolated into `execSync()` → OS command injection) | [NVD CVE-2026-58195](https://nvd.nist.gov/vuln/detail/CVE-2026-58195) (HIGH, CVSS 8.8) | **AAK-MCP-AGENTICFLOW-CVE-2026-58195-001** (NEW: HIGH, SUPPLY_CHAIN — pin `agentic-flow` >= 2.0.14) | 2026-07-18 |
72
+ | CVE-2026-15415 (AWS HealthOmics MCP `awslabs.aws-healthomics-mcp-server` < 0.0.36 — `workflow_files` directory traversal writes outside the bundle dir) | [NVD CVE-2026-15415](https://nvd.nist.gov/vuln/detail/CVE-2026-15415) (MEDIUM, CVSS 5.5) | **AAK-MCP-HEALTHOMICS-CVE-2026-15415-001** (NEW: MEDIUM, SUPPLY_CHAIN — pin >= 0.0.36) | 2026-07-18 |
73
+ | CVE-2026-62208 (OpenClaw before 2026.6.5 — Authorization headers forwarded during MCP SSE redirects) | [NVD CVE-2026-62208](https://nvd.nist.gov/vuln/detail/CVE-2026-62208) (MEDIUM, CVSS 6.5) | **Covered** by `AAK-MCP-OPENCLAW-CVE-2026-62195-001` (fires < 2026.6.6, which includes the < 2026.6.5 affected range); CVE added to that rule's references | 2026-07-18 |
74
+ | CVE-2026-46512 / 46513 / 46514 / 46515 (Frogman headless-PBX MCP < 1.6.2 / 1.6.3 — dialplan injection → Asterisk RCE, raw API-token storage, plaintext creds in audit log, PERM_READ over-exposure) | [NVD CVE-2026-46512](https://nvd.nist.gov/vuln/detail/CVE-2026-46512) (CRITICAL, CVSS 9.9) | **Documented, not pinned** — Frogman is a PHP application (`Tools/*.php`, `oc_*` tables); AAK's pin detector reads PyPI/npm manifests only | 2026-07-18 |
75
+ | CVE-2026-47751 (Claude Code Action < 1.0.74 — checks out attacker PR head + auto-enables all project MCP servers from a malicious `.mcp.json` → runner RCE + secret exfil) | [NVD CVE-2026-47751](https://nvd.nist.gov/vuln/detail/CVE-2026-47751) (CVSS n/a) | **Documented, not pinned** — a GitHub Action pinned in `.github/workflows` (`uses: anthropics/claude-code-action@vX`), not a PyPI/npm manifest artifact | 2026-07-18 |
76
+ | CVE-2026-9810 (AI Copilot WordPress plugin < 1.5.4 — OAuth token not bound to a WP user → unauth admin MCP-tool execution) | [NVD CVE-2026-9810](https://nvd.nist.gov/vuln/detail/CVE-2026-9810) (CVSS n/a) | **Documented, not pinned** — a WordPress/PHP plugin; unsupported ecosystem for the pin detector | 2026-07-18 |
77
+ | CVE-2026-57860 (ForgeCode `forgecode` — auto-loads + executes a repo's `.mcp.json` on startup with no confirmation → RCE from an untrusted repo) | [NVD CVE-2026-57860](https://nvd.nist.gov/vuln/detail/CVE-2026-57860) (HIGH, CVSS 7.8) | **Documented, not pinned** — NVD/advisory name no fixed version (design-level auto-exec); untrusted-`.mcp.json`-launch class | 2026-07-18 |
78
+ | CVE-2026-9135 + CVE-2026-7755 (IBM Langflow OSS — ToolGuard dynamic-CodeInput code injection bypassing `allow_custom_components=false`; RCE via incomplete MCP-config validation) | [NVD CVE-2026-9135](https://nvd.nist.gov/vuln/detail/CVE-2026-9135) (CRITICAL, CVSS 9.9) | **Documented, not pinned** — NVD published no CPE data and the affected range is ambiguous (`1.0.0`–`1.10.0` vs "up to 1.9.2"); will pin once the fixed version is confirmed (tracked) | 2026-07-18 |
79
+
80
+ ## Shipped in v0.3.50 (2026-07-16)
81
+
82
+ Response to the 2026-07-13..15 disclosure wave (13 CVEs, issues #429–#442).
83
+ Eight have a vendor fix + a pinnable PyPI/npm artifact and ship as version-pins
84
+ (`mcp_cve_pins_2026_07`); five have no pinnable artifact, no vendor fix, or an
85
+ unsupported ecosystem and are dispositioned below. Package names, fix floors, and
86
+ (where NVD published CPE data) affected ranges were verified against PyPI / npm /
87
+ NVD before shipping.
88
+
89
+ | Incident / Anchor | Reference | AAK rule(s) / disposition | Shipped |
90
+ |---|---|---|---|
91
+ | CVE-2026-15643 (AWS HealthLake MCP `awslabs.healthlake-mcp-server` < 0.0.14 — `next_token` pagination SSRF exfiltrates AWS temporary credentials to an attacker endpoint) | [NVD CVE-2026-15643](https://nvd.nist.gov/vuln/detail/CVE-2026-15643) (HIGH, CVSS 7.3) | **AAK-MCP-HEALTHLAKE-CVE-2026-15643-001** (NEW: HIGH, SUPPLY_CHAIN — pin >= 0.0.14) | 2026-07-16 |
92
+ | CVE-2026-61427 (PraisonAI `praisonai` < 4.6.78 — MCP HTTP-stream unauthenticated by default; `--api-key` defaults to None → `tools/list` + `tools/call`) | [NVD CVE-2026-61427](https://nvd.nist.gov/vuln/detail/CVE-2026-61427) (HIGH, CVSS 7.3) | **AAK-MCP-PRAISONAI-CVE-2026-61427-001** (NEW: HIGH, SUPPLY_CHAIN — pin >= 4.6.78) | 2026-07-16 |
93
+ | CVE-2026-58500 (MCP Appium `appium-mcp` < 1.85.10 — `createLocatorGeneratorUI` HTML/JS injection → `window.parent.postMessage` invokes arbitrary MCP tools) | [NVD CVE-2026-58500](https://nvd.nist.gov/vuln/detail/CVE-2026-58500) (HIGH, CVSS 8.2) | **AAK-MCP-APPIUM-CVE-2026-58500-001** (NEW: HIGH, SUPPLY_CHAIN — pin >= 1.85.10) | 2026-07-16 |
94
+ | CVE-2026-45805 (Penpot MCP `@penpot/mcp` < 2.15.0 — ReplServer on `0.0.0.0:4403` exposes unauthenticated `/execute` → JS RCE) | [NVD CVE-2026-45805](https://nvd.nist.gov/vuln/detail/CVE-2026-45805) (HIGH, CVSS 8.8) | **AAK-MCP-PENPOT-CVE-2026-45805-001** (NEW: CRITICAL, SUPPLY_CHAIN — pin >= 2.15.0) | 2026-07-16 |
95
+ | CVE-2026-62195 (OpenClaw `openclaw` 2026.5.20–<2026.6.6 — MCP loopback authorization bypass lets lower-trust callers run owner-only tools) | [NVD CVE-2026-62195](https://nvd.nist.gov/vuln/detail/CVE-2026-62195) (HIGH, CVSS 8.3; NVD CPE `2026.5.20` <= v < `2026.6.6`) | **AAK-MCP-OPENCLAW-CVE-2026-62195-001** (NEW: HIGH, SUPPLY_CHAIN — pin >= 2026.6.6, introduced 2026.5.20) | 2026-07-16 |
96
+ | CVE-2026-49988 (Repomix `repomix` < 1.14.1 — MCP `attach_packed_output`/`read_repomix_output` reads local files without the `runSecretLint()` boundary) | [NVD CVE-2026-49988](https://nvd.nist.gov/vuln/detail/CVE-2026-49988) (CVSS n/a) | **AAK-MCP-REPOMIX-CVE-2026-49988-001** (NEW: MEDIUM, SUPPLY_CHAIN — pin >= 1.14.1) | 2026-07-16 |
97
+ | CVE-2026-53512 + CVE-2026-53518 (Better Auth `better-auth` / `@better-auth/oauth-provider` < 1.6.11 — refresh-token grant skips `client_secret`; auth-code non-atomic find-then-delete → code replay; both reachable via `mcp`/`oidcProvider` plugins) | [NVD CVE-2026-53512](https://nvd.nist.gov/vuln/detail/CVE-2026-53512) (CVSS n/a) | **AAK-MCP-BETTERAUTH-CVE-2026-53512-001** (NEW: HIGH, SUPPLY_CHAIN — pin >= 1.6.11) | 2026-07-16 |
98
+ | CVE-2026-61462 (mcp-gitlab — `job_id` path traversal in `build/index.js` redirects GitLab API calls using the operator PAT) | [NVD CVE-2026-61462](https://nvd.nist.gov/vuln/detail/CVE-2026-61462) (HIGH, CVSS 8.6) | **Documented, not pinned** — NVD has published no CPE/version data and the description names no fixed version; the "mcp-gitlab" npm name is ambiguous across several GitLab MCP servers. Will pin once the vendor fix version is confirmed (tracked). | 2026-07-16 |
99
+ | CVE-2026-15749 (mastergo-design `mastergo-magic-mcp` <= 0.2.0 — `get-c2d.ts` `filePath` path traversal) | [NVD CVE-2026-15749](https://nvd.nist.gov/vuln/detail/CVE-2026-15749) (MEDIUM, CVSS 5.3) | **Documented, not pinned** — no PyPI/npm artifact (GitHub-only TS project) and NVD notes the vendor has not responded / released no fix, so there is no floor to pin. Path-traversal-in-tool-arg class. | 2026-07-16 |
100
+ | CVE-2026-15750 (mastergo-design `mastergo-magic-mcp` <= 0.2.0 — `get-component-link.ts` `url` SSRF) | [NVD CVE-2026-15750](https://nvd.nist.gov/vuln/detail/CVE-2026-15750) (MEDIUM, CVSS 6.3) | **Class-covered** by `AAK-MCP-SSRF-001` (unvalidated tool-arg URL → fetch); no pinnable artifact / vendor fix | 2026-07-16 |
101
+ | CVE-2026-15751 (mastergo-design `mastergo-magic-mcp` <= 0.2.0 — `component-workflow.md` `rootPath` path traversal) | [NVD CVE-2026-15751](https://nvd.nist.gov/vuln/detail/CVE-2026-15751) (MEDIUM, CVSS 5.3) | **Documented, not pinned** — same package/disposition as CVE-2026-15749 (no artifact, no vendor fix) | 2026-07-16 |
102
+ | CVE-2026-15583 (Grafana MCP Server — `X-Grafana-URL` header confused-deputy exfiltrates the service-account token + SSRF to internal/metadata endpoints) | [NVD CVE-2026-15583](https://nvd.nist.gov/vuln/detail/CVE-2026-15583) (HIGH, CVSS 8.6) | **Documented, not pinned** — `mcp-grafana` is a Go module; AAK's pin detector reads PyPI/npm manifests only. SSRF / confused-deputy class. | 2026-07-16 |
10
103
 
11
104
  ## Shipped in v0.3.49 (2026-07-13)
12
105
 
13
106
  Batch response to the 2026-07-08..12 disclosure wave (13 CVEs). Eight have a
14
107
  vendor fix + a pinnable PyPI/npm artifact and ship as version-pins
15
108
  (`mcp_cve_pins_2026_07`); three have no pinnable artifact or a tractable version
16
- scheme and are dispositioned below. Latency exceeds the 48h target for the
17
- earlier CVEs — this backlog accumulated between the v0.3.48 and v0.3.49 releases
109
+ scheme and are dispositioned below. Latency ran past 48 hours for the earlier
110
+ CVEs — this backlog accumulated between the v0.3.48 and v0.3.49 releases
18
111
  and is recorded honestly.
19
112
 
20
113
  | Incident / Anchor | Reference | AAK rule(s) / disposition | Shipped |
@@ -231,6 +324,6 @@ Source: <https://www.ox.security/blog/the-mother-of-all-ai-supply-chains-critica
231
324
  | CVE-2026-34070 | [NVD](https://nvd.nist.gov/vuln/detail/CVE-2026-34070) | AAK-LANGCHAIN-001, AAK-LANGCHAIN-002 | 2026-04-18 | retroactive |
232
325
  | CVE-2025-68664 | [NVD](https://nvd.nist.gov/vuln/detail/CVE-2025-68664) | AAK-LANGCHAIN-003 | 2026-04-18 | retroactive |
233
326
 
234
- ## Open (48h SLA ticking)
327
+ ## Open (best-effort — no committed SLA)
235
328
 
236
- _none — file response-tracking issues get posted here when the SLA fires._
329
+ _none — newly-filed `cve-response` issues are tracked here until triaged._
@@ -7,6 +7,151 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.3.52] - 2026-07-19
11
+
12
+ ### Added — State of MCP 2026 report: corpus expanded to 1,374 configs (closes #23)
13
+
14
+ - **Corpus expansion.** Added the official MCP Registry as a corpus source
15
+ (`research/state-of-mcp-2026/fetch_registry.py` — cursor pagination, cached,
16
+ rate-limited) and combined it with the existing GitHub crawl. Deduped by config
17
+ content: **1,374 distinct configs** (664 crawl + 710 registry latest-version
18
+ servers) — past issue #23's 1,000-server target. Full provenance (name,
19
+ transport, auth mode, source URL, fetch date) is committed in
20
+ `corpus/registry-manifest.json`, so every number is reproducible from the
21
+ manifest.
22
+ - **Report harness extended, not duplicated.** `run_report.py` now also emits the
23
+ auth-profile metrics — no-auth %, RFC 9728 PRM %, remote-auth static-credential
24
+ %, transport distribution, rule-family distribution, and the 2026-07-28 /
25
+ 2027-07-28 migration-exposure proxies — each with n + denominator + coverage,
26
+ reusing `engine.run_scan` / `scoring.compute_score`. Output is deterministic
27
+ across Python hash seeds (ties break on a stable secondary key).
28
+ - **`research/state-of-mcp-2026/REPORT.md`** — the publishable report: **35.1%
29
+ (482/1,374) no-auth, 0% (0/1,374) RFC 9728 discovery, 100% (318/318) inline-auth
30
+ static credential**, 36.0% critical, median grade B. Plus factual Black Hat
31
+ Arsenal + Briefings abstract skeletons (rewrite-before-submit markers, per
32
+ Black Hat's no-LLM-text rule).
33
+ - **`make report`** regenerates the numbers from the committed manifest, offline
34
+ and deterministically, so the report is a build artifact that cannot drift.
35
+ Adds no rules (still 262).
36
+
37
+ ### Changed — retire the residual 48h CVE-response SLA wording
38
+
39
+ - Reconciled the leftover 48h-SLA framing in `CHANGELOG.cves.md` to best-effort,
40
+ no committed SLA (completing the retirement from PR #432). Historical per-CVE
41
+ latency measurements are left as dated facts; only the live-SLA framing (the
42
+ "Open (48h SLA ticking)" heading, the ledger preamble) was reworded. The
43
+ `sla-48h` label is retired — it should be removed from open issues; the release
44
+ gate keys off the `cve-response` label instead.
45
+
46
+ ### Added — AAK-OAUTH-008 (RFC 9728) + `mcp-2026-07-28` auth-profile + readiness report
47
+
48
+ - **AAK-OAUTH-008** (LOW, MCP_CONFIG) — RFC 9728 Protected-Resource-Metadata
49
+ discovery gap: a remote MCP server config that embeds a static
50
+ `Authorization`/`Bearer`/`auth` credential with no
51
+ `/.well-known/oauth-protected-resource` discovery path, or server source
52
+ enforcing bearer auth without serving PRM. Detection in `oauth_misconfig` runs
53
+ independent of the client-flow hint so it evaluates `.mcp.json` configs.
54
+ - **Anti-duplicate note:** RFC 9207 `iss`-validation was *not* added as a new
55
+ rule — it already ships as `AAK-OAUTH-006`, which was extended to reference the
56
+ 2026-07-28 final auth profile (the proposed OAUTH-009 would have duplicated it).
57
+ - **`--profile mcp-2026-07-28`** (alias of `--preset`) — one-command auth-profile
58
+ conformance check selecting exactly `AAK-OAUTH-006` (RFC 9207) + `AAK-OAUTH-007`
59
+ (RFC 8707) + `AAK-OAUTH-008` (RFC 9728). New preset YAML + docs + smoke tests.
60
+ - **Readiness report** `docs/reports/mcp-2026-07-28-readiness.md` — a dated,
61
+ reproducible scan of 748 public MCP configs (`benchmarks/data/`): **0 reference
62
+ RFC 9728 PRM discovery; 100% of the 36 remote-auth configs hardcode a static
63
+ credential.** Numbers come from a real scan (`scripts/mcp_2026_07_28_readiness.py`,
64
+ deterministic), with explicit limitations (a config corpus can't exercise the
65
+ code-level `iss`/`resource` checks). Rule count 261 → **262**.
66
+
67
+ ### Added — 2026-07-15..17 MCP/agent CVE disclosure-wave pins (7 rules, closes 24 cve-response issues)
68
+
69
+ CVE-response for a second 2026-07 wave (issues #445–#468). 14 CVEs cluster onto 7
70
+ pinnable packages (many share one fix version) → version-pins in
71
+ `mcp_cve_pins_2026_07` (now 22 pins); 1 covered by an existing pin; 9 dispositioned
72
+ in `CHANGELOG.cves.md` (PHP / GitHub-Action / WordPress ecosystems, no vendor fix,
73
+ or no NVD version data). The `mcp` and `n8n-mcp` pins use precise token regexes so
74
+ they never trip `fastmcp` / `mcp-text-editor` / `n8n` (also fixed a latent
75
+ substring false-positive in the existing `n8n` pin).
76
+
77
+ - **AAK-MCP-SDK-CVE-2026-52869-001** (HIGH) — `mcp` (MCP Python SDK) >= 1.28.1: session injection + task cross-access + WS no-Origin (CVE-2026-52869/52870/59950).
78
+ - **AAK-MCP-9ROUTER-CVE-2026-46339-001** (CRITICAL) — `9router` >= 0.5.2: unauth MCP bridge → RCE (CVE-2026-46339/49353/62312).
79
+ - **AAK-MCP-N8NMCP-CVE-2026-54052-001** (CRITICAL) — `n8n-mcp` >= 2.57.4: multi-tenant backup isolation bypass (CVE-2026-54052/55608).
80
+ - **AAK-MCP-DBTMCP-CVE-2026-44968-001** (MEDIUM) — `dbt-mcp` >= 1.17.1: dbt-flag injection + tool-arg leakage (CVE-2026-44968/44970/44969).
81
+ - **AAK-MCP-APIFY-CVE-2026-46341-001** (MEDIUM) — `@apify/actors-mcp-server` >= 0.9.21: `startsWith()` allowlist bypass SSRF.
82
+ - **AAK-MCP-AGENTICFLOW-CVE-2026-58195-001** (HIGH) — `agentic-flow` >= 2.0.14: MCP params → `execSync()` command injection.
83
+ - **AAK-MCP-HEALTHOMICS-CVE-2026-15415-001** (MEDIUM) — `awslabs.aws-healthomics-mcp-server` >= 0.0.36: `workflow_files` path traversal.
84
+
85
+ CVE-2026-62208 (OpenClaw) added to the existing `AAK-MCP-OPENCLAW-CVE-2026-62195-001`
86
+ pin (already covers the affected range). Dispositioned: Frogman ×4 (PHP),
87
+ Claude Code Action (GitHub Action), AI Copilot (WordPress), ForgeCode (no fix
88
+ version), Langflow ×2 (no NVD data). Rule count 254 → **261**.
89
+
90
+ ### Added — 2026-07-13..15 MCP/agent CVE disclosure-wave pins (7 rules, closes 13 cve-response issues)
91
+
92
+ CVE-response for the 2026-07-13..15 disclosure wave (issues #429–#442). Eight
93
+ CVEs have a vendor fix + a pinnable PyPI/npm artifact and ship as version-pins in
94
+ `mcp_cve_pins_2026_07` (now 15 pins total); five are dispositioned in
95
+ `CHANGELOG.cves.md`. Package names, fix floors, and NVD CPE ranges (where
96
+ published) were verified before shipping.
97
+
98
+ - **AAK-MCP-HEALTHLAKE-CVE-2026-15643-001** (HIGH) — `awslabs.healthlake-mcp-server` >= 0.0.14: `next_token` pagination SSRF → AWS credential exfil.
99
+ - **AAK-MCP-PRAISONAI-CVE-2026-61427-001** (HIGH) — `praisonai` >= 4.6.78: MCP HTTP-stream unauthenticated by default.
100
+ - **AAK-MCP-APPIUM-CVE-2026-58500-001** (HIGH) — `appium-mcp` >= 1.85.10: locator-UI HTML/JS injection → `postMessage` tool exec.
101
+ - **AAK-MCP-PENPOT-CVE-2026-45805-001** (CRITICAL) — `@penpot/mcp` >= 2.15.0: ReplServer unauthenticated `/execute` → JS RCE.
102
+ - **AAK-MCP-OPENCLAW-CVE-2026-62195-001** (HIGH) — `openclaw` >= 2026.6.6 (NVD range 2026.5.20–<2026.6.6): MCP loopback authorization bypass.
103
+ - **AAK-MCP-REPOMIX-CVE-2026-49988-001** (MEDIUM) — `repomix` >= 1.14.1: MCP file-read bypasses the secret-lint boundary.
104
+ - **AAK-MCP-BETTERAUTH-CVE-2026-53512-001** (HIGH) — `better-auth` / `@better-auth/oauth-provider` >= 1.6.11: refresh-token grant skips `client_secret` (CVE-2026-53512) + auth-code replay (CVE-2026-53518).
105
+
106
+ Dispositioned (no pinnable artifact / vendor fix / supported ecosystem, documented
107
+ in `CHANGELOG.cves.md`): CVE-2026-61462 (mcp-gitlab — no NVD version data yet),
108
+ CVE-2026-15749/15750/15751 (mastergo-magic-mcp — GitHub-only, no vendor fix;
109
+ 15750 class-covered by `AAK-MCP-SSRF-001`), CVE-2026-15583 (Grafana MCP — Go
110
+ ecosystem). Rule count 247 → **254**.
111
+
112
+ ### Added — AAK-OAUTH-007 (RFC 8707 Resource Indicators) + ratified-spec reconciliation
113
+
114
+ - **AAK-OAUTH-007** (MEDIUM, MCP_CONFIG) — flags an OAuth 2.1 flow, or an MCP
115
+ client/server config advertising OAuth 2.1, that never sets the RFC 8707
116
+ `resource` parameter. Without Resource Indicators the issued token is not
117
+ audience-bound, so a token minted for one MCP server can be replayed at
118
+ another (confused-deputy / audience confusion). Cited to the **ratified** MCP
119
+ 2025-11-25 authorization spec (RFC 8707 §2 / RFC 9728 §7.4) — a requirement
120
+ today, not a 2026-07-28 change. Deterministic regex detection in
121
+ `oauth_misconfig` (fires when a token-acquisition flow lacks `resource`;
122
+ silent when it is present, including RFC 9728 protected-resource-metadata).
123
+ Rule count 246 → **247**.
124
+ - **MCP 2026-07-28 ratification reconciliation.** Re-verified every July rule's
125
+ cited SEP against primary sources (modelcontextprotocol PRs #2596/#2791, the
126
+ RC blog, the `2026-07-28-RC` milestone): `AAK-MCP-DEPRECATED-001..003`
127
+ (SEP-2577 + SEP-2596), `AAK-OAUTH-006` (SEP-2468), `AAK-MCP-STATELESS-001..004`
128
+ (SEP-2567/2575/1442/1686/2663) — all accurate, no corrections. The 2026-07-28
129
+ spec is still a **release candidate** (ratifies 2026-07-28), so the rules keep
130
+ their "release candidate" labelling rather than being relabelled "ratified"
131
+ prematurely. Attestation recorded in `CHANGELOG.cves.md`. Also softened the
132
+ ledger's leftover 48h-SLA header to best-effort (completing the retirement
133
+ started in the docs pass).
134
+
135
+ ### Changed — docs: single-source rule count + retire unbounded 48h CVE-SLA claim
136
+
137
+ - **Single source of truth for the rule count.** `scripts/sync_rule_count.py`
138
+ now also drives `docs/rules.md` (the per-category Summary table is
139
+ regenerated wholesale from the live registry between `<!-- BEGIN/END
140
+ rules-summary -->` markers) and the rule-count cells in `docs/comparison.md`
141
+ and `docs/comparison-gitlab-agentic-sast.md` (via `<!-- rule-count:total -->`
142
+ anchors). These docs had drifted to a stale **221** (and silently dropped the
143
+ 12th category, `MCP_SERVER_CARD`) while the registry was at 246. New
144
+ regression tests in `tests/test_rule_count_sync.py` fail CI if any of these
145
+ surfaces diverge from `len(RULES)`.
146
+ - **Retired the unbounded 48-hour CVE→rule SLA.** The public commitment is now
147
+ a best-effort statement ("triaged continuously, shipped as fast as we
148
+ responsibly can, no fixed deadline"), matching `ROADMAP_2026.md §2.3`. Updated
149
+ the `cve-watcher` workflow name/header/checklist and the launch/application
150
+ copy. The NVD watcher, the `cve-response` issue flow, the `CHANGELOG.cves.md`
151
+ ledger, and the release gate (which keys off the retained `sla-48h` label) are
152
+ unchanged. Separate, bounded 48h commitments — the SECURITY.md report
153
+ acknowledgment and the coordinated-disclosure repo-notify window — are kept.
154
+
10
155
  ### Added — 2026-07 MCP/agent CVE disclosure-wave pins (8 rules, closes 13 sla-48h issues)
11
156
 
12
157
  CVE-response for the 2026-07-08..12 disclosure backlog. New table-driven scanner
@@ -0,0 +1,43 @@
1
+ # AgentAuditKit task runner.
2
+ #
3
+ # The State of MCP report is a build artifact: `make report` regenerates
4
+ # results.json from the committed corpus manifest, deterministically and
5
+ # offline, so the numbers in research/state-of-mcp-2026/REPORT.md cannot drift
6
+ # from the code. `make corpus` is the single network step (refreshes the
7
+ # manifest from the MCP Registry); it is intentionally separate from `report`.
8
+
9
+ RESEARCH := research/state-of-mcp-2026
10
+ CORPUS := benchmarks/data
11
+ MANIFEST := $(RESEARCH)/corpus/registry-manifest.json
12
+ RESULTS := $(RESEARCH)/results.json
13
+
14
+ .PHONY: report corpus report-check test lint typecheck
15
+
16
+ ## report: regenerate results.json from the corpus + manifest (offline, deterministic)
17
+ report:
18
+ python $(RESEARCH)/run_report.py \
19
+ --corpus $(CORPUS) \
20
+ --registry-manifest $(MANIFEST) \
21
+ --out $(RESULTS)
22
+
23
+ ## corpus: refresh the MCP Registry corpus manifest (the one network step)
24
+ corpus:
25
+ python $(RESEARCH)/fetch_registry.py --target 700
26
+
27
+ ## report-check: fail if results.json is not byte-identical to a fresh run (drift guard)
28
+ report-check:
29
+ @python $(RESEARCH)/run_report.py --corpus $(CORPUS) --registry-manifest $(MANIFEST) --out /tmp/aak-report-check.json >/dev/null
30
+ @diff -q $(RESULTS) /tmp/aak-report-check.json >/dev/null && echo "report is up to date" \
31
+ || (echo "results.json is stale — run 'make report' and commit" && exit 1)
32
+
33
+ ## test: run the test suite
34
+ test:
35
+ python -m pytest -q
36
+
37
+ ## lint: ruff
38
+ lint:
39
+ ruff check .
40
+
41
+ ## typecheck: mypy the package
42
+ typecheck:
43
+ mypy agent_audit_kit
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agent-audit-kit
3
- Version: 0.3.49
3
+ Version: 0.3.52
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-246-blue.svg" alt="Rules: 246"></a>
45
+ <a href="#what-it-scans"><img src="https://img.shields.io/badge/rules-262-blue.svg" alt="Rules: 262"></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>
@@ -61,7 +61,7 @@ Security scanner for MCP-connected AI agent pipelines. Finds misconfigurations,
61
61
  1. **Runs fully offline and deterministically.** Your code, configs, and secrets never leave the machine; the default scan path makes zero network calls, and the same input always yields the same finding (no model in the loop). This is measured, not just claimed: [20/20 identical runs → one shared SHA-256 finding-set digest, 0% variance](benchmarks/determinism/RESULTS.md). Scanners that route findings through an LLM judge can't guarantee a byte-identical re-run — so CI diffs, audit re-runs, and regression baselines stay stable here. No account, no telemetry.
62
62
  2. **Produces auditor-ready compliance-evidence packs.** SARIF for the GitHub Security tab plus PDF evidence reports mapped to 13 frameworks (EU AI Act, SOC 2, ISO 27001/42001, HIPAA, NIST AI RMF, and regional regimes) — what you hand an auditor, not just a list of findings.
63
63
 
64
- - **<!-- rule-count:total -->246<!-- /rule-count --> rules** across 12 security categories, covering the 2026 CVE wave
64
+ - **<!-- rule-count:total -->262<!-- /rule-count --> rules** across 12 security categories, covering the 2026 CVE wave
65
65
  - Rule count is computed from the registry and verified in CI (`test_rule_count_is_canonical`).
66
66
  - **<!-- scanner-count:total -->84<!-- /scanner-count --> scanner modules** including AST-based Python taint analysis and regex pattern scanners for TypeScript/JavaScript and Rust
67
67
  - **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
@@ -70,6 +70,7 @@ Security scanner for MCP-connected AI agent pipelines. Finds misconfigurations,
70
70
  - **Supply chain**: deterministic rule bundle (`export-rules`), Sigstore-signed releases, CycloneDX + SPDX SBOM (`sbom`)
71
71
  - **MCP Security Index**: weekly public leaderboard at [sattyamjjain.github.io/agent-audit-kit](https://sattyamjjain.github.io/agent-audit-kit/) — per-server grade cards (A–F), 90-day [disclosure policy](docs/disclosure-policy.md)
72
72
  - **CVE coverage**: newly disclosed MCP CVEs are triaged and turned into rules as they land — surfaced automatically by the NVD watcher ([`cve-watcher.yml`](.github/workflows/cve-watcher.yml)) and logged in [CHANGELOG.cves.md](CHANGELOG.cves.md)
73
+ - **OAuth / spec coverage**: the **2026-07-28 final auth profile** as a one-command check — `agent-audit-kit scan . --profile mcp-2026-07-28` runs RFC 9207 `iss` validation (`AAK-OAUTH-006`), RFC 8707 resource indicators (`AAK-OAUTH-007`), and RFC 9728 Protected-Resource-Metadata discovery (`AAK-OAUTH-008`). We scanned 748 public MCP configs with it: **0 use RFC 9728 discovery; 100% of remote-auth configs hardcode a static credential** — see the dated [2026-07-28 readiness report](docs/reports/mcp-2026-07-28-readiness.md). The July 2026-07-28 deprecation/stateless pack stays labelled **release candidate** (the spec ratifies 2026-07-28); every cited SEP was re-verified in the [ratification reconciliation](CHANGELOG.cves.md)
73
74
  - **Zero cloud dependencies** — runs fully offline, zero network calls in the default scan path
74
75
 
75
76
  ### Why This Exists
@@ -100,7 +101,7 @@ jobs:
100
101
  runs-on: ubuntu-latest
101
102
  steps:
102
103
  - uses: actions/checkout@v4
103
- - uses: sattyamjjain/agent-audit-kit@v0.3.49
104
+ - uses: sattyamjjain/agent-audit-kit@v0.3.52
104
105
  with:
105
106
  fail-on: high
106
107
  ```
@@ -120,7 +121,7 @@ agent-audit-kit scan .
120
121
  # .pre-commit-config.yaml
121
122
  repos:
122
123
  - repo: https://github.com/sattyamjjain/agent-audit-kit
123
- rev: v0.3.49
124
+ rev: v0.3.52
124
125
  hooks:
125
126
  - id: agent-audit-kit
126
127
  ```
@@ -144,8 +145,8 @@ agent-audit-kit scan examples/vulnerable-configs/04-hook-exfiltration/
144
145
 
145
146
  | Category | Rules | What It Detects |
146
147
  |----------|:-----:|-----------------|
147
- | **MCP Configuration** | <!-- category-count:MCP_CONFIG -->59<!-- /category-count --> | Missing auth middleware (CVE-2026-33032 class), empty IP allowlists, wildcard CORS, path traversal in resource handlers, SSRF (CWE-918), OAuth 2.1 misconfig (PKCE/S256/DPoP), Tasks primitive leakage (SEP-1686), shell injection, MCPwn middleware-asymmetry, Azure MCP no-auth (CVE-2026-32211), MCP Inspector vendored fork (CVE-2026-23744), 2026-07-28 stateless-MCP migration (`Mcp-Session-Id` reliance, removed `tasks/list`, sticky-session deployment, un-cached client `tools/list`), deny-by-default attested admission (signed clearance / `/.well-known/mcp-clearance` / pinned trust root — arXiv:2605.24248), Anthropic MCP Tunnels gateway (SSRF defense disabled / `upstream.disable_ip_validation`, HTTPS upstream missing `upstream.tls.ca_file` trust anchor, tunnel token + TLS private keys hardcoded in CI / committed Kubernetes Secrets — research preview 2026-05-19), stdio launcher injection (`npx`/`node`/`bash`/`sh`/`python` with `-c`/`-e`/`--eval`, or non-pinned interpolated argv — CVE-2026-40933), tool-gate enforcement asymmetry (allowlist / read-only / non-destructive check applied in `tools/list` but not `tools/call` — CVE-2026-46519), unauthenticated MCP HTTP/SSE server on `0.0.0.0` / wildcard CORS (GitLab/Nocturne/AgenticMail no-auth class — CVE-2026-44895/44830/50287), plus the non-loopback no-auth **launch surface** — `mcp.json`/`claude_desktop_config.json`/`*.mcp.yaml` `command`/`args`, Docker `--host 0.0.0.0`/`-p 0.0.0.0:`, and MCP Inspector / FastMCP startup binding `0.0.0.0`/`::`/a routable IP with no token or `DANGEROUSLY_OMIT_AUTH` set (CWE-306; MCP Inspector exemplar CVE-2026-23744; mcp-pinot `0.0.0.0:8080` no-auth CVE-2026-49257; Windows-MCP wildcard-CORS no-auth CVE-2026-48989; ~12,520 exposed services per Censys), argv-rebuild-after-allowlist command-injection TOCTOU (a command/argv approved against an allow/deny list is re-split / re-joined / extended before `subprocess`/`os.exec*` / Node `child_process.spawn`/`execa` with no re-check — `AAK-MCP-ARGV-TOCTOU-001`, **CWE-77 + CWE-367 / CVE-2026-53822**), MCP server unauthenticated-by-default / fail-open auth (an auth function returning truthy on an empty/unset secret, a placeholder/empty secret literal — `""`/`changeme`/`os.environ.get(...,"")` — or a warning-only secret gate on a `0.0.0.0` bind — `AAK-MCP-NOAUTH-DEFAULT`, **CWE-306 + CWE-862 / CVE-2026-48814** (incomplete fix of CVE-2026-46701)), bearer-token → session-file path traversal (an untrusted token / `Authorization` header joined into a session file path used for an existence/read check with no separator-reject or resolve-and-contain guard — `AAK-MCP-AUTH-PATHTRAVERSAL-001`, **CWE-22 / CVE-2026-52830**, fast-mcp-telegram < 0.19.1), MCP tool-argument URL SSRF (an MCP tool handler passing a caller-supplied `url`/`endpoint`/`target` argument straight into an outbound `requests`/`httpx`/`urllib`/`aiohttp` fetch with no host/scheme allow-list — `ast` parameter→fetch taint for Python, regex fallback for TS/JS/Rust — `AAK-MCP-SSRF-001`, **CWE-918 / CVE-2026-14748**, AIAnytime Awesome-MCP-Server `mcp-wiki/wiki-summary`), Serena MCP toolkit unauthenticated-dashboard RCE (`serena-agent` < 1.5.2 — an unauthenticated Flask dashboard on a fixed port reachable via DNS rebinding writes the agent's persistent memory, chained with `execute_shell_command` `shell=True` to remote code execution — `AAK-MCP-SERENA-CVE-2026-49471-001`, **CWE-306 + CWE-352 / CVE-2026-49471**, HIGH 8.3), MCP 2026-07-28 deprecated features (the `roots` / `sampling` / `logging` capabilities annotation-deprecated under the RC's new 12-month deprecation policy — flagged across config + server source so authors migrate before removal — `AAK-MCP-DEPRECATED-001..003`, **SEP-2577 / SEP-2596**), OAuth `iss`-validation gap (an authorization-code client that handles the auth response but never validates the RFC 9207 `iss` parameter, the RC's actual new OAuth requirement — `AAK-OAUTH-006`, **RFC 9207 / SEP-2468**) |
148
- | **Supply Chain** | <!-- category-count:SUPPLY_CHAIN -->50<!-- /category-count --> | Vulnerable LangChain / langchain-text-splitters versions, named pin rules for `astro-mcp-server` / `chatgpt-mcp-server` / `docsgpt` / `gpt-researcher` / `litellm` / `mcp-calculate-server` / `semantic-kernel` / `@anthropic-ai/claude-code` / `apache-doris-mcp-server` / `excel-mcp-server`, OX MCP-STDIO command-injection (Python/TS/Java/Rust) — `AAK-MCP-STDIO-CMD-INJ-001..004` — Stainless-generator lineage, marketplace.json signatures / typosquat / mutable refs, unpinned packages, dangerous install scripts, untrusted-search-path executable override in skill/install flows (`.env`-sourced binary, workspace-prepended `PATH`, `shutil.which` over a tainted PATH, Homebrew env override — `AAK-SKILL-UNTRUSTED-EXEC-PATH`, **CWE-426 / CVE-2026-53819**), and the **2026-07 MCP/agent CVE disclosure wave** — verified PyPI/npm version-pins for `litellm` < 1.84.0 (MCP auth bypass + skills-archive traversal, **CVE-2026-59822/59820**), `cline` < 3.0.30 (Hub-dashboard WS origin bypass → RCE, **CVE-2026-59723**), `mcp-text-editor` ≤ 1.0.2 (path traversal, **CVE-2026-15138**), `n8n` < 2.27.4/2.28.1 (MCP tool credential-domain bypass, **CVE-2026-59207**), `ruflo` < 3.16.3 (unauth MCP bridge RCE, **CVE-2026-59726**, CVSS 10), `@arikusi/deepseek-mcp-server` < 1.8.0 (unbound session IDs + unauth HTTP transport, **CVE-2026-55604/55605**), `mcp-server-kubernetes` < 3.9.0 (kubectl `--server` argument injection, **CVE-2026-61459**, CVSS 9.8), and `astrbot` ≤ 4.25.2 (MCP-test-endpoint SSRF, **CVE-2026-15501**) |
148
+ | **MCP Configuration** | <!-- category-count:MCP_CONFIG -->61<!-- /category-count --> | Missing auth middleware (CVE-2026-33032 class), empty IP allowlists, wildcard CORS, path traversal in resource handlers, SSRF (CWE-918), OAuth 2.1 misconfig (PKCE/S256/DPoP), Tasks primitive leakage (SEP-1686), shell injection, MCPwn middleware-asymmetry, Azure MCP no-auth (CVE-2026-32211), MCP Inspector vendored fork (CVE-2026-23744), 2026-07-28 stateless-MCP migration (`Mcp-Session-Id` reliance, removed `tasks/list`, sticky-session deployment, un-cached client `tools/list`), deny-by-default attested admission (signed clearance / `/.well-known/mcp-clearance` / pinned trust root — arXiv:2605.24248), Anthropic MCP Tunnels gateway (SSRF defense disabled / `upstream.disable_ip_validation`, HTTPS upstream missing `upstream.tls.ca_file` trust anchor, tunnel token + TLS private keys hardcoded in CI / committed Kubernetes Secrets — research preview 2026-05-19), stdio launcher injection (`npx`/`node`/`bash`/`sh`/`python` with `-c`/`-e`/`--eval`, or non-pinned interpolated argv — CVE-2026-40933), tool-gate enforcement asymmetry (allowlist / read-only / non-destructive check applied in `tools/list` but not `tools/call` — CVE-2026-46519), unauthenticated MCP HTTP/SSE server on `0.0.0.0` / wildcard CORS (GitLab/Nocturne/AgenticMail no-auth class — CVE-2026-44895/44830/50287), plus the non-loopback no-auth **launch surface** — `mcp.json`/`claude_desktop_config.json`/`*.mcp.yaml` `command`/`args`, Docker `--host 0.0.0.0`/`-p 0.0.0.0:`, and MCP Inspector / FastMCP startup binding `0.0.0.0`/`::`/a routable IP with no token or `DANGEROUSLY_OMIT_AUTH` set (CWE-306; MCP Inspector exemplar CVE-2026-23744; mcp-pinot `0.0.0.0:8080` no-auth CVE-2026-49257; Windows-MCP wildcard-CORS no-auth CVE-2026-48989; ~12,520 exposed services per Censys), argv-rebuild-after-allowlist command-injection TOCTOU (a command/argv approved against an allow/deny list is re-split / re-joined / extended before `subprocess`/`os.exec*` / Node `child_process.spawn`/`execa` with no re-check — `AAK-MCP-ARGV-TOCTOU-001`, **CWE-77 + CWE-367 / CVE-2026-53822**), MCP server unauthenticated-by-default / fail-open auth (an auth function returning truthy on an empty/unset secret, a placeholder/empty secret literal — `""`/`changeme`/`os.environ.get(...,"")` — or a warning-only secret gate on a `0.0.0.0` bind — `AAK-MCP-NOAUTH-DEFAULT`, **CWE-306 + CWE-862 / CVE-2026-48814** (incomplete fix of CVE-2026-46701)), bearer-token → session-file path traversal (an untrusted token / `Authorization` header joined into a session file path used for an existence/read check with no separator-reject or resolve-and-contain guard — `AAK-MCP-AUTH-PATHTRAVERSAL-001`, **CWE-22 / CVE-2026-52830**, fast-mcp-telegram < 0.19.1), MCP tool-argument URL SSRF (an MCP tool handler passing a caller-supplied `url`/`endpoint`/`target` argument straight into an outbound `requests`/`httpx`/`urllib`/`aiohttp` fetch with no host/scheme allow-list — `ast` parameter→fetch taint for Python, regex fallback for TS/JS/Rust — `AAK-MCP-SSRF-001`, **CWE-918 / CVE-2026-14748**, AIAnytime Awesome-MCP-Server `mcp-wiki/wiki-summary`), Serena MCP toolkit unauthenticated-dashboard RCE (`serena-agent` < 1.5.2 — an unauthenticated Flask dashboard on a fixed port reachable via DNS rebinding writes the agent's persistent memory, chained with `execute_shell_command` `shell=True` to remote code execution — `AAK-MCP-SERENA-CVE-2026-49471-001`, **CWE-306 + CWE-352 / CVE-2026-49471**, HIGH 8.3), MCP 2026-07-28 deprecated features (the `roots` / `sampling` / `logging` capabilities annotation-deprecated under the RC's new 12-month deprecation policy — flagged across config + server source so authors migrate before removal — `AAK-MCP-DEPRECATED-001..003`, **SEP-2577 / SEP-2596**), OAuth `iss`-validation gap (an authorization-code client that handles the auth response but never validates the RFC 9207 `iss` parameter, the RC's actual new OAuth requirement — `AAK-OAUTH-006`, **RFC 9207 / SEP-2468**), RFC 8707 Resource-Indicator absence (an OAuth 2.1 flow / MCP client config that never sets the `resource` parameter, so issued tokens aren't audience-bound and a token minted for one MCP server can be replayed at another — the confused-deputy / audience-confusion class; mandatory in the **ratified** MCP 2025-11-25 auth spec, independent of the 2026-07-28 RC — `AAK-OAUTH-007`, **RFC 8707 / RFC 9728 §7.4**), RFC 9728 Protected-Resource-Metadata discovery gap (a remote MCP server config that embeds a static `Authorization`/`Bearer`/`auth` credential with no `/.well-known/oauth-protected-resource` discovery path, or server source enforcing bearer auth without serving PRM — the resource-discovery arm of the 2026-07-28 auth profile — `AAK-OAUTH-008`, **RFC 9728**) |
149
+ | **Supply Chain** | <!-- category-count:SUPPLY_CHAIN -->64<!-- /category-count --> | Vulnerable LangChain / langchain-text-splitters versions, named pin rules for `astro-mcp-server` / `chatgpt-mcp-server` / `docsgpt` / `gpt-researcher` / `litellm` / `mcp-calculate-server` / `semantic-kernel` / `@anthropic-ai/claude-code` / `apache-doris-mcp-server` / `excel-mcp-server`, OX MCP-STDIO command-injection (Python/TS/Java/Rust) — `AAK-MCP-STDIO-CMD-INJ-001..004` — Stainless-generator lineage, marketplace.json signatures / typosquat / mutable refs, unpinned packages, dangerous install scripts, untrusted-search-path executable override in skill/install flows (`.env`-sourced binary, workspace-prepended `PATH`, `shutil.which` over a tainted PATH, Homebrew env override — `AAK-SKILL-UNTRUSTED-EXEC-PATH`, **CWE-426 / CVE-2026-53819**), and the **2026-07 MCP/agent CVE disclosure wave** — verified PyPI/npm version-pins for `litellm` < 1.84.0 (MCP auth bypass + skills-archive traversal, **CVE-2026-59822/59820**), `cline` < 3.0.30 (Hub-dashboard WS origin bypass → RCE, **CVE-2026-59723**), `mcp-text-editor` ≤ 1.0.2 (path traversal, **CVE-2026-15138**), `n8n` < 2.27.4/2.28.1 (MCP tool credential-domain bypass, **CVE-2026-59207**), `ruflo` < 3.16.3 (unauth MCP bridge RCE, **CVE-2026-59726**, CVSS 10), `@arikusi/deepseek-mcp-server` < 1.8.0 (unbound session IDs + unauth HTTP transport, **CVE-2026-55604/55605**), `mcp-server-kubernetes` < 3.9.0 (kubectl `--server` argument injection, **CVE-2026-61459**, CVSS 9.8), and `astrbot` ≤ 4.25.2 (MCP-test-endpoint SSRF, **CVE-2026-15501**) |
149
150
  | **Tool Poisoning** | <!-- category-count:TOOL_POISONING -->27<!-- /category-count --> | Invisible Unicode / bidi, skill frontmatter injection, SKILL.md post-install commands, data-exfil primitives, skill name hijacking, cross-tool references, rug-pull (SHA-256 pinning), `@mcp.tool` unsafe-eval (CVE-2026-44717 generalization), OpenAPI smells (Hermes paper LAZY/BLOATED/TANGLED), Metis POMDP refusal-refeed + scoring-sink, SkillsVote lifecycle attribution, MCP Calculate Server pin, Kong Konnect MCP server < 1.0.0 indirect prompt injection → unintended Konnect/Admin API requests (`AAK-MCP-KONG-CVE-2026-13341-001`, **CVE-2026-13341**, HIGH 7.4). Indirect-prompt-injection detection (`AAK-POISON-001..006`) runs against tool descriptions **and** every per-parameter `inputSchema.properties.*.description` (recursive — nested objects, array items, `anyOf`/`allOf`/`oneOf`), so instruction text hidden in a single argument's docstring is caught |
150
151
  | **Secret Exposure** | <!-- category-count:SECRET_EXPOSURE -->18<!-- /category-count --> | Anthropic/OpenAI/AWS/GitHub/GitLab/GCP keys, Shannon-entropy detection, `.env` leaks, private-key files, hardcoded credential surface, token-leak via log sinks (CVE-2026-20205), `${VAR}`/process.env placeholder resolution on user-supplied MCP URLs → secret exfiltration (CVE-2026-32625) |
151
152
  | **Agent Config** | <!-- category-count:AGENT_CONFIG -->15<!-- /category-count --> | Routines permission escalation + schedule injection + audit-log gaps, AGENTS.md/CLAUDE.md/.cursorrules hijacking, hidden Unicode, encoded payloads, internal scanner-fail signal, Project Deal economic-drift detection |
@@ -157,7 +158,7 @@ agent-audit-kit scan examples/vulnerable-configs/04-hook-exfiltration/
157
158
  | **Trust Boundaries** | <!-- category-count:TRUST_BOUNDARY -->12<!-- /category-count --> | `enableAllProjectMcpServers`, API URL redirects, wildcard permissions, missing deny rules, missing allowlists, Claude Code folder-trust bypass (CVE-2026-40068) |
158
159
  | **MCP Server Card** | <!-- category-count:MCP_SERVER_CARD -->4<!-- /category-count --> | Static audit of SEP-1649 discovery cards (`/.well-known/mcp/server-card.json`): tool-description poisoning in `tools[].description` (`AAK-MCP-CARD-001`, reuses the AAK-POISON detectors), declared-transport vs advertised-capability mismatch — remote transport with `authentication.required: false`, or `stdio` advertising a remote endpoint (`AAK-MCP-CARD-002`), missing / placeholder signature / provenance (`AAK-MCP-CARD-003`), and over-broad capability / wildcard-scope claims (`AAK-MCP-CARD-004`) |
159
160
 
160
- **<!-- rule-count:total -->246<!-- /rule-count --> rules total.** Every finding includes severity, evidence, remediation, OWASP references, Adversa references, and CVE links where applicable.
161
+ **<!-- rule-count:total -->262<!-- /rule-count --> rules total.** Every finding includes severity, evidence, remediation, OWASP references, Adversa references, and CVE links where applicable.
161
162
 
162
163
  ### MCP Server Card scanning (SEP-1649)
163
164
 
@@ -353,13 +354,13 @@ cross-reference, not a head-to-head benchmark.
353
354
  | --- | --- | --- |
354
355
  | **ASI01** | Goal Hijack | 13 |
355
356
  | **ASI02** | Tool Misuse | 39 |
356
- | **ASI03** | Memory Poisoning | 57 |
357
- | **ASI04** | Identity & Privilege Abuse | 43 |
357
+ | **ASI03** | Memory Poisoning | 62 |
358
+ | **ASI04** | Identity & Privilege Abuse | 50 |
358
359
  | **ASI05** | Cascading Failures | 33 |
359
- | **ASI06** | Unauthorized Capability Acquisition | 33 |
360
+ | **ASI06** | Unauthorized Capability Acquisition | 35 |
360
361
  | **ASI07** | Plan Injection | 9 |
361
362
  | **ASI08** | Agent Communication Poisoning | 4 |
362
- | **ASI09** | Resource Abuse | 15 |
363
+ | **ASI09** | Resource Abuse | 17 |
363
364
  | **ASI10** | Supply-Chain | 20 |
364
365
  <!-- owasp-coverage:end -->
365
366
 
@@ -398,7 +399,7 @@ See [`docs/comparisons.md`](docs/comparisons.md) for a fully-sourced version. Ve
398
399
  | Feature | AgentAuditKit | Microsoft AGT | Snyk Agent Scan | Semgrep Multimodal |
399
400
  |---------|:---:|:---:|:---:|:---:|
400
401
  | Scope | Static scanner + compliance PDFs | Runtime governance | Static + runtime | Multimodal SAST |
401
- | Detection rules (static) | **<!-- rule-count:total -->246<!-- /rule-count -->** | Runtime policies, not rules | ~30 | LLM-assisted |
402
+ | Detection rules (static) | **<!-- rule-count:total -->262<!-- /rule-count -->** | Runtime policies, not rules | ~30 | LLM-assisted |
402
403
  | OWASP Agentic 10/10 | **Yes** | Yes | Partial | Partial |
403
404
  | OWASP MCP 10/10 | **Yes** | No (runtime-focused) | No | No |
404
405
  | Auditor-ready PDF compliance | **12 frameworks** | No | 0 | 0 |
@@ -447,41 +448,33 @@ Public leaderboard of MCP servers we scan weekly:
447
448
  - **90-day coordinated disclosure** before anything lands on a public card — see [`docs/disclosure-policy.md`](docs/disclosure-policy.md)
448
449
  - Maintainer-fix earlier gets published the day the fix lands, with credit
449
450
 
450
- ## State of MCP Security 2026
451
-
452
- A reproducible data report: we scanned **664 distinct public MCP server configs**
453
- and found **1 in 4 ships a critical-severity flaw** the **median config scores
454
- a B, the top 10% an A**, and **24.2% declare a remote server with no auth**. It
455
- exists because of AAK's two defensible wedges the scan is **offline and
456
- deterministic** (no code or configs leave the machine; same input, same result),
457
- and it yields **auditor-ready compliance evidence**, which is what makes a report
458
- reproducible and an audit defensible. Full distribution, score calibration,
459
- OWASP-MCP-Top-10 hit rate, top-10 findings, external anchors (MCP Registry 9,652
460
- servers; Knostic 1,862 exposed / 119-of-119 unauthenticated; the 2,614-server
461
- 82%-path-traversal survey), and honest limitations are in
462
- **[`research/state-of-mcp-2026/PREVALENCE.md`](research/state-of-mcp-2026/PREVALENCE.md)**
463
- (raw aggregate: [`results.json`](research/state-of-mcp-2026/results.json)).
464
-
465
- Mapped to the OWASP MCP Top 10, **99.4% of configs trip MCP07 (authorization /
466
- excessive permissions)** — see which AAK rules cover each slot in the
467
- [public coverage leaderboard](docs/coverage/owasp-mcp-top10.md). Scan your own in
468
- 30s, fully offline:
469
-
470
- ```bash
471
- pip install agent-audit-kit && agent-audit-kit scan .
472
- ```
451
+ ## Research: State of MCP Server Authentication 2026
452
+
453
+ A reproducible data report over **1,374 distinct public MCP server configs** — 664
454
+ GitHub-crawled plus **710 official MCP Registry latest-version servers**, deduped by
455
+ content and scanned offline and deterministically (scan date 2026-07-19). Headline:
456
+ **35.1% (482/1,374) declare a remote server with no authentication, 0% (0/1,374) use
457
+ RFC 9728 Protected-Resource-Metadata discovery, and 100% (318/318) of inline-auth
458
+ configs hardcode a static credential.** 36.0% carry a critical-severity finding; the
459
+ median config scores a **B**, and **99.7% trip OWASP MCP07 (authorization)**. Full
460
+ method, per-metric findings (each with n + denominator), the 2026-07-28 / 2027-07-28
461
+ migration exposure with explicit coverage notes, disclosure posture, and limitations:
462
+ **[`research/state-of-mcp-2026/REPORT.md`](research/state-of-mcp-2026/REPORT.md)**
463
+ raw aggregate [`results.json`](research/state-of-mcp-2026/results.json), corpus
464
+ provenance [`registry-manifest.json`](research/state-of-mcp-2026/corpus/registry-manifest.json).
473
465
 
474
466
  The harness contains no scanner — it reuses `agent_audit_kit.engine.run_scan` +
475
- `scoring.compute_score`. Regenerate the report:
467
+ `scoring.compute_score`, so every number is reproducible offline and cannot drift
468
+ from the code (`make report` regenerates `results.json` from the committed
469
+ manifest; the corpus refresh is the one network step, `fetch_registry.py`):
476
470
 
477
471
  ```bash
478
- export GITHUB_TOKEN=$(gh auth token)
479
- python benchmarks/crawler.py --limit 500 --output benchmarks/results.json
480
- python research/state-of-mcp-2026/run_report.py --corpus benchmarks/data \
481
- --out research/state-of-mcp-2026/results.json
472
+ make report # regenerate the report numbers, offline + deterministic
482
473
  ```
483
474
 
484
- Launch-ready copy for the report is in [`docs/DISTRIBUTION-CHECKLIST.md`](docs/DISTRIBUTION-CHECKLIST.md).
475
+ Scan your own in 30s, fully offline: `pip install agent-audit-kit && agent-audit-kit scan .`
476
+ See which AAK rules cover each OWASP MCP slot in the
477
+ [public coverage leaderboard](docs/coverage/owasp-mcp-top10.md).
485
478
 
486
479
  ## CVE Response
487
480