agent-audit-kit 0.3.0__tar.gz → 0.3.2__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 (298) hide show
  1. agent_audit_kit-0.3.2/.github/workflows/docker-nightly.yml +74 -0
  2. agent_audit_kit-0.3.2/.github/workflows/mcp-security-index.yml +87 -0
  3. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/.github/workflows/release.yml +54 -13
  4. agent_audit_kit-0.3.2/.github/workflows/sync-rule-count.yml +60 -0
  5. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/.gitignore +1 -0
  6. agent_audit_kit-0.3.2/.pre-commit-config.yaml +26 -0
  7. agent_audit_kit-0.3.2/CHANGELOG.cves.md +59 -0
  8. agent_audit_kit-0.3.2/CHANGELOG.md +198 -0
  9. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/PKG-INFO +98 -39
  10. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/README.md +96 -38
  11. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/action.yml +11 -1
  12. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/agent_audit_kit/__init__.py +2 -1
  13. agent_audit_kit-0.3.2/agent_audit_kit/advisories.py +180 -0
  14. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/agent_audit_kit/bundle.py +5 -1
  15. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/agent_audit_kit/cli.py +165 -13
  16. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/agent_audit_kit/engine.py +8 -0
  17. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/agent_audit_kit/fix.py +110 -0
  18. agent_audit_kit-0.3.2/agent_audit_kit/llm_scan.py +242 -0
  19. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/agent_audit_kit/models.py +22 -0
  20. agent_audit_kit-0.3.2/agent_audit_kit/output/aicm.py +66 -0
  21. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/agent_audit_kit/output/pdf_report.py +88 -1
  22. agent_audit_kit-0.3.2/agent_audit_kit/output/pr_summary.py +120 -0
  23. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/agent_audit_kit/output/sarif.py +108 -23
  24. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/agent_audit_kit/rules/builtin.py +605 -0
  25. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/agent_audit_kit/scanners/_helpers.py +2 -0
  26. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/agent_audit_kit/scanners/agent_config.py +43 -0
  27. agent_audit_kit-0.3.2/agent_audit_kit/scanners/healthcare_ai.py +201 -0
  28. agent_audit_kit-0.3.2/agent_audit_kit/scanners/india_pii.py +187 -0
  29. agent_audit_kit-0.3.2/agent_audit_kit/scanners/log_injection.py +155 -0
  30. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/agent_audit_kit/scanners/marketplace_manifest.py +81 -0
  31. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/agent_audit_kit/scanners/mcp_config.py +77 -0
  32. agent_audit_kit-0.3.2/agent_audit_kit/scanners/mcp_middleware.py +304 -0
  33. agent_audit_kit-0.3.2/agent_audit_kit/scanners/neo4j_cve.py +109 -0
  34. agent_audit_kit-0.3.2/agent_audit_kit/scanners/oauth_surface.py +250 -0
  35. agent_audit_kit-0.3.2/agent_audit_kit/scanners/state_privacy.py +122 -0
  36. agent_audit_kit-0.3.2/agent_audit_kit/scanners/stdio_injection.py +382 -0
  37. agent_audit_kit-0.3.2/agent_audit_kit/watch.py +132 -0
  38. agent_audit_kit-0.3.2/benchmarks/index_builder.py +514 -0
  39. agent_audit_kit-0.3.2/benchmarks/sources.py +259 -0
  40. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/docs/blog/state-of-mcp-security-template.md +3 -2
  41. agent_audit_kit-0.3.2/docs/comparisons.md +121 -0
  42. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/docs/disclosure-policy.md +3 -3
  43. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/docs/launch/press.md +1 -1
  44. agent_audit_kit-0.3.2/docs/owasp-agentic-coverage.md +18 -0
  45. agent_audit_kit-0.3.2/docs/rule-schema.md +58 -0
  46. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/entrypoint.sh +60 -0
  47. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/mkdocs.yml +2 -2
  48. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/pyproject.toml +2 -1
  49. agent_audit_kit-0.3.2/rules.json +3281 -0
  50. agent_audit_kit-0.3.2/scripts/gen_owasp_coverage.py +89 -0
  51. agent_audit_kit-0.3.2/scripts/sync_rule_count.py +161 -0
  52. agent_audit_kit-0.3.2/scripts/watch_csa_mcp_baseline.py +181 -0
  53. agent_audit_kit-0.3.2/tests/fixtures/cves/cve-2026-30615/patched/py_argv_allowlist.py +20 -0
  54. agent_audit_kit-0.3.2/tests/fixtures/cves/cve-2026-30615/vulnerable/py_os_system_stdin.py +10 -0
  55. agent_audit_kit-0.3.2/tests/fixtures/cves/cve-2026-30615/vulnerable/py_subprocess_shell.py +21 -0
  56. agent_audit_kit-0.3.2/tests/fixtures/cves/cve-2026-30615/vulnerable/ts_execa_shell.ts +13 -0
  57. agent_audit_kit-0.3.2/tests/fixtures/cves/cve-2026-33032/patched/router.go +12 -0
  58. agent_audit_kit-0.3.2/tests/fixtures/cves/cve-2026-33032/vulnerable/router.go +16 -0
  59. agent_audit_kit-0.3.2/tests/fixtures/cves/cve-2026-33032/vulnerable/server.py +22 -0
  60. agent_audit_kit-0.3.2/tests/fixtures/cves/cve-2026-33032/vulnerable/server.ts +11 -0
  61. agent_audit_kit-0.3.2/tests/fixtures/cves/cve-2026-40933/vulnerable/flow.json +13 -0
  62. agent_audit_kit-0.3.2/tests/fixtures/cves/healthcare_ai/safe_skill.md +18 -0
  63. agent_audit_kit-0.3.2/tests/fixtures/cves/healthcare_ai/vulnerable_skill.md +20 -0
  64. agent_audit_kit-0.3.2/tests/fixtures/cves/india_pii/safe.txt +9 -0
  65. agent_audit_kit-0.3.2/tests/fixtures/cves/india_pii/vulnerable.txt +8 -0
  66. agent_audit_kit-0.3.2/tests/fixtures/cves/state_privacy/safe_privacy.md +20 -0
  67. agent_audit_kit-0.3.2/tests/fixtures/cves/state_privacy/vulnerable_privacy.md +8 -0
  68. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/fixtures/cves/tasks/safe.py +2 -2
  69. agent_audit_kit-0.3.2/tests/fixtures/incidents/vercel-2026-04-19/app.yaml +9 -0
  70. agent_audit_kit-0.3.2/tests/test_aicm.py +123 -0
  71. agent_audit_kit-0.3.2/tests/test_compliance_v2.py +82 -0
  72. agent_audit_kit-0.3.2/tests/test_csa_baseline_watcher.py +82 -0
  73. agent_audit_kit-0.3.2/tests/test_cve_fix_and_watch_and_advisories.py +220 -0
  74. agent_audit_kit-0.3.2/tests/test_flowise.py +89 -0
  75. agent_audit_kit-0.3.2/tests/test_healthcare_ai_and_state_privacy.py +149 -0
  76. agent_audit_kit-0.3.2/tests/test_index_builder.py +180 -0
  77. agent_audit_kit-0.3.2/tests/test_india_pii.py +58 -0
  78. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/test_llm_scan.py +86 -0
  79. agent_audit_kit-0.3.2/tests/test_marketplace_sources.py +114 -0
  80. agent_audit_kit-0.3.2/tests/test_mcpwn.py +108 -0
  81. agent_audit_kit-0.3.2/tests/test_oauth_surface.py +126 -0
  82. agent_audit_kit-0.3.2/tests/test_owasp_agentic_coverage.py +70 -0
  83. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/test_phase5.py +1 -1
  84. agent_audit_kit-0.3.2/tests/test_pr_summary.py +96 -0
  85. agent_audit_kit-0.3.2/tests/test_rule_count_sync.py +107 -0
  86. agent_audit_kit-0.3.2/tests/test_sarif_fingerprints.py +131 -0
  87. agent_audit_kit-0.3.2/tests/test_sarif_github_upload.py +143 -0
  88. agent_audit_kit-0.3.2/tests/test_stdio_injection.py +62 -0
  89. agent_audit_kit-0.3.2/tests/test_v0_3_1_cve_rules.py +248 -0
  90. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/vscode-extension/package.json +1 -1
  91. agent_audit_kit-0.3.0/.github/workflows/docs.yml +0 -42
  92. agent_audit_kit-0.3.0/.github/workflows/mcp-security-index.yml +0 -46
  93. agent_audit_kit-0.3.0/CHANGELOG.cves.md +0 -22
  94. agent_audit_kit-0.3.0/CHANGELOG.md +0 -28
  95. agent_audit_kit-0.3.0/agent_audit_kit/llm_scan.py +0 -92
  96. agent_audit_kit-0.3.0/benchmarks/index_builder.py +0 -285
  97. agent_audit_kit-0.3.0/docs/comparisons.md +0 -74
  98. agent_audit_kit-0.3.0/tests/test_index_builder.py +0 -69
  99. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/.agent-audit-kit.yml +0 -0
  100. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/.claude/auto-memory/config.json +0 -0
  101. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/.github/FUNDING.yml +0 -0
  102. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  103. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  104. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  105. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/.github/dependabot.yml +0 -0
  106. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/.github/workflows/ci.yml +0 -0
  107. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/.github/workflows/codeql.yml +0 -0
  108. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/.github/workflows/cve-watcher.yml +0 -0
  109. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/.github/workflows/scorecard.yml +0 -0
  110. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/.pre-commit-hooks.yaml +0 -0
  111. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/CLAUDE.md +0 -0
  112. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/CLAUDE_PROMPT.md +0 -0
  113. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/CODE_OF_CONDUCT.md +0 -0
  114. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/CONTRIBUTING.md +0 -0
  115. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/DEEP_ANALYSIS.md +0 -0
  116. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/Dockerfile +0 -0
  117. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/LICENSE +0 -0
  118. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/ROADMAP_2026.md +0 -0
  119. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/SECURITY.md +0 -0
  120. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/agent_audit_kit/data/vuln_db.json +0 -0
  121. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/agent_audit_kit/diff.py +0 -0
  122. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/agent_audit_kit/discovery.py +0 -0
  123. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/agent_audit_kit/output/__init__.py +0 -0
  124. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/agent_audit_kit/output/compliance.py +0 -0
  125. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/agent_audit_kit/output/console.py +0 -0
  126. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/agent_audit_kit/output/json_report.py +0 -0
  127. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/agent_audit_kit/output/owasp_report.py +0 -0
  128. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/agent_audit_kit/output/sbom.py +0 -0
  129. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/agent_audit_kit/pinning.py +0 -0
  130. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/agent_audit_kit/proxy/__init__.py +0 -0
  131. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/agent_audit_kit/proxy/interceptor.py +0 -0
  132. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/agent_audit_kit/rules/__init__.py +0 -0
  133. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/agent_audit_kit/scanners/__init__.py +0 -0
  134. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/agent_audit_kit/scanners/a2a_protocol.py +0 -0
  135. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/agent_audit_kit/scanners/hook_injection.py +0 -0
  136. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/agent_audit_kit/scanners/hook_rce.py +0 -0
  137. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/agent_audit_kit/scanners/langchain_vuln.py +0 -0
  138. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/agent_audit_kit/scanners/legal_compliance.py +0 -0
  139. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/agent_audit_kit/scanners/mcp_auth_patterns.py +0 -0
  140. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/agent_audit_kit/scanners/mcp_tasks.py +0 -0
  141. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/agent_audit_kit/scanners/oauth_misconfig.py +0 -0
  142. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/agent_audit_kit/scanners/pin_drift.py +0 -0
  143. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/agent_audit_kit/scanners/routines.py +0 -0
  144. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/agent_audit_kit/scanners/rust_pattern_scan.py +0 -0
  145. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/agent_audit_kit/scanners/rust_scan.py +0 -0
  146. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/agent_audit_kit/scanners/secret_exposure.py +0 -0
  147. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/agent_audit_kit/scanners/skill_poisoning.py +0 -0
  148. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/agent_audit_kit/scanners/ssrf_patterns.py +0 -0
  149. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/agent_audit_kit/scanners/supply_chain.py +0 -0
  150. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/agent_audit_kit/scanners/taint_analysis.py +0 -0
  151. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/agent_audit_kit/scanners/tool_poisoning.py +0 -0
  152. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/agent_audit_kit/scanners/transport_security.py +0 -0
  153. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/agent_audit_kit/scanners/trust_boundary.py +0 -0
  154. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/agent_audit_kit/scanners/typescript_pattern_scan.py +0 -0
  155. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/agent_audit_kit/scanners/typescript_scan.py +0 -0
  156. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/agent_audit_kit/scoring.py +0 -0
  157. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/agent_audit_kit/verification.py +0 -0
  158. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/agent_audit_kit/vuln_db.py +0 -0
  159. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/benchmarks/README.md +0 -0
  160. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/benchmarks/crawler.py +0 -0
  161. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/benchmarks/run_benchmark.sh +0 -0
  162. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/benchmarks/sample_configs/sample_01_clean.json +0 -0
  163. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/benchmarks/sample_configs/sample_02_secrets.json +0 -0
  164. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/benchmarks/sample_configs/sample_03_no_auth.json +0 -0
  165. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/benchmarks/sample_configs/sample_04_shell_injection.json +0 -0
  166. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/benchmarks/sample_configs/sample_05_mixed.json +0 -0
  167. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/ci/gitlab/agent-audit-kit.gitlab-ci.yml +0 -0
  168. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/docs/CNAME +0 -0
  169. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/docs/ci-cd.md +0 -0
  170. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/docs/comparison.md +0 -0
  171. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/docs/getting-started.md +0 -0
  172. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/docs/gitlab-ci.md +0 -0
  173. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/docs/index.md +0 -0
  174. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/docs/launch/CHECKLIST.md +0 -0
  175. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/docs/launch/hn.md +0 -0
  176. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/docs/launch/reddit.md +0 -0
  177. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/docs/launch/release-notes-v0.3.0.md +0 -0
  178. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/docs/launch/x-thread.md +0 -0
  179. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/docs/metrics.md +0 -0
  180. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/docs/owasp-mapping.md +0 -0
  181. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/docs/research-log.md +0 -0
  182. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/docs/rules.md +0 -0
  183. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/examples/README.md +0 -0
  184. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/examples/case-studies/damn-vulnerable-mcp/README.md +0 -0
  185. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/examples/case-studies/damn-vulnerable-mcp/configs/dvmcp-inspired.mcp.json +0 -0
  186. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/examples/case-studies/damn-vulnerable-mcp/configs/dvmcp-settings.json +0 -0
  187. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/examples/case-studies/damn-vulnerable-mcp/scan-results.json +0 -0
  188. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/examples/case-studies/damn-vulnerable-mcp/scan-results.sarif +0 -0
  189. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/examples/ci-integration/README.md +0 -0
  190. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/examples/ci-integration/docker-one-liner.sh +0 -0
  191. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/examples/ci-integration/github-actions-sarif.yml +0 -0
  192. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/examples/ci-integration/gitlab-ci-scan.yml +0 -0
  193. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/examples/ci-integration/pre-commit-config.yaml +0 -0
  194. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/examples/run-all-examples.sh +0 -0
  195. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/examples/vulnerable-configs/01-no-auth-remote/.mcp.json +0 -0
  196. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/examples/vulnerable-configs/01-no-auth-remote/expected-findings.json +0 -0
  197. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/examples/vulnerable-configs/02-shell-injection/.mcp.json +0 -0
  198. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/examples/vulnerable-configs/02-shell-injection/expected-findings.json +0 -0
  199. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/examples/vulnerable-configs/03-hardcoded-secrets/.gitignore +0 -0
  200. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/examples/vulnerable-configs/03-hardcoded-secrets/.mcp.json +0 -0
  201. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/examples/vulnerable-configs/03-hardcoded-secrets/expected-findings.json +0 -0
  202. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/examples/vulnerable-configs/04-hook-exfiltration/.claude/settings.json +0 -0
  203. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/examples/vulnerable-configs/04-hook-exfiltration/expected-findings.json +0 -0
  204. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/examples/vulnerable-configs/05-trust-boundary-violations/.claude/settings.json +0 -0
  205. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/examples/vulnerable-configs/05-trust-boundary-violations/.mcp.json +0 -0
  206. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/examples/vulnerable-configs/05-trust-boundary-violations/expected-findings.json +0 -0
  207. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/examples/vulnerable-configs/06-tool-poisoning/.mcp.json +0 -0
  208. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/examples/vulnerable-configs/06-tool-poisoning/expected-findings.json +0 -0
  209. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/examples/vulnerable-configs/07-tainted-tool-function/expected-findings.json +0 -0
  210. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/examples/vulnerable-configs/07-tainted-tool-function/server.py +0 -0
  211. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/examples/vulnerable-configs/08-transport-insecurity/.mcp.json +0 -0
  212. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/examples/vulnerable-configs/08-transport-insecurity/expected-findings.json +0 -0
  213. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/examples/vulnerable-configs/09-a2a-insecure-agent/agent-card.json +0 -0
  214. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/examples/vulnerable-configs/09-a2a-insecure-agent/expected-findings.json +0 -0
  215. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/examples/vulnerable-configs/10-supply-chain-risks/.mcp.json +0 -0
  216. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/examples/vulnerable-configs/10-supply-chain-risks/expected-findings.json +0 -0
  217. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/examples/vulnerable-configs/10-supply-chain-risks/package.json +0 -0
  218. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/examples/vulnerable-configs/11-legal-compliance/expected-findings.json +0 -0
  219. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/examples/vulnerable-configs/11-legal-compliance/package.json +0 -0
  220. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/examples/vulnerable-configs/11-legal-compliance/subproject/package.json +0 -0
  221. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/examples/vulnerable-configs/README.md +0 -0
  222. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/launch/MARKET-RESEARCH-2026-04-12.md +0 -0
  223. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/launch/awesome-list-prs/awesome-opensource-security.md +0 -0
  224. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/launch/awesome-list-prs/awesome-security.md +0 -0
  225. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/launch/blog-50-mcp-servers.md +0 -0
  226. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/launch/demo.cast +0 -0
  227. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/launch/owasp-outreach.md +0 -0
  228. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/requirements-lock.txt +0 -0
  229. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/scripts/cve_watcher.py +0 -0
  230. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/scripts/generate_lockfile.py +0 -0
  231. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/conftest.py +0 -0
  232. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/fixtures/clean_mcp.json +0 -0
  233. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/fixtures/clean_settings.json +0 -0
  234. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/fixtures/cves/a2a_2026/vulnerable_card.json +0 -0
  235. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/fixtures/cves/hook_rce/safe_settings.json +0 -0
  236. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/fixtures/cves/hook_rce/vulnerable_settings.json +0 -0
  237. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/fixtures/cves/langchain/safe_requirements.txt +0 -0
  238. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/fixtures/cves/langchain/vulnerable_prompt.py +0 -0
  239. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/fixtures/cves/langchain/vulnerable_requirements.txt +0 -0
  240. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/fixtures/cves/marketplace/safe.json +0 -0
  241. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/fixtures/cves/marketplace/vulnerable.json +0 -0
  242. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/fixtures/cves/mcp_auth/safe_server.py +0 -0
  243. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/fixtures/cves/mcp_auth/vulnerable_server.py +0 -0
  244. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/fixtures/cves/oauth/safe.py +0 -0
  245. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/fixtures/cves/oauth/vulnerable.py +0 -0
  246. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/fixtures/cves/routines/safe.json +0 -0
  247. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/fixtures/cves/routines/vulnerable.json +0 -0
  248. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/fixtures/cves/skills/safe.md +0 -0
  249. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/fixtures/cves/skills/vulnerable.md +0 -0
  250. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/fixtures/cves/ssrf/safe.py +0 -0
  251. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/fixtures/cves/ssrf/vulnerable.py +0 -0
  252. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/fixtures/cves/tasks/vulnerable.py +0 -0
  253. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/fixtures/env_with_secrets +0 -0
  254. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/fixtures/package_with_risks.json +0 -0
  255. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/fixtures/vulnerable_hooks.json +0 -0
  256. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/fixtures/vulnerable_mcp.json +0 -0
  257. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/fixtures/vulnerable_settings.json +0 -0
  258. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/test_a2a_2026.py +0 -0
  259. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/test_a2a_protocol.py +0 -0
  260. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/test_action.py +0 -0
  261. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/test_agent_config.py +0 -0
  262. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/test_cli.py +0 -0
  263. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/test_compliance_output.py +0 -0
  264. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/test_cves_2026.py +0 -0
  265. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/test_diff.py +0 -0
  266. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/test_discovery.py +0 -0
  267. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/test_engine.py +0 -0
  268. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/test_examples.py +0 -0
  269. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/test_fix.py +0 -0
  270. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/test_hook_injection.py +0 -0
  271. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/test_legal_compliance.py +0 -0
  272. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/test_llm_scan_mod.py +0 -0
  273. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/test_marketplace_manifest.py +0 -0
  274. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/test_mcp_config.py +0 -0
  275. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/test_owasp_report.py +0 -0
  276. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/test_owasp_report_output.py +0 -0
  277. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/test_phase3.py +0 -0
  278. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/test_pin_drift.py +0 -0
  279. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/test_pinning.py +0 -0
  280. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/test_pinning_mod.py +0 -0
  281. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/test_proxy.py +0 -0
  282. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/test_sarif_output.py +0 -0
  283. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/test_scoring.py +0 -0
  284. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/test_secret_exposure.py +0 -0
  285. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/test_skill_poisoning.py +0 -0
  286. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/test_supply_chain.py +0 -0
  287. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/test_taint_analysis.py +0 -0
  288. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/test_tool_poisoning.py +0 -0
  289. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/test_transport_security.py +0 -0
  290. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/test_trust_boundary.py +0 -0
  291. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/test_verification.py +0 -0
  292. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/test_verification_mod.py +0 -0
  293. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/tests/test_vuln_db.py +0 -0
  294. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/vscode-extension/.vscodeignore +0 -0
  295. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/vscode-extension/CLAUDE.md +0 -0
  296. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/vscode-extension/README.md +0 -0
  297. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/vscode-extension/src/extension.ts +0 -0
  298. {agent_audit_kit-0.3.0 → agent_audit_kit-0.3.2}/vscode-extension/tsconfig.json +0 -0
@@ -0,0 +1,74 @@
1
+ name: Docker nightly rebuild
2
+
3
+ # Closes C13 — scheduled rebuild so the :latest and :nightly tags pick up
4
+ # base-image security patches without waiting for a release tag.
5
+
6
+ on:
7
+ schedule:
8
+ - cron: "23 3 * * *" # 03:23 UTC daily (off-peak; random minute per fleet-hygiene)
9
+ workflow_dispatch: {}
10
+
11
+ permissions:
12
+ contents: read
13
+ packages: write
14
+ id-token: write
15
+ attestations: write
16
+
17
+ jobs:
18
+ rebuild:
19
+ runs-on: ubuntu-latest
20
+ steps:
21
+ - uses: actions/checkout@v4
22
+
23
+ - name: Set up Docker Buildx
24
+ uses: docker/setup-buildx-action@v3
25
+
26
+ - name: Login to GHCR
27
+ uses: docker/login-action@v3
28
+ with:
29
+ registry: ghcr.io
30
+ username: ${{ github.actor }}
31
+ password: ${{ secrets.GITHUB_TOKEN }}
32
+
33
+ - name: Compute tag set
34
+ id: tags
35
+ run: |
36
+ date_tag=$(date -u +%Y%m%d)
37
+ echo "date_tag=${date_tag}" >> "$GITHUB_OUTPUT"
38
+
39
+ - name: Build + push (latest + nightly + date tag)
40
+ id: push
41
+ uses: docker/build-push-action@v5
42
+ with:
43
+ context: .
44
+ push: true
45
+ pull: true # force re-pull of base image to catch upstream patches
46
+ no-cache: true # avoid cached base-image layers
47
+ tags: |
48
+ ghcr.io/${{ github.repository_owner }}/agent-audit-kit:latest
49
+ ghcr.io/${{ github.repository_owner }}/agent-audit-kit:nightly
50
+ ghcr.io/${{ github.repository_owner }}/agent-audit-kit:nightly-${{ steps.tags.outputs.date_tag }}
51
+ labels: |
52
+ org.opencontainers.image.title=AgentAuditKit
53
+ org.opencontainers.image.description=Security scanner for MCP-connected AI agent pipelines
54
+ org.opencontainers.image.source=https://github.com/${{ github.repository_owner }}/agent-audit-kit
55
+ org.opencontainers.image.licenses=MIT
56
+ org.opencontainers.image.revision=${{ github.sha }}
57
+ cache-from: type=gha
58
+ cache-to: type=gha,mode=max
59
+
60
+ - name: Trivy scan (fail if new CRITICAL/HIGH in base image)
61
+ uses: aquasecurity/trivy-action@master
62
+ continue-on-error: true
63
+ with:
64
+ image-ref: ghcr.io/${{ github.repository_owner }}/agent-audit-kit:nightly
65
+ format: sarif
66
+ output: trivy-nightly.sarif
67
+ severity: CRITICAL,HIGH
68
+
69
+ - name: Upload Trivy SARIF to Security tab
70
+ if: always()
71
+ uses: github/codeql-action/upload-sarif@v3
72
+ with:
73
+ sarif_file: trivy-nightly.sarif
74
+ category: trivy-nightly
@@ -0,0 +1,87 @@
1
+ name: MCP Security Index — weekly snapshot
2
+
3
+ # Closes B4 / #25: MkDocs docs live at gh-pages/docs/, MCP Security
4
+ # Index at gh-pages/. Replaces the broken .github/workflows/docs.yml
5
+ # (stale deploy-pages SHA) with a single deploy pipeline.
6
+
7
+ on:
8
+ schedule:
9
+ - cron: "11 7 * * 1" # Mondays, 07:11 UTC
10
+ push:
11
+ branches: [main]
12
+ paths:
13
+ - "docs/**"
14
+ - "mkdocs.yml"
15
+ - ".github/workflows/mcp-security-index.yml"
16
+ workflow_dispatch: {}
17
+
18
+ permissions:
19
+ contents: write
20
+
21
+ jobs:
22
+ snapshot:
23
+ runs-on: ubuntu-latest
24
+ steps:
25
+ - uses: actions/checkout@v4
26
+ with:
27
+ fetch-depth: 0
28
+
29
+ - name: Set up Python
30
+ uses: actions/setup-python@v5
31
+ with:
32
+ python-version: "3.11"
33
+
34
+ - name: Install agent-audit-kit + MkDocs
35
+ run: |
36
+ pip install -e .
37
+ pip install mkdocs mkdocs-material
38
+
39
+ # ---- MCP Security Index (only on schedule / manual dispatch) ----
40
+ - name: Crawl public MCP servers
41
+ if: github.event_name != 'push'
42
+ env:
43
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
44
+ run: |
45
+ mkdir -p benchmarks/data
46
+ python benchmarks/crawler.py --limit 500 --output benchmarks/results.json
47
+
48
+ - name: Build MCP Security Index site
49
+ if: github.event_name != 'push'
50
+ run: python benchmarks/index_builder.py --input benchmarks/results.json --site-dir benchmarks/site --clean
51
+
52
+ # ---- MkDocs ----
53
+ - name: Build MkDocs
54
+ run: mkdocs build -d docs_build
55
+
56
+ # ---- Assemble gh-pages payload: index/ at root, docs at /docs/ ----
57
+ - name: Fetch prior gh-pages state (so we preserve the index on docs-only pushes)
58
+ run: |
59
+ git fetch origin gh-pages:gh-pages-remote || echo "no existing gh-pages branch"
60
+ mkdir -p pages_staging
61
+ if git show-ref --verify --quiet refs/heads/gh-pages-remote; then
62
+ git --work-tree=pages_staging checkout gh-pages-remote -- . || true
63
+ fi
64
+
65
+ - name: Stage payload
66
+ run: |
67
+ # docs always rebuilt from latest main
68
+ rm -rf pages_staging/docs
69
+ mv docs_build pages_staging/docs
70
+ # index only refreshed on schedule / dispatch
71
+ if [ -d benchmarks/site ]; then
72
+ cp -r benchmarks/site/. pages_staging/
73
+ fi
74
+ # .nojekyll so GitHub Pages serves the raw HTML
75
+ touch pages_staging/.nojekyll
76
+
77
+ - name: Publish to gh-pages
78
+ run: |
79
+ cd pages_staging
80
+ git init -q
81
+ git config user.name 'mcp-security-index'
82
+ git config user.email 'mcp-security-index@users.noreply.github.com'
83
+ git checkout -b gh-pages
84
+ git add .
85
+ git commit -q -m "snapshot: $(date -u +%Y-%m-%dT%H:%M:%SZ)"
86
+ git remote add origin "https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}.git"
87
+ git push --force origin gh-pages
@@ -12,10 +12,36 @@ permissions:
12
12
  attestations: write
13
13
 
14
14
  jobs:
15
+ # --------------------------------------------------------------------------
16
+ # 0. Gate: refuse to release while any sla-48h CVE-response issue is open.
17
+ # Implements CLAUDE_PROMPT.md §5(1) — "blocks release until the issue
18
+ # is closed". (C14)
19
+ # --------------------------------------------------------------------------
20
+ cve-response-gate:
21
+ name: CVE-response gate
22
+ runs-on: ubuntu-latest
23
+ permissions:
24
+ issues: read
25
+ contents: read
26
+ steps:
27
+ - name: Block release if open cve-response issues exist
28
+ env:
29
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
30
+ run: |
31
+ set -euo pipefail
32
+ count=$(gh issue list --repo "$GITHUB_REPOSITORY" --label sla-48h --state open --json number --jq length)
33
+ 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
36
+ exit 1
37
+ fi
38
+ echo "cve-response gate: clean — 0 open sla-48h issues."
39
+
15
40
  # --------------------------------------------------------------------------
16
41
  # 1. Publish to PyPI using trusted publishing (OIDC)
17
42
  # --------------------------------------------------------------------------
18
43
  pypi:
44
+ needs: cve-response-gate
19
45
  name: Publish to PyPI
20
46
  runs-on: ubuntu-latest
21
47
  environment:
@@ -24,10 +50,10 @@ jobs:
24
50
  permissions:
25
51
  id-token: write
26
52
  steps:
27
- - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
53
+ - uses: actions/checkout@v4
28
54
 
29
55
  - name: Set up Python
30
- uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1
56
+ uses: actions/setup-python@v5
31
57
  with:
32
58
  python-version: '3.11'
33
59
 
@@ -45,6 +71,7 @@ jobs:
45
71
  # --------------------------------------------------------------------------
46
72
  docker:
47
73
  name: Push Docker image to GHCR
74
+ needs: cve-response-gate
48
75
  runs-on: ubuntu-latest
49
76
  permissions:
50
77
  contents: read
@@ -52,13 +79,13 @@ jobs:
52
79
  id-token: write
53
80
  attestations: write
54
81
  steps:
55
- - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
82
+ - uses: actions/checkout@v4
56
83
 
57
84
  - name: Set up Docker Buildx
58
- uses: docker/setup-buildx-action@f95db51fddba0c2d1ec667646a06c2ce06100226 # v3.0.0
85
+ uses: docker/setup-buildx-action@v3
59
86
 
60
87
  - name: Log in to GHCR
61
- uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3.0.0
88
+ uses: docker/login-action@v3
62
89
  with:
63
90
  registry: ghcr.io
64
91
  username: ${{ github.actor }}
@@ -69,14 +96,14 @@ jobs:
69
96
  run: echo "version=${GITHUB_REF_NAME#v}" >> "$GITHUB_OUTPUT"
70
97
 
71
98
  - name: Build image for scanning
72
- uses: docker/build-push-action@0565240e2d4ab88bba5387d719585280857ece09 # v5.0.0
99
+ uses: docker/build-push-action@v5
73
100
  with:
74
101
  context: .
75
102
  load: true
76
103
  tags: agent-audit-kit:scan
77
104
 
78
105
  - name: Scan Docker image with Trivy
79
- uses: aquasecurity/trivy-action@57a97c7e7821a5776cebc9bb87c984fa69cba8f1 # v0.35.0
106
+ uses: aquasecurity/trivy-action@master
80
107
  with:
81
108
  image-ref: agent-audit-kit:scan
82
109
  format: sarif
@@ -85,7 +112,7 @@ jobs:
85
112
 
86
113
  - name: Build and push
87
114
  id: push
88
- uses: docker/build-push-action@0565240e2d4ab88bba5387d719585280857ece09 # v5.0.0
115
+ uses: docker/build-push-action@v5
89
116
  with:
90
117
  context: .
91
118
  push: true
@@ -102,7 +129,7 @@ jobs:
102
129
  cache-to: type=gha,mode=max
103
130
 
104
131
  - name: Generate SLSA provenance attestation
105
- uses: actions/attest-build-provenance@1c608d11d69870c2092266b3f9a6f3abbf17002c # v1.4.3
132
+ uses: actions/attest-build-provenance@v2
106
133
  with:
107
134
  subject-name: ghcr.io/sattyamjjain/agent-audit-kit
108
135
  subject-digest: ${{ steps.push.outputs.digest }}
@@ -113,15 +140,16 @@ jobs:
113
140
  # --------------------------------------------------------------------------
114
141
  bundle-and-sign:
115
142
  name: Rule bundle + SBOM (Sigstore)
143
+ needs: cve-response-gate
116
144
  runs-on: ubuntu-latest
117
145
  permissions:
118
146
  id-token: write
119
147
  contents: read
120
148
  steps:
121
- - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
149
+ - uses: actions/checkout@v4
122
150
 
123
151
  - name: Set up Python
124
- uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1
152
+ uses: actions/setup-python@v5
125
153
  with:
126
154
  python-version: '3.11'
127
155
 
@@ -146,6 +174,14 @@ jobs:
146
174
  rules.json
147
175
  sbom.cdx.json
148
176
  sbom.spdx.json
177
+ # Keep sigs in the workflow; we attach them ourselves in github-release.
178
+ release-signing-artifacts: false
179
+ upload-signing-artifacts: true
180
+
181
+ - name: Verify sigstore outputs landed
182
+ run: |
183
+ ls -la ./*.sigstore* || true
184
+ ls -la ./rules.json ./sbom.cdx.json ./sbom.spdx.json
149
185
 
150
186
  - name: Upload signed artifacts
151
187
  uses: actions/upload-artifact@v4
@@ -157,6 +193,9 @@ jobs:
157
193
  sbom.cdx.json
158
194
  sbom.spdx.json
159
195
  *.sigstore
196
+ *.sigstore.json
197
+ *.sig
198
+ if-no-files-found: warn
160
199
 
161
200
  # --------------------------------------------------------------------------
162
201
  # 4. Create GitHub Release with auto-generated notes + signed bundle
@@ -168,7 +207,7 @@ jobs:
168
207
  permissions:
169
208
  contents: write
170
209
  steps:
171
- - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
210
+ - uses: actions/checkout@v4
172
211
 
173
212
  - name: Download signed artifacts
174
213
  uses: actions/download-artifact@v4
@@ -177,7 +216,7 @@ jobs:
177
216
  path: signed
178
217
 
179
218
  - name: Create release
180
- uses: softprops/action-gh-release@de2c0eb89ae2a093876385947365aca7b0e5f844 # v0.1.15
219
+ uses: softprops/action-gh-release@v2
181
220
  with:
182
221
  generate_release_notes: true
183
222
  files: |
@@ -186,6 +225,8 @@ jobs:
186
225
  signed/sbom.cdx.json
187
226
  signed/sbom.spdx.json
188
227
  signed/*.sigstore
228
+ signed/*.sigstore.json
229
+ signed/*.sig
189
230
  body: |
190
231
  ## Installation
191
232
 
@@ -0,0 +1,60 @@
1
+ name: Sync rule count
2
+
3
+ # Keeps README badge + action.yml description + __init__.RULE_COUNT in
4
+ # lockstep with the rule bundle. Runs on every push to main that touches
5
+ # rules.json or the rule source, then commits the bumped files back if
6
+ # anything drifted.
7
+
8
+ on:
9
+ push:
10
+ branches: [main]
11
+ paths:
12
+ - rules.json
13
+ - agent_audit_kit/rules/**
14
+ - agent_audit_kit/bundle.py
15
+ - scripts/sync_rule_count.py
16
+ workflow_dispatch: {}
17
+
18
+ permissions:
19
+ contents: write
20
+
21
+ jobs:
22
+ sync:
23
+ runs-on: ubuntu-latest
24
+ if: github.actor != 'github-actions[bot]'
25
+ steps:
26
+ - uses: actions/checkout@v4
27
+ with:
28
+ fetch-depth: 0
29
+ token: ${{ secrets.GITHUB_TOKEN }}
30
+
31
+ - name: Set up Python
32
+ uses: actions/setup-python@v5
33
+ with:
34
+ python-version: "3.11"
35
+
36
+ - name: Install agent-audit-kit
37
+ run: pip install -e .
38
+
39
+ - name: Regenerate bundle + sync surfaces
40
+ id: sync
41
+ run: python scripts/sync_rule_count.py --regenerate
42
+
43
+ - name: Check for drift
44
+ id: diff
45
+ run: |
46
+ if git diff --quiet; then
47
+ echo "changed=false" >> "$GITHUB_OUTPUT"
48
+ else
49
+ echo "changed=true" >> "$GITHUB_OUTPUT"
50
+ git diff --stat
51
+ fi
52
+
53
+ - name: Commit
54
+ if: steps.diff.outputs.changed == 'true'
55
+ run: |
56
+ git config user.name 'agent-audit-kit-bot'
57
+ git config user.email 'agent-audit-kit-bot@users.noreply.github.com'
58
+ git add rules.json README.md action.yml agent_audit_kit/__init__.py
59
+ git commit -m "chore(rule-count): auto-sync after rules.json change"
60
+ git push
@@ -44,3 +44,4 @@ Thumbs.db
44
44
  # Benchmark data (downloaded configs)
45
45
  benchmarks/data/
46
46
  benchmarks/results.json
47
+ benchmarks/site/
@@ -0,0 +1,26 @@
1
+ # Pre-commit hooks run against this repo.
2
+ # Install once:
3
+ # pip install pre-commit && pre-commit install
4
+ #
5
+ # To skip (e.g. emergency commits): `git commit --no-verify`.
6
+ repos:
7
+ # ---------------------------------------------------------------------
8
+ # Local: block rule-count drift at commit time.
9
+ # ---------------------------------------------------------------------
10
+ - repo: local
11
+ hooks:
12
+ - id: aak-sync-rule-count
13
+ name: AAK — rule count in lockstep with rules.json
14
+ entry: python scripts/sync_rule_count.py --check
15
+ language: system
16
+ pass_filenames: false
17
+ files: "^(rules\\.json|README\\.md|action\\.yml|agent_audit_kit/rules/|agent_audit_kit/__init__\\.py$)"
18
+
19
+ # ---------------------------------------------------------------------
20
+ # Upstream lint / format.
21
+ # ---------------------------------------------------------------------
22
+ - repo: https://github.com/astral-sh/ruff-pre-commit
23
+ rev: v0.8.4
24
+ hooks:
25
+ - id: ruff
26
+ args: [--fix]
@@ -0,0 +1,59 @@
1
+ # AAK Response SLA — CVE-to-Rule Ledger
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.
5
+
6
+ Format: one line per CVE, `CVE-YYYY-NNNNN` → `AAK-XXX-NNN` with the
7
+ 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.
10
+
11
+ ## Shipped in v0.3.2 (2026-04-20)
12
+
13
+ | CVE / Incident | Advisory | AAK rule(s) | Shipped | Latency |
14
+ |---|---|---|---|---|
15
+ | CVE-2026-33032 (MCPwn, KEV) | [NVD](https://nvd.nist.gov/vuln/detail/CVE-2026-33032) — nginx-ui, CVSS 9.8 | **AAK-MCPWN-001** (primary) · AAK-MCP-011/012/020 (secondary, retained) | 2026-04-20 | targeted follow-up 4d after PoC |
16
+ | CVE-2026-40933 | [GHSA-c9gw-hvqq-f33r](https://github.com/advisories/GHSA-c9gw-hvqq-f33r) — Flowise MCP adapter, CVSS 10.0 | AAK-FLOWISE-001 (primary) · AAK-STDIO-001 (architectural class) | 2026-04-20 | <48h |
17
+ | VERCEL-2026-04-19 (incident) | [Vercel bulletin](https://vercel.com/kb/bulletin/vercel-april-2026-security-incident) | AAK-OAUTH-SCOPE-001, AAK-OAUTH-3P-001 | 2026-04-20 | <24h |
18
+ | MCPWN-2026-04-16 (incident) | [Rapid7 ETR](https://www.rapid7.com/blog/post/etr-cve-2026-33032-nginx-ui-missing-mcp-authentication/) | AAK-MCPWN-001 | 2026-04-20 | 4d (targeted) |
19
+
20
+ ## Shipped in v0.3.1 (2026-04-19)
21
+
22
+ | CVE | Advisory | AAK rule(s) | Shipped | Latency |
23
+ |---|---|---|---|---|
24
+ | CVE-2026-30615 | [NVD](https://nvd.nist.gov/vuln/detail/CVE-2026-30615) (Windsurf, CVSS 8.0) | AAK-STDIO-001, AAK-WINDSURF-001 | 2026-04-19 | <48h |
25
+ | CVE-2026-35402 | [NVD](https://nvd.nist.gov/vuln/detail/CVE-2026-35402) (mcp-neo4j-cypher, CVSS 2.3) | AAK-NEO4J-001 | 2026-04-19 | <48h |
26
+ | CVE-2026-35603 | [NVD](https://nvd.nist.gov/vuln/detail/CVE-2026-35603) (Claude Code Windows, CVSS 5.4) | AAK-CLAUDE-WIN-001 | 2026-04-19 | <48h |
27
+ | CVE-2026-6494 | [NVD](https://nvd.nist.gov/vuln/detail/CVE-2026-6494) (AAP MCP log injection, CVSS 5.3) | AAK-LOGINJ-001 | 2026-04-19 | <48h |
28
+
29
+ ### Ox Security architectural class (Apr 16 2026 disclosure)
30
+
31
+ AAK-STDIO-001 closes this whole family with a single AST-based
32
+ detection in `scanners/stdio_injection.py`:
33
+
34
+ | CVE | Product |
35
+ |---|---|
36
+ | CVE-2025-65720 | GPT Researcher |
37
+ | CVE-2026-26015 | DocsGPT |
38
+ | CVE-2026-30615 | Windsurf |
39
+ | CVE-2026-30617 | Langchain-Chatchat |
40
+ | CVE-2026-30618 | Fay Framework |
41
+ | CVE-2026-30623 | LiteLLM |
42
+ | CVE-2026-30624 | Agent Zero |
43
+ | CVE-2026-30625 | Upsonic |
44
+ | CVE-2026-33224 | Bisheng / Jaaz |
45
+
46
+ Source: <https://www.ox.security/blog/the-mother-of-all-ai-supply-chains-critical-systemic-vulnerability-at-the-core-of-the-mcp/>
47
+
48
+ ## Shipped in v0.3.0
49
+
50
+ | CVE | Advisory | AAK rule(s) | Shipped | Latency |
51
+ |---|---|---|---|---|
52
+ | CVE-2025-59536 | [NVD](https://nvd.nist.gov/vuln/detail/CVE-2025-59536) | AAK-HOOK-RCE-001, AAK-HOOK-RCE-002, AAK-HOOK-RCE-003 | 2026-04-18 | retroactive |
53
+ | CVE-2026-33032 | [NVD](https://nvd.nist.gov/vuln/detail/CVE-2026-33032) | AAK-MCP-011, AAK-MCP-012, AAK-MCP-020 | 2026-04-18 | retroactive |
54
+ | CVE-2026-34070 | [NVD](https://nvd.nist.gov/vuln/detail/CVE-2026-34070) | AAK-LANGCHAIN-001, AAK-LANGCHAIN-002 | 2026-04-18 | retroactive |
55
+ | CVE-2025-68664 | [NVD](https://nvd.nist.gov/vuln/detail/CVE-2025-68664) | AAK-LANGCHAIN-003 | 2026-04-18 | retroactive |
56
+
57
+ ## Open (48h SLA ticking)
58
+
59
+ _none — file response-tracking issues get posted here when the SLA fires._