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