agent-audit-kit 0.3.2__tar.gz → 0.3.3__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.3}/.github/workflows/cve-watcher.yml +16 -2
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/.gitignore +3 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/CHANGELOG.cves.md +10 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/CHANGELOG.md +121 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/PKG-INFO +27 -6
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/README.md +26 -5
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/action.yml +1 -1
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/__init__.py +2 -2
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/cli.py +23 -4
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/engine.py +2 -0
- agent_audit_kit-0.3.3/agent_audit_kit/output/sbom.py +289 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/rules/builtin.py +206 -18
- agent_audit_kit-0.3.3/agent_audit_kit/scanners/mcp_sdk_hardening.py +222 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/supply_chain.py +56 -0
- agent_audit_kit-0.3.3/agent_audit_kit/scanners/transport_limits.py +154 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/docs/owasp-agentic-coverage.md +4 -4
- agent_audit_kit-0.3.3/docs/plans/2026-04-21-v0.3.3-design.md +108 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/pyproject.toml +1 -1
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/rules.json +337 -88
- agent_audit_kit-0.3.3/scripts/close_duplicate_cve_issues.py +145 -0
- agent_audit_kit-0.3.3/scripts/cve_watcher.py +216 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/scripts/gen_owasp_coverage.py +32 -0
- agent_audit_kit-0.3.3/tests/fixtures/cves/cve-2025-66335/patched/requirements.txt +2 -0
- agent_audit_kit-0.3.3/tests/fixtures/cves/cve-2025-66335/vulnerable/requirements.txt +2 -0
- agent_audit_kit-0.3.3/tests/fixtures/cves/cve-2026-39313/length-capped/http.ts +16 -0
- agent_audit_kit-0.3.3/tests/fixtures/cves/cve-2026-39313/patched/package.json +7 -0
- agent_audit_kit-0.3.3/tests/fixtures/cves/cve-2026-39313/vulnerable/http.ts +13 -0
- agent_audit_kit-0.3.3/tests/fixtures/cves/cve-2026-39313/vulnerable/package.json +7 -0
- agent_audit_kit-0.3.3/tests/fixtures/incidents/ox-mcp-2026-04-15/documented-risk/.agent-audit-kit.yml +4 -0
- agent_audit_kit-0.3.3/tests/fixtures/incidents/ox-mcp-2026-04-15/documented-risk/requirements.txt +1 -0
- agent_audit_kit-0.3.3/tests/fixtures/incidents/ox-mcp-2026-04-15/documented-risk/server.py +11 -0
- agent_audit_kit-0.3.3/tests/fixtures/incidents/ox-mcp-2026-04-15/python/sanitized/requirements.txt +1 -0
- agent_audit_kit-0.3.3/tests/fixtures/incidents/ox-mcp-2026-04-15/python/sanitized/server.py +17 -0
- agent_audit_kit-0.3.3/tests/fixtures/incidents/ox-mcp-2026-04-15/python/vulnerable/requirements.txt +1 -0
- agent_audit_kit-0.3.3/tests/fixtures/incidents/ox-mcp-2026-04-15/python/vulnerable/server.py +23 -0
- agent_audit_kit-0.3.3/tests/fixtures/incidents/ox-mcp-2026-04-15/typescript/sanitized/package.json +7 -0
- agent_audit_kit-0.3.3/tests/fixtures/incidents/ox-mcp-2026-04-15/typescript/sanitized/server.ts +12 -0
- agent_audit_kit-0.3.3/tests/fixtures/incidents/ox-mcp-2026-04-15/typescript/vulnerable/package.json +7 -0
- agent_audit_kit-0.3.3/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.3}/tests/test_aicm.py +19 -0
- agent_audit_kit-0.3.3/tests/test_anthropic_sdk_hardening.py +80 -0
- agent_audit_kit-0.3.3/tests/test_cve_2025_66335.py +44 -0
- agent_audit_kit-0.3.3/tests/test_cve_2026_39313.py +54 -0
- agent_audit_kit-0.3.3/tests/test_cve_watcher_dedup.py +151 -0
- agent_audit_kit-0.3.3/tests/test_cyclonedx_aibom.py +78 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_owasp_agentic_coverage.py +19 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_phase5.py +1 -1
- agent_audit_kit-0.3.2/agent_audit_kit/output/sbom.py +0 -133
- agent_audit_kit-0.3.2/scripts/cve_watcher.py +0 -112
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/.agent-audit-kit.yml +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/.claude/auto-memory/config.json +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/.github/FUNDING.yml +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/.github/dependabot.yml +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/.github/workflows/ci.yml +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/.github/workflows/codeql.yml +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/.github/workflows/docker-nightly.yml +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/.github/workflows/mcp-security-index.yml +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/.github/workflows/release.yml +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/.github/workflows/scorecard.yml +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/.github/workflows/sync-rule-count.yml +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/.pre-commit-config.yaml +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/.pre-commit-hooks.yaml +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/CLAUDE.md +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/CLAUDE_PROMPT.md +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/CODE_OF_CONDUCT.md +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/CONTRIBUTING.md +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/DEEP_ANALYSIS.md +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/Dockerfile +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/LICENSE +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/ROADMAP_2026.md +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/SECURITY.md +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/advisories.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/bundle.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/data/vuln_db.json +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/diff.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/discovery.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/fix.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/llm_scan.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/models.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/output/__init__.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/output/aicm.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/output/compliance.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/output/console.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/output/json_report.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/output/owasp_report.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/output/pdf_report.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/output/pr_summary.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/output/sarif.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/pinning.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/proxy/__init__.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/proxy/interceptor.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/rules/__init__.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/__init__.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/_helpers.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/a2a_protocol.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/agent_config.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/healthcare_ai.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/hook_injection.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/hook_rce.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/india_pii.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/langchain_vuln.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/legal_compliance.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/log_injection.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/marketplace_manifest.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/mcp_auth_patterns.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/mcp_config.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/mcp_middleware.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/mcp_tasks.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/neo4j_cve.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/oauth_misconfig.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/oauth_surface.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/pin_drift.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/routines.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/rust_pattern_scan.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/rust_scan.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/secret_exposure.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/skill_poisoning.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/ssrf_patterns.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/state_privacy.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/stdio_injection.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/taint_analysis.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/tool_poisoning.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/transport_security.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/trust_boundary.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/typescript_pattern_scan.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scanners/typescript_scan.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/scoring.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/verification.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/vuln_db.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/agent_audit_kit/watch.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/benchmarks/README.md +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/benchmarks/crawler.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/benchmarks/index_builder.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/benchmarks/run_benchmark.sh +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/benchmarks/sample_configs/sample_01_clean.json +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/benchmarks/sample_configs/sample_02_secrets.json +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/benchmarks/sample_configs/sample_03_no_auth.json +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/benchmarks/sample_configs/sample_04_shell_injection.json +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/benchmarks/sample_configs/sample_05_mixed.json +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/benchmarks/sources.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/ci/gitlab/agent-audit-kit.gitlab-ci.yml +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/docs/CNAME +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/docs/blog/state-of-mcp-security-template.md +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/docs/ci-cd.md +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/docs/comparison.md +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/docs/comparisons.md +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/docs/disclosure-policy.md +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/docs/getting-started.md +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/docs/gitlab-ci.md +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/docs/index.md +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/docs/launch/CHECKLIST.md +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/docs/launch/hn.md +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/docs/launch/press.md +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/docs/launch/reddit.md +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/docs/launch/release-notes-v0.3.0.md +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/docs/launch/x-thread.md +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/docs/metrics.md +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/docs/owasp-mapping.md +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/docs/research-log.md +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/docs/rule-schema.md +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/docs/rules.md +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/entrypoint.sh +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/README.md +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/case-studies/damn-vulnerable-mcp/README.md +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/case-studies/damn-vulnerable-mcp/configs/dvmcp-inspired.mcp.json +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/case-studies/damn-vulnerable-mcp/configs/dvmcp-settings.json +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/case-studies/damn-vulnerable-mcp/scan-results.json +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/case-studies/damn-vulnerable-mcp/scan-results.sarif +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/ci-integration/README.md +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/ci-integration/docker-one-liner.sh +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/ci-integration/github-actions-sarif.yml +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/ci-integration/gitlab-ci-scan.yml +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/ci-integration/pre-commit-config.yaml +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/run-all-examples.sh +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/vulnerable-configs/01-no-auth-remote/.mcp.json +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/vulnerable-configs/01-no-auth-remote/expected-findings.json +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/vulnerable-configs/02-shell-injection/.mcp.json +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/vulnerable-configs/02-shell-injection/expected-findings.json +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/vulnerable-configs/03-hardcoded-secrets/.gitignore +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/vulnerable-configs/03-hardcoded-secrets/.mcp.json +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/vulnerable-configs/03-hardcoded-secrets/expected-findings.json +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/vulnerable-configs/04-hook-exfiltration/.claude/settings.json +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/vulnerable-configs/04-hook-exfiltration/expected-findings.json +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/vulnerable-configs/05-trust-boundary-violations/.claude/settings.json +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/vulnerable-configs/05-trust-boundary-violations/.mcp.json +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/vulnerable-configs/05-trust-boundary-violations/expected-findings.json +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/vulnerable-configs/06-tool-poisoning/.mcp.json +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/vulnerable-configs/06-tool-poisoning/expected-findings.json +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/vulnerable-configs/07-tainted-tool-function/expected-findings.json +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/vulnerable-configs/07-tainted-tool-function/server.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/vulnerable-configs/08-transport-insecurity/.mcp.json +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/vulnerable-configs/08-transport-insecurity/expected-findings.json +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/vulnerable-configs/09-a2a-insecure-agent/agent-card.json +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/vulnerable-configs/09-a2a-insecure-agent/expected-findings.json +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/vulnerable-configs/10-supply-chain-risks/.mcp.json +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/vulnerable-configs/10-supply-chain-risks/expected-findings.json +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/vulnerable-configs/10-supply-chain-risks/package.json +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/vulnerable-configs/11-legal-compliance/expected-findings.json +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/vulnerable-configs/11-legal-compliance/package.json +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/vulnerable-configs/11-legal-compliance/subproject/package.json +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/examples/vulnerable-configs/README.md +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/launch/MARKET-RESEARCH-2026-04-12.md +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/launch/awesome-list-prs/awesome-opensource-security.md +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/launch/awesome-list-prs/awesome-security.md +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/launch/blog-50-mcp-servers.md +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/launch/demo.cast +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/launch/owasp-outreach.md +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/mkdocs.yml +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/requirements-lock.txt +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/scripts/generate_lockfile.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/scripts/sync_rule_count.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/scripts/watch_csa_mcp_baseline.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/conftest.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/clean_mcp.json +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/clean_settings.json +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/a2a_2026/vulnerable_card.json +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/cve-2026-30615/patched/py_argv_allowlist.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/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.3}/tests/fixtures/cves/cve-2026-30615/vulnerable/py_subprocess_shell.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/cve-2026-30615/vulnerable/ts_execa_shell.ts +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/cve-2026-33032/patched/router.go +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/cve-2026-33032/vulnerable/router.go +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/cve-2026-33032/vulnerable/server.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/cve-2026-33032/vulnerable/server.ts +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/cve-2026-40933/vulnerable/flow.json +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/healthcare_ai/safe_skill.md +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/healthcare_ai/vulnerable_skill.md +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/hook_rce/safe_settings.json +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/hook_rce/vulnerable_settings.json +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/india_pii/safe.txt +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/india_pii/vulnerable.txt +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/langchain/safe_requirements.txt +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/langchain/vulnerable_prompt.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/langchain/vulnerable_requirements.txt +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/marketplace/safe.json +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/marketplace/vulnerable.json +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/mcp_auth/safe_server.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/mcp_auth/vulnerable_server.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/oauth/safe.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/oauth/vulnerable.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/routines/safe.json +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/routines/vulnerable.json +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/skills/safe.md +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/skills/vulnerable.md +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/ssrf/safe.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/ssrf/vulnerable.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/state_privacy/safe_privacy.md +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/state_privacy/vulnerable_privacy.md +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/tasks/safe.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/cves/tasks/vulnerable.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/env_with_secrets +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/incidents/vercel-2026-04-19/app.yaml +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/package_with_risks.json +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/vulnerable_hooks.json +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/vulnerable_mcp.json +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/fixtures/vulnerable_settings.json +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_a2a_2026.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_a2a_protocol.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_action.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_agent_config.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_cli.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_compliance_output.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_compliance_v2.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_csa_baseline_watcher.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_cve_fix_and_watch_and_advisories.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_cves_2026.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_diff.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_discovery.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_engine.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_examples.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_fix.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_flowise.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_healthcare_ai_and_state_privacy.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_hook_injection.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_index_builder.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_india_pii.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_legal_compliance.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_llm_scan.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_llm_scan_mod.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_marketplace_manifest.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_marketplace_sources.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_mcp_config.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_mcpwn.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_oauth_surface.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_owasp_report.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_owasp_report_output.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_phase3.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_pin_drift.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_pinning.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_pinning_mod.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_pr_summary.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_proxy.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_rule_count_sync.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_sarif_fingerprints.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_sarif_github_upload.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_sarif_output.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_scoring.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_secret_exposure.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_skill_poisoning.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_stdio_injection.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_supply_chain.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_taint_analysis.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_tool_poisoning.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_transport_security.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_trust_boundary.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_v0_3_1_cve_rules.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_verification.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_verification_mod.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/tests/test_vuln_db.py +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/vscode-extension/.vscodeignore +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/vscode-extension/CLAUDE.md +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/vscode-extension/README.md +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/vscode-extension/package.json +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/vscode-extension/src/extension.ts +0 -0
- {agent_audit_kit-0.3.2 → agent_audit_kit-0.3.3}/vscode-extension/tsconfig.json +0 -0
|
@@ -25,13 +25,27 @@ jobs:
|
|
|
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'
|
|
@@ -8,6 +8,16 @@ 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.3 (2026-04-21)
|
|
12
|
+
|
|
13
|
+
| CVE / Incident | Advisory | AAK rule(s) | Shipped | Latency |
|
|
14
|
+
|---|---|---|---|---|
|
|
15
|
+
| 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) |
|
|
16
|
+
| 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 |
|
|
17
|
+
| 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) |
|
|
18
|
+
|
|
19
|
+
Deferred to v0.3.4 pending NVD resolution (records unresolvable during 2026-04-21 cycle): CVE-2026-6599 (#47), CVE-2026-39861 (#53).
|
|
20
|
+
|
|
11
21
|
## Shipped in v0.3.2 (2026-04-20)
|
|
12
22
|
|
|
13
23
|
| CVE / Incident | Advisory | AAK rule(s) | Shipped | Latency |
|
|
@@ -5,6 +5,127 @@ All notable changes to AgentAuditKit are documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.3.3] - 2026-04-21
|
|
9
|
+
|
|
10
|
+
**Headline: mcp-framework + Apache Doris pin-checks, Anthropic MCP SDK
|
|
11
|
+
STDIO hardening, CVE-watcher dedup, AICM density to ≥51%, CycloneDX
|
|
12
|
+
AI-BOM emitter.**
|
|
13
|
+
|
|
14
|
+
Clears the 48h SLA on CVE-2026-39313 and CVE-2025-66335, adds the
|
|
15
|
+
SDK-level inheritance check the OX Security 2026-04-15 disclosure asked
|
|
16
|
+
for, roots out the watcher regression that opened five copies of
|
|
17
|
+
CVE-2026-6599, and lifts the AICM mapping density from a 7% starter to
|
|
18
|
+
a real procurement-facing 63%.
|
|
19
|
+
|
|
20
|
+
### Added — rule coverage (3 new rules, 148 → 151)
|
|
21
|
+
|
|
22
|
+
- **AAK-MCPFRAME-001** (MEDIUM) — CVE-2026-39313, mcp-framework < 0.2.22
|
|
23
|
+
HTTP-body DoS. Detection: `package.json` pin-check + TS/JS regex for
|
|
24
|
+
`readRequestBody`-style chunk-concat accumulating into a string
|
|
25
|
+
without a `Content-Length` / `maxMessageSize` guard. Ships in a new
|
|
26
|
+
`scanners/transport_limits.py`. Strips `//` and `/* ... */` comments
|
|
27
|
+
before matching the size-guard regex so docstring mentions do not
|
|
28
|
+
spuriously suppress.
|
|
29
|
+
- **AAK-DORIS-001** (HIGH) — CVE-2025-66335, apache-doris-mcp-server
|
|
30
|
+
< 0.6.1 SQL injection via query-context neutralization bypass.
|
|
31
|
+
Pin-check scans `requirements*.txt`, `pyproject.toml`,
|
|
32
|
+
`Pipfile(.lock)`, `poetry.lock`, `uv.lock`. Lives in
|
|
33
|
+
`scanners/supply_chain.py`.
|
|
34
|
+
- **AAK-ANTHROPIC-SDK-001** (HIGH) — SDK-level STDIO sanitization
|
|
35
|
+
inheritance check covering the OX Security 2026-04-15 class.
|
|
36
|
+
Anthropic declined to CVE — "sanitization is the developer's
|
|
37
|
+
responsibility". Fires only when (a) an upstream MCP SDK is declared
|
|
38
|
+
in a manifest (Python `mcp`/`modelcontextprotocol`, TS
|
|
39
|
+
`@modelcontextprotocol/sdk`, Java `io.modelcontextprotocol:*`, Rust
|
|
40
|
+
equivalents), (b) a STDIO transport is exposed, and (c) no
|
|
41
|
+
sanitizer, HTTP opt-out, or documented risk acceptance is present.
|
|
42
|
+
Opt-out via `.agent-audit-kit.yml` with `accepts_stdio_risk: true`
|
|
43
|
+
plus a non-empty `justification:`. Ships in a new
|
|
44
|
+
`scanners/mcp_sdk_hardening.py`. Tagged
|
|
45
|
+
`incident_references=["OX-MCP-2026-04-15"]`.
|
|
46
|
+
|
|
47
|
+
### Added — OWASP Agentic 2026 density floor
|
|
48
|
+
|
|
49
|
+
- `tests/test_owasp_agentic_coverage.py` now enforces a **≥3 rules per
|
|
50
|
+
ASI slot** density floor (parametrized). The marketing claim
|
|
51
|
+
"OWASP Agentic Top 10: 10/10" is now backed by a test that fails
|
|
52
|
+
CI if any slot falls below three rules.
|
|
53
|
+
- `AAK-A2A-003`, `AAK-A2A-011`, `AAK-A2A-012` gain `ASI08` tags
|
|
54
|
+
(Agent Communication Poisoning) — lifts ASI08 coverage from 1 rule
|
|
55
|
+
to 3.
|
|
56
|
+
- `scripts/gen_owasp_coverage.py` additionally rewrites a
|
|
57
|
+
`<!-- owasp-coverage:start -->`…`<!-- owasp-coverage:end -->`
|
|
58
|
+
marker in `README.md` so the rendered coverage table stays in lockstep
|
|
59
|
+
with the code.
|
|
60
|
+
|
|
61
|
+
### Added — CSA AICM density to ≥51%
|
|
62
|
+
|
|
63
|
+
- `_AICM_TAGS` in `agent_audit_kit/rules/builtin.py` expands from 10
|
|
64
|
+
rules (7%) to **95 rules (63%)**, covering the SECRET-*, SUPPLY-*,
|
|
65
|
+
TRUST-*, TRANSPORT-*, A2A-*, POISON-*, TAINT-*, SSRF-*, OAUTH-*,
|
|
66
|
+
SKILL-*, MARKETPLACE-*, HOOK-*, and CVE-response families. Each
|
|
67
|
+
family maps to the canonical AICM control domain (DSP / IAM / STA /
|
|
68
|
+
CEK / AIS / LOG / IVS / CCC).
|
|
69
|
+
- `tests/test_aicm.py` gets a **density floor assertion** — the suite
|
|
70
|
+
now fails CI if fewer than 75 rules carry an AICM tag.
|
|
71
|
+
- `--compliance aicm` CSV output reflects the expanded mapping
|
|
72
|
+
automatically; no CLI change needed.
|
|
73
|
+
|
|
74
|
+
### Added — CycloneDX AI-BOM emitter
|
|
75
|
+
|
|
76
|
+
- `agent-audit-kit sbom --format aibom` emits a CycloneDX 1.5 AI/ML-BOM
|
|
77
|
+
on top of the existing SBOM primitive. Adds:
|
|
78
|
+
- `components` entries with `type: "machine-learning-model"` for each
|
|
79
|
+
detected vendor SDK (anthropic/Claude, openai/GPT, cohere/Command).
|
|
80
|
+
- A `formulation` block listing detected agent-platform SDKs
|
|
81
|
+
(LangChain, LangSmith, LangGraph, LangFuse, Helicone, Humanloop,
|
|
82
|
+
MCP SDK) with pURLs where the pin can be extracted.
|
|
83
|
+
- `metadata.properties`: `aak:rule-bundle-sha256` (pulled from
|
|
84
|
+
`rules.json.sha256` if present), `aak:aibom: "1"` marker, and one
|
|
85
|
+
`aak:incident-fired` per fired incident reference so the BOM can
|
|
86
|
+
double as attestation evidence.
|
|
87
|
+
- Covered by `tests/test_cyclonedx_aibom.py`.
|
|
88
|
+
|
|
89
|
+
### Fixed — CVE-response watcher dedup (Task A)
|
|
90
|
+
|
|
91
|
+
- `scripts/cve_watcher.py` was only deduping against
|
|
92
|
+
`CHANGELOG.cves.md`. A CVE sitting in the SLA queue without a rule
|
|
93
|
+
yet never reached the changelog, so the 6-hourly cron re-opened it.
|
|
94
|
+
Over 48h this filed five copies of CVE-2026-6599 (#47/#48/#50/#52/#55)
|
|
95
|
+
and three of CVE-2025-66335.
|
|
96
|
+
- Rewritten with three layers of dedup (any one suppresses):
|
|
97
|
+
1. `CHANGELOG.cves.md`.
|
|
98
|
+
2. Persistent `.aak/cve-watcher-state.json` (cached across workflow
|
|
99
|
+
runs via `actions/cache`).
|
|
100
|
+
3. Open `cve-response` issue titles + bodies via the GitHub REST API.
|
|
101
|
+
- New `scripts/close_duplicate_cve_issues.py` groups existing open
|
|
102
|
+
`cve-response` issues by extracted CVE ID, keeps the lowest-numbered,
|
|
103
|
+
closes the rest with a cross-reference body. Ran against live repo
|
|
104
|
+
during this release: closed #48, #50, #51, #52, #54, #55, #56 (7
|
|
105
|
+
dups).
|
|
106
|
+
- `.github/workflows/cve-watcher.yml` now wires `GITHUB_TOKEN` +
|
|
107
|
+
`GITHUB_REPOSITORY` into the diff step and restores the state file
|
|
108
|
+
from `actions/cache`.
|
|
109
|
+
- Covered by `tests/test_cve_watcher_dedup.py` — five scenarios
|
|
110
|
+
including the observed "same CVE × 3 cron runs" replay.
|
|
111
|
+
|
|
112
|
+
### Added — provenance plumbing
|
|
113
|
+
|
|
114
|
+
- `CHANGELOG.cves.md` gains entries for CVE-2026-39313,
|
|
115
|
+
CVE-2025-66335, and the OX-MCP-2026-04-15 incident class.
|
|
116
|
+
- `watch.py` parameter annotations updated from the string-form
|
|
117
|
+
`"callable | None"` to the proper `Callable[[int, list[Any]], None]`
|
|
118
|
+
(incidental mypy-1.x compatibility fix carried over from 0.3.2.1
|
|
119
|
+
hotfix).
|
|
120
|
+
- `scanners/marketplace_manifest.py` ships the Python 3.10 `tomli`
|
|
121
|
+
fallback that made CI green for 0.3.2 — kept for 0.3.3.
|
|
122
|
+
|
|
123
|
+
### Thanks
|
|
124
|
+
|
|
125
|
+
OX Security for the 2026-04-15 "Mother of all AI supply chains"
|
|
126
|
+
disclosure; Apache Doris for the 0.6.1 patch turnaround; the CSA AICM
|
|
127
|
+
working group for publishing a v1 control catalog we can map to.
|
|
128
|
+
|
|
8
129
|
## [0.3.2] - 2026-04-20
|
|
9
130
|
|
|
10
131
|
**Headline: MCPwn coverage + third-party OAuth-app surface + OWASP Agentic 2026 coverage proof.**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agent-audit-kit
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.3
|
|
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-151-blue.svg" alt="Rules: 151"></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>
|
|
@@ -57,7 +57,7 @@ Description-Content-Type: text/markdown
|
|
|
57
57
|
|
|
58
58
|
Security scanner for MCP-connected AI agent pipelines. Finds misconfigurations, hardcoded secrets, tool poisoning, rug pulls, trust boundary violations, and tainted data flows across **13 agent platforms**.
|
|
59
59
|
|
|
60
|
-
- **<!-- rule-count:total -->
|
|
60
|
+
- **<!-- rule-count:total -->151<!-- /rule-count --> rules** across 11 security categories, covering the 2026 CVE wave
|
|
61
61
|
- **28 scanner modules** including AST-based Python taint analysis and regex pattern scanners for TypeScript/JavaScript and Rust
|
|
62
62
|
- **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
|
|
63
63
|
- **OWASP coverage**: Agentic Top 10 (10/10), MCP Top 10 (10/10), Adversa AI Top 25
|
|
@@ -149,7 +149,7 @@ agent-audit-kit scan examples/vulnerable-configs/04-hook-exfiltration/
|
|
|
149
149
|
| **Transport Security** | 4 | HTTP endpoints, TLS disabled, deprecated SSE, tokens in URL query strings |
|
|
150
150
|
| **Legal Compliance** | 3 | Copyleft licenses (AGPL/SSPL), missing licenses, DMCA-flagged packages |
|
|
151
151
|
|
|
152
|
-
**<!-- rule-count:total -->
|
|
152
|
+
**<!-- rule-count:total -->151<!-- /rule-count --> rules total.** Every finding includes severity, evidence, remediation, OWASP references, Adversa references, and CVE links where applicable.
|
|
153
153
|
|
|
154
154
|
### Agent Platforms Scanned
|
|
155
155
|
|
|
@@ -304,8 +304,29 @@ Generate an SVG badge for your README: `agent-audit-kit score . --badge`
|
|
|
304
304
|
|
|
305
305
|
| Framework | Coverage |
|
|
306
306
|
|-----------|----------|
|
|
307
|
-
| **OWASP Agentic Top 10** (ASI01-ASI10) | 10/10 (100%) |
|
|
307
|
+
| **OWASP Agentic Top 10** (ASI01-ASI10) | 10/10 (100%) — density by slot below |
|
|
308
308
|
| **OWASP MCP Top 10** (MCP01-MCP10) | 10/10 (100%) |
|
|
309
|
+
|
|
310
|
+
<details>
|
|
311
|
+
<summary>OWASP Agentic Top 10 — density by slot</summary>
|
|
312
|
+
|
|
313
|
+
<!-- owasp-coverage:start -->
|
|
314
|
+
| ASI | Title | # rules |
|
|
315
|
+
| --- | --- | --- |
|
|
316
|
+
| **ASI01** | Goal Hijack | 7 |
|
|
317
|
+
| **ASI02** | Tool Misuse | 12 |
|
|
318
|
+
| **ASI03** | Memory Poisoning | 42 |
|
|
319
|
+
| **ASI04** | Identity & Privilege Abuse | 20 |
|
|
320
|
+
| **ASI05** | Cascading Failures | 25 |
|
|
321
|
+
| **ASI06** | Unauthorized Capability Acquisition | 23 |
|
|
322
|
+
| **ASI07** | Plan Injection | 9 |
|
|
323
|
+
| **ASI08** | Agent Communication Poisoning | 4 |
|
|
324
|
+
| **ASI09** | Resource Abuse | 5 |
|
|
325
|
+
| **ASI10** | Supply-Chain | 5 |
|
|
326
|
+
<!-- owasp-coverage:end -->
|
|
327
|
+
|
|
328
|
+
</details>
|
|
329
|
+
|
|
309
330
|
| **Adversa AI MCP Security Top 25** | Fully mapped |
|
|
310
331
|
| **EU AI Act** | `--compliance eu-ai-act` |
|
|
311
332
|
| **SOC 2 Type II** | `--compliance soc2` |
|
|
@@ -338,7 +359,7 @@ See [`docs/comparisons.md`](docs/comparisons.md) for a fully-sourced version. Ve
|
|
|
338
359
|
| Feature | AgentAuditKit | Microsoft AGT | Snyk Agent Scan | Semgrep Multimodal |
|
|
339
360
|
|---------|:---:|:---:|:---:|:---:|
|
|
340
361
|
| Scope | Static scanner + compliance PDFs | Runtime governance | Static + runtime | Multimodal SAST |
|
|
341
|
-
| Detection rules (static) | **<!-- rule-count:total -->
|
|
362
|
+
| Detection rules (static) | **<!-- rule-count:total -->151<!-- /rule-count -->** | Runtime policies, not rules | ~30 | LLM-assisted |
|
|
342
363
|
| OWASP Agentic 10/10 | **Yes** | Yes | Partial | Partial |
|
|
343
364
|
| OWASP MCP 10/10 | **Yes** | No (runtime-focused) | No | No |
|
|
344
365
|
| Auditor-ready PDF compliance | **11 frameworks** | No | 0 | 0 |
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
<a href="https://pypi.org/project/agent-audit-kit/"><img src="https://img.shields.io/pypi/v/agent-audit-kit.svg" alt="PyPI"></a>
|
|
9
9
|
<a href="https://www.python.org/downloads/"><img src="https://img.shields.io/badge/python-3.9+-blue.svg" alt="Python 3.9+"></a>
|
|
10
10
|
<a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="License: MIT"></a>
|
|
11
|
-
<a href="#what-it-scans"><img src="https://img.shields.io/badge/rules-
|
|
11
|
+
<a href="#what-it-scans"><img src="https://img.shields.io/badge/rules-151-blue.svg" alt="Rules: 151"></a>
|
|
12
12
|
<a href="#frameworks--standards"><img src="https://img.shields.io/badge/OWASP_Agentic-10%2F10-green.svg" alt="OWASP Agentic: 10/10"></a>
|
|
13
13
|
<a href="#frameworks--standards"><img src="https://img.shields.io/badge/OWASP_MCP-10%2F10-green.svg" alt="OWASP MCP: 10/10"></a>
|
|
14
14
|
<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>
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
|
|
24
24
|
Security scanner for MCP-connected AI agent pipelines. Finds misconfigurations, hardcoded secrets, tool poisoning, rug pulls, trust boundary violations, and tainted data flows across **13 agent platforms**.
|
|
25
25
|
|
|
26
|
-
- **<!-- rule-count:total -->
|
|
26
|
+
- **<!-- rule-count:total -->151<!-- /rule-count --> rules** across 11 security categories, covering the 2026 CVE wave
|
|
27
27
|
- **28 scanner modules** including AST-based Python taint analysis and regex pattern scanners for TypeScript/JavaScript and Rust
|
|
28
28
|
- **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
|
|
29
29
|
- **OWASP coverage**: Agentic Top 10 (10/10), MCP Top 10 (10/10), Adversa AI Top 25
|
|
@@ -115,7 +115,7 @@ agent-audit-kit scan examples/vulnerable-configs/04-hook-exfiltration/
|
|
|
115
115
|
| **Transport Security** | 4 | HTTP endpoints, TLS disabled, deprecated SSE, tokens in URL query strings |
|
|
116
116
|
| **Legal Compliance** | 3 | Copyleft licenses (AGPL/SSPL), missing licenses, DMCA-flagged packages |
|
|
117
117
|
|
|
118
|
-
**<!-- rule-count:total -->
|
|
118
|
+
**<!-- rule-count:total -->151<!-- /rule-count --> rules total.** Every finding includes severity, evidence, remediation, OWASP references, Adversa references, and CVE links where applicable.
|
|
119
119
|
|
|
120
120
|
### Agent Platforms Scanned
|
|
121
121
|
|
|
@@ -270,8 +270,29 @@ Generate an SVG badge for your README: `agent-audit-kit score . --badge`
|
|
|
270
270
|
|
|
271
271
|
| Framework | Coverage |
|
|
272
272
|
|-----------|----------|
|
|
273
|
-
| **OWASP Agentic Top 10** (ASI01-ASI10) | 10/10 (100%) |
|
|
273
|
+
| **OWASP Agentic Top 10** (ASI01-ASI10) | 10/10 (100%) — density by slot below |
|
|
274
274
|
| **OWASP MCP Top 10** (MCP01-MCP10) | 10/10 (100%) |
|
|
275
|
+
|
|
276
|
+
<details>
|
|
277
|
+
<summary>OWASP Agentic Top 10 — density by slot</summary>
|
|
278
|
+
|
|
279
|
+
<!-- owasp-coverage:start -->
|
|
280
|
+
| ASI | Title | # rules |
|
|
281
|
+
| --- | --- | --- |
|
|
282
|
+
| **ASI01** | Goal Hijack | 7 |
|
|
283
|
+
| **ASI02** | Tool Misuse | 12 |
|
|
284
|
+
| **ASI03** | Memory Poisoning | 42 |
|
|
285
|
+
| **ASI04** | Identity & Privilege Abuse | 20 |
|
|
286
|
+
| **ASI05** | Cascading Failures | 25 |
|
|
287
|
+
| **ASI06** | Unauthorized Capability Acquisition | 23 |
|
|
288
|
+
| **ASI07** | Plan Injection | 9 |
|
|
289
|
+
| **ASI08** | Agent Communication Poisoning | 4 |
|
|
290
|
+
| **ASI09** | Resource Abuse | 5 |
|
|
291
|
+
| **ASI10** | Supply-Chain | 5 |
|
|
292
|
+
<!-- owasp-coverage:end -->
|
|
293
|
+
|
|
294
|
+
</details>
|
|
295
|
+
|
|
275
296
|
| **Adversa AI MCP Security Top 25** | Fully mapped |
|
|
276
297
|
| **EU AI Act** | `--compliance eu-ai-act` |
|
|
277
298
|
| **SOC 2 Type II** | `--compliance soc2` |
|
|
@@ -304,7 +325,7 @@ See [`docs/comparisons.md`](docs/comparisons.md) for a fully-sourced version. Ve
|
|
|
304
325
|
| Feature | AgentAuditKit | Microsoft AGT | Snyk Agent Scan | Semgrep Multimodal |
|
|
305
326
|
|---------|:---:|:---:|:---:|:---:|
|
|
306
327
|
| Scope | Static scanner + compliance PDFs | Runtime governance | Static + runtime | Multimodal SAST |
|
|
307
|
-
| Detection rules (static) | **<!-- rule-count:total -->
|
|
328
|
+
| Detection rules (static) | **<!-- rule-count:total -->151<!-- /rule-count -->** | Runtime policies, not rules | ~30 | LLM-assisted |
|
|
308
329
|
| OWASP Agentic 10/10 | **Yes** | Yes | Partial | Partial |
|
|
309
330
|
| OWASP MCP 10/10 | **Yes** | No (runtime-focused) | No | No |
|
|
310
331
|
| Auditor-ready PDF compliance | **11 frameworks** | No | 0 | 0 |
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
name: 'AgentAuditKit MCP Security Scan'
|
|
2
|
-
description: 'AgentAuditKit — MCP Security Scan (
|
|
2
|
+
description: 'AgentAuditKit — MCP Security Scan (151 rules, OWASP Agentic Top 10 + MCP Top 10)'
|
|
3
3
|
author: 'sattyamjjain'
|
|
4
4
|
|
|
5
5
|
branding:
|
|
@@ -705,18 +705,37 @@ def verify_bundle_cmd(bundle: str, sig_path: str | None) -> None:
|
|
|
705
705
|
@click.option(
|
|
706
706
|
"--format",
|
|
707
707
|
"sbom_format",
|
|
708
|
-
type=click.Choice(["cyclonedx", "spdx"]),
|
|
708
|
+
type=click.Choice(["cyclonedx", "spdx", "aibom"]),
|
|
709
709
|
default="cyclonedx",
|
|
710
|
-
help=
|
|
710
|
+
help=(
|
|
711
|
+
"SBOM format. `cyclonedx` + `spdx` are standard SBOMs; `aibom` "
|
|
712
|
+
"emits a CycloneDX 1.5 AI/ML-BOM with machine-learning-model "
|
|
713
|
+
"components, detected agent-platform SDKs, and rule-bundle "
|
|
714
|
+
"provenance properties."
|
|
715
|
+
),
|
|
711
716
|
)
|
|
712
717
|
@click.option("--output", "-o", "output_file", type=click.Path(), default=None,
|
|
713
718
|
help="Write SBOM to file (defaults to stdout).")
|
|
714
719
|
def sbom_cmd(path: str, sbom_format: str, output_file: str | None) -> None:
|
|
715
|
-
"""Emit a CycloneDX 1.5
|
|
720
|
+
"""Emit a CycloneDX 1.5 / SPDX 2.3 SBOM or a CycloneDX AI-BOM (`--format aibom`)."""
|
|
716
721
|
from agent_audit_kit.output.sbom import emit_cyclonedx, emit_spdx
|
|
717
722
|
|
|
718
723
|
project = Path(path)
|
|
719
|
-
|
|
724
|
+
if sbom_format == "spdx":
|
|
725
|
+
payload = emit_spdx(project)
|
|
726
|
+
elif sbom_format == "aibom":
|
|
727
|
+
# Best-effort: pull the shipped rule-bundle hash if the user has
|
|
728
|
+
# the file committed locally; don't fail the emit if it's absent.
|
|
729
|
+
sha256_path = project / "rules.json.sha256"
|
|
730
|
+
rule_hash: str | None = None
|
|
731
|
+
if sha256_path.is_file():
|
|
732
|
+
try:
|
|
733
|
+
rule_hash = sha256_path.read_text(encoding="utf-8").split()[0]
|
|
734
|
+
except OSError:
|
|
735
|
+
rule_hash = None
|
|
736
|
+
payload = emit_cyclonedx(project, aibom=True, rule_bundle_sha256=rule_hash)
|
|
737
|
+
else:
|
|
738
|
+
payload = emit_cyclonedx(project)
|
|
720
739
|
if output_file:
|
|
721
740
|
Path(output_file).write_text(payload, encoding="utf-8")
|
|
722
741
|
click.echo(f"SBOM written to {output_file}", err=True)
|
|
@@ -51,6 +51,8 @@ _OPTIONAL_SCANNERS: list[tuple[str, str, list[str]]] = [
|
|
|
51
51
|
("log_injection", "MCP tool log-injection (CVE-2026-6494)", []),
|
|
52
52
|
("mcp_middleware", "MCPwn twin-route middleware asymmetry (CVE-2026-33032)", []),
|
|
53
53
|
("oauth_surface", "Third-party OAuth surface (VERCEL-2026-04-19)", []),
|
|
54
|
+
("transport_limits", "Transport body-size limits (CVE-2026-39313)", []),
|
|
55
|
+
("mcp_sdk_hardening", "Upstream MCP SDK STDIO hardening (OX-MCP-2026-04-15)", []),
|
|
54
56
|
]
|
|
55
57
|
|
|
56
58
|
|