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.
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/.github/workflows/cve-watcher.yml +13 -7
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/.github/workflows/release.yml +7 -6
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/CHANGELOG.cves.md +102 -9
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/CHANGELOG.md +145 -0
- agent_audit_kit-0.3.52/Makefile +43 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/PKG-INFO +35 -42
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/README.md +34 -41
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/action.yml +1 -1
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/__init__.py +2 -2
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/cli.py +21 -6
- agent_audit_kit-0.3.52/agent_audit_kit/presets/mcp-2026-07-28.yaml +25 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/rules/builtin.py +405 -2
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/mcp_cve_pins_2026_07.py +72 -5
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/oauth_misconfig.py +100 -4
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/ci-cd.md +2 -2
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/comparison-gitlab-agentic-sast.md +1 -1
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/comparison.md +1 -1
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/coverage/owasp-agentic-top10.md +4 -4
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/coverage/owasp-mcp-top10.md +4 -4
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/getting-started.md +2 -2
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/launch/CHECKLIST.md +1 -1
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/launch/hn.md +2 -2
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/launch/reddit.md +3 -3
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/launch/x-thread.md +2 -2
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/owasp-agentic-coverage.md +4 -4
- agent_audit_kit-0.3.52/docs/presets/mcp-2026-07-28.md +37 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/presets/mcp-ox-2026-04.md +1 -1
- agent_audit_kit-0.3.52/docs/reports/mcp-2026-07-28-readiness.md +116 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/rules.md +12 -7
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/public/owasp-agentic-coverage.json +193 -7
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/pyproject.toml +1 -1
- agent_audit_kit-0.3.52/research/state-of-mcp-2026/.gitignore +1 -0
- agent_audit_kit-0.3.52/research/state-of-mcp-2026/REPORT.md +199 -0
- agent_audit_kit-0.3.52/research/state-of-mcp-2026/blackhat-arsenal-abstract.md +53 -0
- agent_audit_kit-0.3.52/research/state-of-mcp-2026/blackhat-briefings-abstract.md +81 -0
- agent_audit_kit-0.3.52/research/state-of-mcp-2026/corpus/registry-manifest.json +14208 -0
- agent_audit_kit-0.3.52/research/state-of-mcp-2026/fetch_registry.py +189 -0
- agent_audit_kit-0.3.52/research/state-of-mcp-2026/results.json +238 -0
- agent_audit_kit-0.3.52/research/state-of-mcp-2026/run_report.py +347 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/rules.json +443 -1
- agent_audit_kit-0.3.52/scripts/mcp_2026_07_28_readiness.py +107 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/scripts/sync_rule_count.py +115 -2
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/site/coverage/index.html +2 -2
- agent_audit_kit-0.3.52/tests/test_mcp_cve_pins_2026_07.py +284 -0
- agent_audit_kit-0.3.52/tests/test_oauth_resource_indicators.py +192 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_phase5.py +1 -1
- agent_audit_kit-0.3.52/tests/test_preset_mcp_2026_07_28.py +70 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_rule_count_sync.py +77 -10
- agent_audit_kit-0.3.52/tests/test_state_of_mcp_report.py +101 -0
- agent_audit_kit-0.3.49/docs/blog/state-of-mcp-security-template.md +0 -63
- agent_audit_kit-0.3.49/docs/launch/github-verified-creator-application.md +0 -92
- agent_audit_kit-0.3.49/docs/launch/owasp-reference-tool-submission.md +0 -66
- agent_audit_kit-0.3.49/docs/launch/release-notes-v0.3.0.md +0 -80
- agent_audit_kit-0.3.49/docs/plans/2026-04-21-v0.3.3-design.md +0 -108
- agent_audit_kit-0.3.49/docs/spec/sarif-runtime-context.md +0 -73
- agent_audit_kit-0.3.49/research/state-of-mcp-2026/REPORT.md +0 -36
- agent_audit_kit-0.3.49/research/state-of-mcp-2026/results.json +0 -166
- agent_audit_kit-0.3.49/research/state-of-mcp-2026/run_report.py +0 -218
- agent_audit_kit-0.3.49/tests/test_mcp_cve_pins_2026_07.py +0 -112
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/.agent-audit-kit.yml +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/.claude/auto-memory/config.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/.editorconfig +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/.github/FUNDING.yml +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/.github/dependabot.yml +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/.github/workflows/badge-ox-coverage.yml +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/.github/workflows/ci.yml +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/.github/workflows/codeql.yml +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/.github/workflows/coverage-page.yml +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/.github/workflows/docker-nightly.yml +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/.github/workflows/mcp-security-index.yml +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/.github/workflows/scorecard.yml +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/.github/workflows/self-scan.yml +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/.github/workflows/sync-repo-metadata.yml +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/.github/workflows/sync-rule-count.yml +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/.gitignore +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/.pre-commit-config.yaml +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/.pre-commit-hooks.yaml +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/CLAUDE.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/CLAUDE_PROMPT.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/CODE_OF_CONDUCT.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/CONTRIBUTING.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/DEEP_ANALYSIS.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/Dockerfile +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/LICENSE +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/ROADMAP_2026.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/SECURITY.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/advisories.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/autofix/__init__.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/autofix/langgraph_toolnode.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/bundle.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/checks/__init__.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/checks/economic_drift.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/checks/openclaw.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/cli_modules/__init__.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/cli_modules/rule_lint.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/corpus/__init__.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/corpus/manifest.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/coverage.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/data/aivss-v08-defaults.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/data/fhi_universal_suffixes.txt +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/data/ipi_wild_payloads_2026_04.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/data/ox-cve-manifest.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/data/prisma-airs-aak-map.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/data/prisma-airs-catalog.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/data/toxic_flow_pairs.yml +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/data/vuln_db.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/diff.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/discovery.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/engine.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/feeds/__init__.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/fix.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/ide/__init__.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/ide/lsp_diag.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/integrations/__init__.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/integrations/notify.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/llm_scan.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/models.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/output/__init__.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/output/aicm.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/output/compliance.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/output/console.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/output/json_report.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/output/owasp_report.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/output/pdf_report.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/output/pr_summary.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/output/sarif.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/output/sbom.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/parity/__init__.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/pinning.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/presets/__init__.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/presets/mcp-ox-2026-04.yaml +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/proxy/__init__.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/proxy/interceptor.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/remediation/__init__.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/remediation/engine.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/rules/__init__.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/sanitizers/__init__.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/sanitizers/crewai.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/sanitizers/deepseek.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/sarif/__init__.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/sarif/diff.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/__init__.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/_helpers.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/a2a_protocol.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/agent_config.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/agent_harness_shared_state.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/argv_toctou.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/crewai_rce_chain.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/deepseek_v4_tool_injection.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/dns_rebind.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/docsgpt_transport_flip.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/eu_ai_act_art15_locale.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/gha_hardening.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/gpt_researcher_transport_flip.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/healthcare_ai.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/hook_injection.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/hook_rce.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/india_pii.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/ipi_wild_corpus.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/langchain_prompt_loader.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/langchain_vuln.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/langgraph_toolnode.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/legal_compliance.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/llm_sql_rce.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/log_injection.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/log_token_leak.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/marketplace_manifest.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/mcp_atlassian.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/mcp_auth_pathtraversal.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/mcp_auth_patterns.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/mcp_config.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/mcp_deprecated_features.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/mcp_env_placeholder_exfil.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/mcp_fhi.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/mcp_http_noauth_server.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/mcp_inspector_cve.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/mcp_marketplace_fetch.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/mcp_middleware.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/mcp_noauth_default.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/mcp_sampling_capability.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/mcp_sdk_hardening.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/mcp_server_auth.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/mcp_server_card.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/mcp_ssrf_toolarg.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/mcp_stateless_migration.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/mcp_stdio_launcher.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/mcp_stdio_params.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/mcp_tasks.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/mcp_tool_unsafe_eval.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/mcp_toolgate_asymmetry.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/mcp_tunnel.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/metis_pomdp.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/neo4j_cve.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/oauth_surface.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/openapi_smells.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/openclaw_privesc.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/pin_drift.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/project_deal_drift.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/prtitle_ipi.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/routines.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/rust_pattern_scan.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/rust_scan.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/sandbox_self_disable.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/secret_exposure.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/shared_resource_authz.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/skill_lifecycle_attribution.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/skill_poisoning.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/skill_untrusted_exec_path.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/social_agent_hijack.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/splunk_mcp_config.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/ssrf_patterns.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/ssrf_redirect.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/ssrf_toctou.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/stainless_lineage.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/state_privacy.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/stdio_injection.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/supply_chain.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/taint_analysis.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/tool_poisoning.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/toxic_flow.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/transport_limits.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/transport_security.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/trust_boundary.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/typescript_pattern_scan.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scanners/typescript_scan.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scoring/__init__.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scoring/aivss.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/scoring/aivss_schema.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/translators/__init__.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/translators/pipelock.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/translators/prisma_airs.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/verification.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/vuln_db.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/agent_audit_kit/watch.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/benchmarks/README.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/benchmarks/crawler.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/benchmarks/determinism/RESULTS.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/benchmarks/determinism/run.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/benchmarks/index_builder.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/benchmarks/results-2026-06-13.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/benchmarks/run_benchmark.sh +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/benchmarks/sample_configs/sample_01_clean.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/benchmarks/sample_configs/sample_02_secrets.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/benchmarks/sample_configs/sample_03_no_auth.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/benchmarks/sample_configs/sample_04_shell_injection.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/benchmarks/sample_configs/sample_05_mixed.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/benchmarks/sources.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/ci/gitlab/agent-audit-kit.gitlab-ci.yml +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/CNAME +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/DISTRIBUTION-CHECKLIST.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/RELEASING.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/azure-pipelines.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/circleci.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/comparisons.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/disclosure-policy.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/gitlab-ci.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/index.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/launch/press.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/metrics.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/notes/adjudicator-pattern.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/owasp-mapping.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/research-log.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/roadmap/ox-mcp-2026-05-01-batch.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/rule-schema.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/rules/AAK-AZURE-MCP-001.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/rules/AAK-AZURE-MCP-NOAUTH-001.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/rules/AAK-LANGCHAIN-SSRF-REDIR-001.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/rules/AAK-LMDEPLOY-VL-SSRF-001.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/rules/AAK-MCP-AUTH-PATHTRAVERSAL-001.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/rules/AAK-MCP-MARKETPLACE-CONFIG-FETCH-001.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/rules/AAK-MCP-STDIO-CMD-INJ-001.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/rules/AAK-MCP-STDIO-CMD-INJ-002.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/rules/AAK-MCP-STDIO-CMD-INJ-003.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/rules/AAK-MCP-STDIO-CMD-INJ-004.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/rules/AAK-SPLUNK-MCP-TOKEN-LEAK-001.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/rules/AAK-SSRF-TOCTOU-001.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/rules/AAK-TOXICFLOW-001.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/docs/rules/index.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/editors/zed/README.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/editors/zed/extension.toml +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/entrypoint.sh +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/README.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/case-studies/damn-vulnerable-mcp/README.md +0 -0
- {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
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/case-studies/damn-vulnerable-mcp/configs/dvmcp-settings.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/case-studies/damn-vulnerable-mcp/scan-results.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/case-studies/damn-vulnerable-mcp/scan-results.sarif +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/ci-integration/README.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/ci-integration/docker-one-liner.sh +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/ci-integration/github-actions-sarif.yml +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/ci-integration/gitlab-ci-scan.yml +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/ci-integration/pre-commit-config.yaml +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/run-all-examples.sh +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/vulnerable-configs/01-no-auth-remote/.mcp.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/vulnerable-configs/01-no-auth-remote/expected-findings.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/vulnerable-configs/02-shell-injection/.mcp.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/vulnerable-configs/02-shell-injection/expected-findings.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/vulnerable-configs/03-hardcoded-secrets/.gitignore +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/vulnerable-configs/03-hardcoded-secrets/.mcp.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/vulnerable-configs/03-hardcoded-secrets/expected-findings.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/vulnerable-configs/04-hook-exfiltration/.claude/settings.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/vulnerable-configs/04-hook-exfiltration/expected-findings.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/vulnerable-configs/05-trust-boundary-violations/.claude/settings.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/vulnerable-configs/05-trust-boundary-violations/.mcp.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/vulnerable-configs/05-trust-boundary-violations/expected-findings.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/vulnerable-configs/06-tool-poisoning/.mcp.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/vulnerable-configs/06-tool-poisoning/expected-findings.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/vulnerable-configs/07-tainted-tool-function/expected-findings.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/vulnerable-configs/07-tainted-tool-function/server.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/vulnerable-configs/08-transport-insecurity/.mcp.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/vulnerable-configs/08-transport-insecurity/expected-findings.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/vulnerable-configs/09-a2a-insecure-agent/agent-card.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/vulnerable-configs/09-a2a-insecure-agent/expected-findings.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/vulnerable-configs/10-supply-chain-risks/.mcp.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/vulnerable-configs/10-supply-chain-risks/expected-findings.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/vulnerable-configs/10-supply-chain-risks/package.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/vulnerable-configs/11-legal-compliance/expected-findings.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/vulnerable-configs/11-legal-compliance/package.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/vulnerable-configs/11-legal-compliance/subproject/package.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/examples/vulnerable-configs/README.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/launch/MARKET-RESEARCH-2026-04-12.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/launch/awesome-list-prs/awesome-opensource-security.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/launch/awesome-list-prs/awesome-security.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/launch/blog-50-mcp-servers.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/launch/demo.cast +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/launch/owasp-outreach.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/launch/state-of-mcp-security-2026.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/mkdocs.yml +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/public/badges/ox-coverage.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/public/corpora/manifest.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/releases/v0.3.10.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/releases/v0.3.5.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/releases/v0.3.6.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/releases/v0.3.7.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/releases/v0.3.8.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/releases/v0.3.9.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/requirements-lock.txt +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/research/state-of-mcp-2026/PREVALENCE.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/schema/ox-cve-manifest.schema.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/scripts/backfill_cve_property.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/scripts/build_coverage_page.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/scripts/close_duplicate_cve_issues.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/scripts/cve_watcher.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/scripts/gen_coverage.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/scripts/gen_owasp_coverage.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/scripts/generate_lockfile.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/scripts/install-pre-commit.sh +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/scripts/sync_repo_metadata.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/scripts/sync_scanner_count.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/scripts/watch_csa_mcp_baseline.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/site/coverage/ox.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/site/coverage/prisma-airs.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/conftest.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/LICENSES.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/clean_mcp.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/clean_settings.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/crewai/safe/full_chain.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/crewai/vulnerable/full_chain.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/a2a_2026/vulnerable_card.json +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2025-66335/patched/requirements.txt +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2025-66335/vulnerable/requirements.txt +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-27825-atlassian/vulnerable/agent.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-30623-litellm/patched/requirements.txt +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-30623-litellm/vulnerable/requirements.txt +0 -0
- {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
- {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
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-32211-server/pyproject.toml +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-32211-server/server.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-33032/patched/router.go +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-33032/vulnerable/router.go +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-33032/vulnerable/server.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-33032/vulnerable/server.ts +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-33626/patched-pin/requirements.txt +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-33626/vulnerable/pipeline.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-39313/length-capped/http.ts +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-39313/patched/package.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-39313/vulnerable/http.ts +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-39313/vulnerable/package.json +0 -0
- {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
- {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
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-40933/vulnerable/flow.json +0 -0
- {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
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-41481/patched-pin/requirements.txt +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-41481/vulnerable-pin/requirements.txt +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-41481/vulnerable-redirect/server.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-41488/patched-pin/requirements.txt +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-41488/patched-pinned/server.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-41488/vulnerable-pin/requirements.txt +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/cve-2026-41488/vulnerable-toctou/server.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/healthcare_ai/safe_skill.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/healthcare_ai/vulnerable_skill.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/hook_rce/safe_settings.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/hook_rce/vulnerable_settings.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/india_pii/safe.txt +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/india_pii/vulnerable.txt +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/langchain/safe_requirements.txt +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/langchain/vulnerable_prompt.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/langchain/vulnerable_requirements.txt +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/marketplace/safe.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/marketplace/vulnerable.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/mcp_auth/safe_server.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/mcp_auth/vulnerable_server.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/oauth/safe.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/oauth/vulnerable.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/ox-mcp-stdio-class/patched_java.java +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/ox-mcp-stdio-class/patched_py.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/ox-mcp-stdio-class/patched_rust.rs +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/ox-mcp-stdio-class/patched_ts.ts +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/ox-mcp-stdio-class/vulnerable_java.java +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/ox-mcp-stdio-class/vulnerable_py.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/ox-mcp-stdio-class/vulnerable_rust.rs +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/ox-mcp-stdio-class/vulnerable_ts.ts +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/routines/safe.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/routines/vulnerable.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/skills/safe.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/skills/vulnerable.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/ssrf/safe.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/ssrf/vulnerable.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/state_privacy/safe_privacy.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/state_privacy/vulnerable_privacy.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/tasks/safe.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/cves/tasks/vulnerable.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/deepseek/safe/agent.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/deepseek/vulnerable/agent.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/env_with_secrets +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/harness_shared_state/safe_multi_agent.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/harness_shared_state/unsafe_multi_agent.py +0 -0
- {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
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/incidents/mcp-fhi/clean/server.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/incidents/mcp-fhi/vulnerable/server.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/incidents/ox-mcp-marketplace-fetch/patched.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/incidents/ox-mcp-marketplace-fetch/vulnerable.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/incidents/ox-mcp-marketplace-fetch/vulnerable.ts +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/incidents/vercel-2026-04-19/app.yaml +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/kong_konnect/.mcp.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/langchain_prompt_loader/constant_safe.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/langchain_prompt_loader/user_path_unsafe.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/langchain_prompt_loader/validated_safe.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/langgraph/safe/graph.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/langgraph/vulnerable/graph.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_deprecated/clean_migrated/server.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_deprecated/config_all/.mcp.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_deprecated/logging_py/server.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_deprecated/roots_py/server.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_deprecated/sampling_py/server.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_deprecated/stdlib_logging_fp/util.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_sampling/clean_python/requirements.txt +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_sampling/clean_python/server.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_sampling/config_clean/.mcp.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_sampling/config_vulnerable/.mcp.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_sampling/documented_risk/.agent-audit-kit.yml +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_sampling/documented_risk/requirements.txt +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_sampling/documented_risk/server.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_sampling/vulnerable_python/requirements.txt +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_sampling/vulnerable_python/server.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_sampling/vulnerable_typescript/package.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_sampling/vulnerable_typescript/server.ts +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_ssrf/safe_tool.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_ssrf/vulnerable_tool.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_stateless/clean_py/requirements.txt +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_stateless/clean_py/server.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_stateless/documented_risk/.agent-audit-kit.yml +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_stateless/documented_risk/requirements.txt +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_stateless/documented_risk/server.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_stateless/vulnerable_001_py/requirements.txt +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_stateless/vulnerable_001_py/server.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_stateless/vulnerable_001_ts/package.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_stateless/vulnerable_001_ts/server.ts +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_stateless/vulnerable_002_py/client.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_stateless/vulnerable_002_py/requirements.txt +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_stateless/vulnerable_003_k8s/service.yaml +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_stateless/vulnerable_003_nginx/nginx.conf +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_stateless/vulnerable_003_store_py/handlers.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_stateless/vulnerable_003_store_py/requirements.txt +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_stateless/vulnerable_004_client/client.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_stateless/vulnerable_004_client/requirements.txt +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_tool_unsafe_eval/eval_safe.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_tool_unsafe_eval/eval_unsafe.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/mcp_tool_unsafe_eval/no_tool_decorator.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/metis_pomdp/refusal_refeed_safe.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/metis_pomdp/refusal_refeed_unsafe.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/metis_pomdp/scoring_sink_unsafe.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/openapi_smells/clean.openapi.yaml +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/openapi_smells/smelly.openapi.yaml +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/openclaw/role_default_admin_unsafe.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/openclaw/role_explicit_safe.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/package_with_risks.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/pipelock/policy_invalid.yaml +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/pipelock/policy_minimal.yaml +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/pipelock/policy_with_parity.yaml +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/project_deal/safe/pricer.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/project_deal/vulnerable/pricer.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/server_cards/clean.server-card.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/server_cards/poisoned.server-card.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/skill_lifecycle/safe_skill.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/skill_lifecycle/unsafe_skill.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/social_agents/tiktok_human_in_loop.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/social_agents/tiktok_unsafe.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/stainless_lineage/config_root/stainless.yml +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/stainless_lineage/generated_python_sdk/client.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/stainless_lineage/generated_typescript_sdk/client.ts +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/stainless_lineage/handwritten/server.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/vulnerable_hooks.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/vulnerable_mcp.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/fixtures/vulnerable_settings.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_a2a_2026.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_a2a_protocol.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_action.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_agent_config.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_aicm.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_anthropic_sdk_hardening.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_argv_toctou.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_cli.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_compliance_output.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_compliance_v2.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_coverage_tables.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_crewai_nvd_and_evasion.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_csa_baseline_watcher.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_cve_2025_66335.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_cve_2025_66414_python_sdk.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_cve_2026_20205_config.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_cve_2026_20205_splunk.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_cve_2026_32211.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_cve_2026_32211_server.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_cve_2026_33626.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_cve_2026_35568_java.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_cve_2026_35577_apollo.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_cve_2026_39313.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_cve_2026_40576_excel.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_cve_2026_40608_next_ai_draw.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_cve_2026_41481.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_cve_2026_41488.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_cve_fix_and_watch_and_advisories.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_cve_watcher_dedup.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_cves_2026.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_cyclonedx_aibom.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_determinism_benchmark.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_diff.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_discovery.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_engine.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_engine_ignore_paths.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_eu_ai_act_art15_locale.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_examples.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_fix.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_flowise.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_gha_immutable.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_healthcare_ai_and_state_privacy.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_hook_injection.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_index_builder.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_india_pii.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_integrations_notify.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_kong_konnect_cve_2026_13341.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_legal_compliance.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_llm_scan.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_llm_scan_mod.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_llm_sql_rce.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_marketplace_manifest.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_marketplace_sources.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_mcp_attestation.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_mcp_auth_pathtraversal.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_mcp_config.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_mcp_deprecated_features.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_mcp_env_placeholder_exfil.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_mcp_gateway_registry_cve_2026_14471.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_mcp_http_noauth_server.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_mcp_marketplace_fetch.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_mcp_noauth_default.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_mcp_sampling_capability.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_mcp_server_card.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_mcp_ssrf_toolarg.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_mcp_stateless_migration.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_mcp_stdio_cmd_inj_java.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_mcp_stdio_cmd_inj_python.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_mcp_stdio_cmd_inj_rust.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_mcp_stdio_cmd_inj_typescript.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_mcp_stdio_launcher.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_mcp_toolgate_asymmetry.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_mcp_tunnel.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_mcpwn.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_nsa_mcp_csi.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_oauth_surface.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_owasp_agentic_coverage.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_owasp_public_json.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_owasp_report.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_owasp_report_output.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_parity_region_drift.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_phase3.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_pin_drift.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_pinning.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_pinning_mod.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_pr_summary.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_preset_mcp_ox_2026_04.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_proxy.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_repo_metadata_sync.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_sandbox_self_disable.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_sarif_fingerprints.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_sarif_github_upload.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_sarif_output.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_scoring.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_secret_exposure.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_serena_cve_2026_49471.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_shared_resource_authz.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_skill_poisoning.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_skill_untrusted_exec_path.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_stdio_injection.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_supply_chain.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_taint_analysis.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_tool_poisoning.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_toxic_flow.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_transport_security.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_trust_boundary.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_typescript_pattern_scan_sql.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_v0_3_10_features.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_v0_3_10_rules.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_v0_3_11_rules.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_v0_3_13_rules.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_v0_3_14_rules.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_v0_3_15_rules.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_v0_3_16_rules.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_v0_3_17_rules.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_v0_3_18_rules.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_v0_3_19_rules.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_v0_3_1_cve_rules.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_v0_3_20_rules.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_v0_3_21_rules.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_v0_3_22_rules.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_v0_3_8_features.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_v0_3_8_rules.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_v0_3_9_features.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_v0_3_9_features_p1.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_v0_3_9_rules.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_verification.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_verification_mod.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/tests/test_vuln_db.py +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/vscode-extension/.vscodeignore +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/vscode-extension/CLAUDE.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/vscode-extension/README.md +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/vscode-extension/package.json +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/vscode-extension/src/extension.ts +0 -0
- {agent_audit_kit-0.3.49 → agent_audit_kit-0.3.52}/vscode-extension/src/sarifReader.ts +0 -0
- {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
|
|
1
|
+
name: AAK CVE watcher — best-effort rule coverage
|
|
2
2
|
|
|
3
|
-
#
|
|
4
|
-
#
|
|
5
|
-
#
|
|
6
|
-
#
|
|
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 (
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
35
|
-
gh issue list --repo "$GITHUB_REPOSITORY" --label
|
|
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
|
|
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
|
|
1
|
+
# AAK CVE-to-Rule Ledger
|
|
2
2
|
|
|
3
|
-
We
|
|
4
|
-
|
|
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
|
|
9
|
-
|
|
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
|
|
17
|
-
|
|
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 (
|
|
327
|
+
## Open (best-effort — no committed SLA)
|
|
235
328
|
|
|
236
|
-
_none —
|
|
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.
|
|
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-
|
|
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 -->
|
|
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.
|
|
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.
|
|
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 -->
|
|
148
|
-
| **Supply Chain** | <!-- category-count:SUPPLY_CHAIN -->
|
|
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 -->
|
|
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 |
|
|
357
|
-
| **ASI04** | Identity & Privilege Abuse |
|
|
357
|
+
| **ASI03** | Memory Poisoning | 62 |
|
|
358
|
+
| **ASI04** | Identity & Privilege Abuse | 50 |
|
|
358
359
|
| **ASI05** | Cascading Failures | 33 |
|
|
359
|
-
| **ASI06** | Unauthorized Capability Acquisition |
|
|
360
|
+
| **ASI06** | Unauthorized Capability Acquisition | 35 |
|
|
360
361
|
| **ASI07** | Plan Injection | 9 |
|
|
361
362
|
| **ASI08** | Agent Communication Poisoning | 4 |
|
|
362
|
-
| **ASI09** | Resource Abuse |
|
|
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 -->
|
|
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
|
|
451
|
-
|
|
452
|
-
A reproducible data report
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|