vaspera 2.5.0
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.
- package/CHANGELOG.md +184 -0
- package/LICENSE +21 -0
- package/README.md +809 -0
- package/dist/__tests__/integration/certification-flow.test.d.ts +5 -0
- package/dist/__tests__/integration/certification-flow.test.d.ts.map +1 -0
- package/dist/__tests__/integration/certification-flow.test.js +245 -0
- package/dist/__tests__/integration/certification-flow.test.js.map +1 -0
- package/dist/__tests__/integration/commands.test.d.ts +5 -0
- package/dist/__tests__/integration/commands.test.d.ts.map +1 -0
- package/dist/__tests__/integration/commands.test.js +93 -0
- package/dist/__tests__/integration/commands.test.js.map +1 -0
- package/dist/action/diff-mode.d.ts +34 -0
- package/dist/action/diff-mode.d.ts.map +1 -0
- package/dist/action/diff-mode.js +201 -0
- package/dist/action/diff-mode.js.map +1 -0
- package/dist/action/diff-mode.test.d.ts +5 -0
- package/dist/action/diff-mode.test.d.ts.map +1 -0
- package/dist/action/diff-mode.test.js +162 -0
- package/dist/action/diff-mode.test.js.map +1 -0
- package/dist/action/index.d.ts +10 -0
- package/dist/action/index.d.ts.map +1 -0
- package/dist/action/index.js +231 -0
- package/dist/action/index.js.map +1 -0
- package/dist/action/pr-comment.d.ts +30 -0
- package/dist/action/pr-comment.d.ts.map +1 -0
- package/dist/action/pr-comment.js +301 -0
- package/dist/action/pr-comment.js.map +1 -0
- package/dist/action/pr-comment.test.d.ts +5 -0
- package/dist/action/pr-comment.test.d.ts.map +1 -0
- package/dist/action/pr-comment.test.js +189 -0
- package/dist/action/pr-comment.test.js.map +1 -0
- package/dist/action/sarif-upload.d.ts +104 -0
- package/dist/action/sarif-upload.d.ts.map +1 -0
- package/dist/action/sarif-upload.js +188 -0
- package/dist/action/sarif-upload.js.map +1 -0
- package/dist/action/sarif-upload.test.d.ts +5 -0
- package/dist/action/sarif-upload.test.d.ts.map +1 -0
- package/dist/action/sarif-upload.test.js +206 -0
- package/dist/action/sarif-upload.test.js.map +1 -0
- package/dist/action/types.d.ts +104 -0
- package/dist/action/types.d.ts.map +1 -0
- package/dist/action/types.js +33 -0
- package/dist/action/types.js.map +1 -0
- package/dist/action/types.test.d.ts +5 -0
- package/dist/action/types.test.d.ts.map +1 -0
- package/dist/action/types.test.js +79 -0
- package/dist/action/types.test.js.map +1 -0
- package/dist/agents/agent-integrity.d.ts +111 -0
- package/dist/agents/agent-integrity.d.ts.map +1 -0
- package/dist/agents/agent-integrity.js +308 -0
- package/dist/agents/agent-integrity.js.map +1 -0
- package/dist/agents/agent-privacy.d.ts +68 -0
- package/dist/agents/agent-privacy.d.ts.map +1 -0
- package/dist/agents/agent-privacy.js +345 -0
- package/dist/agents/agent-privacy.js.map +1 -0
- package/dist/agents/exploit-chain.d.ts +64 -0
- package/dist/agents/exploit-chain.d.ts.map +1 -0
- package/dist/agents/exploit-chain.js +477 -0
- package/dist/agents/exploit-chain.js.map +1 -0
- package/dist/agents/exploit-chain.test.d.ts +5 -0
- package/dist/agents/exploit-chain.test.d.ts.map +1 -0
- package/dist/agents/exploit-chain.test.js +455 -0
- package/dist/agents/exploit-chain.test.js.map +1 -0
- package/dist/agents/index.d.ts +14 -0
- package/dist/agents/index.d.ts.map +1 -0
- package/dist/agents/index.js +19 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/logic-flaw-detector.d.ts +55 -0
- package/dist/agents/logic-flaw-detector.d.ts.map +1 -0
- package/dist/agents/logic-flaw-detector.js +454 -0
- package/dist/agents/logic-flaw-detector.js.map +1 -0
- package/dist/agents/zero-day-hunter.d.ts +69 -0
- package/dist/agents/zero-day-hunter.d.ts.map +1 -0
- package/dist/agents/zero-day-hunter.js +591 -0
- package/dist/agents/zero-day-hunter.js.map +1 -0
- package/dist/certification/artifacts.d.ts +21 -0
- package/dist/certification/artifacts.d.ts.map +1 -0
- package/dist/certification/artifacts.js +275 -0
- package/dist/certification/artifacts.js.map +1 -0
- package/dist/certification/autofix.d.ts +122 -0
- package/dist/certification/autofix.d.ts.map +1 -0
- package/dist/certification/autofix.js +476 -0
- package/dist/certification/autofix.js.map +1 -0
- package/dist/certification/badge.d.ts +56 -0
- package/dist/certification/badge.d.ts.map +1 -0
- package/dist/certification/badge.js +155 -0
- package/dist/certification/badge.js.map +1 -0
- package/dist/certification/cache.d.ts +121 -0
- package/dist/certification/cache.d.ts.map +1 -0
- package/dist/certification/cache.js +275 -0
- package/dist/certification/cache.js.map +1 -0
- package/dist/certification/cache.test.d.ts +5 -0
- package/dist/certification/cache.test.d.ts.map +1 -0
- package/dist/certification/cache.test.js +270 -0
- package/dist/certification/cache.test.js.map +1 -0
- package/dist/certification/consensus.d.ts +105 -0
- package/dist/certification/consensus.d.ts.map +1 -0
- package/dist/certification/consensus.js +353 -0
- package/dist/certification/consensus.js.map +1 -0
- package/dist/certification/consensus.test.d.ts +5 -0
- package/dist/certification/consensus.test.d.ts.map +1 -0
- package/dist/certification/consensus.test.js +342 -0
- package/dist/certification/consensus.test.js.map +1 -0
- package/dist/certification/index.d.ts +14 -0
- package/dist/certification/index.d.ts.map +1 -0
- package/dist/certification/index.js +14 -0
- package/dist/certification/index.js.map +1 -0
- package/dist/certification/rules.d.ts +89 -0
- package/dist/certification/rules.d.ts.map +1 -0
- package/dist/certification/rules.js +317 -0
- package/dist/certification/rules.js.map +1 -0
- package/dist/certification/sarif.d.ts +107 -0
- package/dist/certification/sarif.d.ts.map +1 -0
- package/dist/certification/sarif.js +191 -0
- package/dist/certification/sarif.js.map +1 -0
- package/dist/certification/store.d.ts +255 -0
- package/dist/certification/store.d.ts.map +1 -0
- package/dist/certification/store.js +835 -0
- package/dist/certification/store.js.map +1 -0
- package/dist/certification/store.test.d.ts +5 -0
- package/dist/certification/store.test.d.ts.map +1 -0
- package/dist/certification/store.test.js +468 -0
- package/dist/certification/store.test.js.map +1 -0
- package/dist/certification/summary.d.ts +72 -0
- package/dist/certification/summary.d.ts.map +1 -0
- package/dist/certification/summary.js +296 -0
- package/dist/certification/summary.js.map +1 -0
- package/dist/certification/types.d.ts +138 -0
- package/dist/certification/types.d.ts.map +1 -0
- package/dist/certification/types.js +34 -0
- package/dist/certification/types.js.map +1 -0
- package/dist/commands/audits/api-check.d.ts +3 -0
- package/dist/commands/audits/api-check.d.ts.map +1 -0
- package/dist/commands/audits/api-check.js +71 -0
- package/dist/commands/audits/api-check.js.map +1 -0
- package/dist/commands/audits/deadcode.d.ts +3 -0
- package/dist/commands/audits/deadcode.d.ts.map +1 -0
- package/dist/commands/audits/deadcode.js +63 -0
- package/dist/commands/audits/deadcode.js.map +1 -0
- package/dist/commands/audits/deps.d.ts +3 -0
- package/dist/commands/audits/deps.d.ts.map +1 -0
- package/dist/commands/audits/deps.js +56 -0
- package/dist/commands/audits/deps.js.map +1 -0
- package/dist/commands/audits/errors.d.ts +3 -0
- package/dist/commands/audits/errors.d.ts.map +1 -0
- package/dist/commands/audits/errors.js +65 -0
- package/dist/commands/audits/errors.js.map +1 -0
- package/dist/commands/audits/index.d.ts +3 -0
- package/dist/commands/audits/index.d.ts.map +1 -0
- package/dist/commands/audits/index.js +15 -0
- package/dist/commands/audits/index.js.map +1 -0
- package/dist/commands/audits/perf.d.ts +3 -0
- package/dist/commands/audits/perf.d.ts.map +1 -0
- package/dist/commands/audits/perf.js +85 -0
- package/dist/commands/audits/perf.js.map +1 -0
- package/dist/commands/audits/secrets.d.ts +3 -0
- package/dist/commands/audits/secrets.d.ts.map +1 -0
- package/dist/commands/audits/secrets.js +71 -0
- package/dist/commands/audits/secrets.js.map +1 -0
- package/dist/commands/certification/certify.d.ts +3 -0
- package/dist/commands/certification/certify.d.ts.map +1 -0
- package/dist/commands/certification/certify.js +108 -0
- package/dist/commands/certification/certify.js.map +1 -0
- package/dist/commands/certification/index.d.ts +3 -0
- package/dist/commands/certification/index.d.ts.map +1 -0
- package/dist/commands/certification/index.js +17 -0
- package/dist/commands/certification/index.js.map +1 -0
- package/dist/commands/certification/performance.d.ts +3 -0
- package/dist/commands/certification/performance.d.ts.map +1 -0
- package/dist/commands/certification/performance.js +89 -0
- package/dist/commands/certification/performance.js.map +1 -0
- package/dist/commands/certification/quality.d.ts +3 -0
- package/dist/commands/certification/quality.d.ts.map +1 -0
- package/dist/commands/certification/quality.js +92 -0
- package/dist/commands/certification/quality.js.map +1 -0
- package/dist/commands/certification/redteam.d.ts +3 -0
- package/dist/commands/certification/redteam.d.ts.map +1 -0
- package/dist/commands/certification/redteam.js +114 -0
- package/dist/commands/certification/redteam.js.map +1 -0
- package/dist/commands/certification/reliability.d.ts +3 -0
- package/dist/commands/certification/reliability.d.ts.map +1 -0
- package/dist/commands/certification/reliability.js +93 -0
- package/dist/commands/certification/reliability.js.map +1 -0
- package/dist/commands/certification/security.d.ts +3 -0
- package/dist/commands/certification/security.d.ts.map +1 -0
- package/dist/commands/certification/security.js +90 -0
- package/dist/commands/certification/security.js.map +1 -0
- package/dist/commands/certification/typesafety.d.ts +3 -0
- package/dist/commands/certification/typesafety.d.ts.map +1 -0
- package/dist/commands/certification/typesafety.js +87 -0
- package/dist/commands/certification/typesafety.js.map +1 -0
- package/dist/commands/core/add-tests.d.ts +3 -0
- package/dist/commands/core/add-tests.d.ts.map +1 -0
- package/dist/commands/core/add-tests.js +29 -0
- package/dist/commands/core/add-tests.js.map +1 -0
- package/dist/commands/core/audit.d.ts +3 -0
- package/dist/commands/core/audit.d.ts.map +1 -0
- package/dist/commands/core/audit.js +64 -0
- package/dist/commands/core/audit.js.map +1 -0
- package/dist/commands/core/fix-critical.d.ts +3 -0
- package/dist/commands/core/fix-critical.d.ts.map +1 -0
- package/dist/commands/core/fix-critical.js +22 -0
- package/dist/commands/core/fix-critical.js.map +1 -0
- package/dist/commands/core/fix-high.d.ts +3 -0
- package/dist/commands/core/fix-high.d.ts.map +1 -0
- package/dist/commands/core/fix-high.js +32 -0
- package/dist/commands/core/fix-high.js.map +1 -0
- package/dist/commands/core/fix-medium.d.ts +3 -0
- package/dist/commands/core/fix-medium.d.ts.map +1 -0
- package/dist/commands/core/fix-medium.js +29 -0
- package/dist/commands/core/fix-medium.js.map +1 -0
- package/dist/commands/core/fix-rls.d.ts +3 -0
- package/dist/commands/core/fix-rls.d.ts.map +1 -0
- package/dist/commands/core/fix-rls.js +17 -0
- package/dist/commands/core/fix-rls.js.map +1 -0
- package/dist/commands/core/harden.d.ts +3 -0
- package/dist/commands/core/harden.d.ts.map +1 -0
- package/dist/commands/core/harden.js +19 -0
- package/dist/commands/core/harden.js.map +1 -0
- package/dist/commands/core/index.d.ts +3 -0
- package/dist/commands/core/index.d.ts.map +1 -0
- package/dist/commands/core/index.js +21 -0
- package/dist/commands/core/index.js.map +1 -0
- package/dist/commands/core/preflight.d.ts +3 -0
- package/dist/commands/core/preflight.d.ts.map +1 -0
- package/dist/commands/core/preflight.js +50 -0
- package/dist/commands/core/preflight.js.map +1 -0
- package/dist/commands/core/verify.d.ts +3 -0
- package/dist/commands/core/verify.d.ts.map +1 -0
- package/dist/commands/core/verify.js +32 -0
- package/dist/commands/core/verify.js.map +1 -0
- package/dist/commands/index.d.ts +28 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +37 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/types.d.ts +9 -0
- package/dist/commands/types.d.ts.map +1 -0
- package/dist/commands/types.js +5 -0
- package/dist/commands/types.js.map +1 -0
- package/dist/compliance/cis.d.ts +29 -0
- package/dist/compliance/cis.d.ts.map +1 -0
- package/dist/compliance/cis.js +316 -0
- package/dist/compliance/cis.js.map +1 -0
- package/dist/compliance/frameworks/eu-ai-act.d.ts +55 -0
- package/dist/compliance/frameworks/eu-ai-act.d.ts.map +1 -0
- package/dist/compliance/frameworks/eu-ai-act.js +621 -0
- package/dist/compliance/frameworks/eu-ai-act.js.map +1 -0
- package/dist/compliance/frameworks/index.d.ts +67 -0
- package/dist/compliance/frameworks/index.d.ts.map +1 -0
- package/dist/compliance/frameworks/index.js +97 -0
- package/dist/compliance/frameworks/index.js.map +1 -0
- package/dist/compliance/frameworks/iso-42001.d.ts +59 -0
- package/dist/compliance/frameworks/iso-42001.d.ts.map +1 -0
- package/dist/compliance/frameworks/iso-42001.js +719 -0
- package/dist/compliance/frameworks/iso-42001.js.map +1 -0
- package/dist/compliance/frameworks/mitre-atlas.d.ts +58 -0
- package/dist/compliance/frameworks/mitre-atlas.d.ts.map +1 -0
- package/dist/compliance/frameworks/mitre-atlas.js +686 -0
- package/dist/compliance/frameworks/mitre-atlas.js.map +1 -0
- package/dist/compliance/frameworks/nist-ai-rmf.d.ts +51 -0
- package/dist/compliance/frameworks/nist-ai-rmf.d.ts.map +1 -0
- package/dist/compliance/frameworks/nist-ai-rmf.js +677 -0
- package/dist/compliance/frameworks/nist-ai-rmf.js.map +1 -0
- package/dist/compliance/frameworks/owasp-llm.d.ts +58 -0
- package/dist/compliance/frameworks/owasp-llm.d.ts.map +1 -0
- package/dist/compliance/frameworks/owasp-llm.js +399 -0
- package/dist/compliance/frameworks/owasp-llm.js.map +1 -0
- package/dist/compliance/gdpr.d.ts +34 -0
- package/dist/compliance/gdpr.d.ts.map +1 -0
- package/dist/compliance/gdpr.js +319 -0
- package/dist/compliance/gdpr.js.map +1 -0
- package/dist/compliance/hipaa.d.ts +29 -0
- package/dist/compliance/hipaa.d.ts.map +1 -0
- package/dist/compliance/hipaa.js +205 -0
- package/dist/compliance/hipaa.js.map +1 -0
- package/dist/compliance/index.d.ts +18 -0
- package/dist/compliance/index.d.ts.map +1 -0
- package/dist/compliance/index.js +26 -0
- package/dist/compliance/index.js.map +1 -0
- package/dist/compliance/iso27001.d.ts +30 -0
- package/dist/compliance/iso27001.d.ts.map +1 -0
- package/dist/compliance/iso27001.js +332 -0
- package/dist/compliance/iso27001.js.map +1 -0
- package/dist/compliance/mapper.d.ts +42 -0
- package/dist/compliance/mapper.d.ts.map +1 -0
- package/dist/compliance/mapper.js +269 -0
- package/dist/compliance/mapper.js.map +1 -0
- package/dist/compliance/mapper.test.d.ts +5 -0
- package/dist/compliance/mapper.test.d.ts.map +1 -0
- package/dist/compliance/mapper.test.js +360 -0
- package/dist/compliance/mapper.test.js.map +1 -0
- package/dist/compliance/pci-dss.d.ts +29 -0
- package/dist/compliance/pci-dss.d.ts.map +1 -0
- package/dist/compliance/pci-dss.js +247 -0
- package/dist/compliance/pci-dss.js.map +1 -0
- package/dist/compliance/report.d.ts +25 -0
- package/dist/compliance/report.d.ts.map +1 -0
- package/dist/compliance/report.js +254 -0
- package/dist/compliance/report.js.map +1 -0
- package/dist/compliance/report.test.d.ts +5 -0
- package/dist/compliance/report.test.d.ts.map +1 -0
- package/dist/compliance/report.test.js +128 -0
- package/dist/compliance/report.test.js.map +1 -0
- package/dist/compliance/soc2.d.ts +30 -0
- package/dist/compliance/soc2.d.ts.map +1 -0
- package/dist/compliance/soc2.js +262 -0
- package/dist/compliance/soc2.js.map +1 -0
- package/dist/compliance/soc2.test.d.ts +5 -0
- package/dist/compliance/soc2.test.d.ts.map +1 -0
- package/dist/compliance/soc2.test.js +86 -0
- package/dist/compliance/soc2.test.js.map +1 -0
- package/dist/compliance/types.d.ts +125 -0
- package/dist/compliance/types.d.ts.map +1 -0
- package/dist/compliance/types.js +10 -0
- package/dist/compliance/types.js.map +1 -0
- package/dist/config/flags.d.ts +456 -0
- package/dist/config/flags.d.ts.map +1 -0
- package/dist/config/flags.js +464 -0
- package/dist/config/flags.js.map +1 -0
- package/dist/config/index.d.ts +10 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +10 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/severity-overrides.d.ts +209 -0
- package/dist/config/severity-overrides.d.ts.map +1 -0
- package/dist/config/severity-overrides.js +380 -0
- package/dist/config/severity-overrides.js.map +1 -0
- package/dist/cost/index.d.ts +11 -0
- package/dist/cost/index.d.ts.map +1 -0
- package/dist/cost/index.js +12 -0
- package/dist/cost/index.js.map +1 -0
- package/dist/cost/pricing.d.ts +57 -0
- package/dist/cost/pricing.d.ts.map +1 -0
- package/dist/cost/pricing.js +196 -0
- package/dist/cost/pricing.js.map +1 -0
- package/dist/cost/pricing.test.d.ts +5 -0
- package/dist/cost/pricing.test.d.ts.map +1 -0
- package/dist/cost/pricing.test.js +195 -0
- package/dist/cost/pricing.test.js.map +1 -0
- package/dist/cost/tracker.d.ts +100 -0
- package/dist/cost/tracker.d.ts.map +1 -0
- package/dist/cost/tracker.js +366 -0
- package/dist/cost/tracker.js.map +1 -0
- package/dist/cost/tracker.test.d.ts +5 -0
- package/dist/cost/tracker.test.d.ts.map +1 -0
- package/dist/cost/tracker.test.js +360 -0
- package/dist/cost/tracker.test.js.map +1 -0
- package/dist/cost/types.d.ts +135 -0
- package/dist/cost/types.d.ts.map +1 -0
- package/dist/cost/types.js +9 -0
- package/dist/cost/types.js.map +1 -0
- package/dist/enterprise/auth/oidc.d.ts +231 -0
- package/dist/enterprise/auth/oidc.d.ts.map +1 -0
- package/dist/enterprise/auth/oidc.js +372 -0
- package/dist/enterprise/auth/oidc.js.map +1 -0
- package/dist/enterprise/auth/oidc.test.d.ts +5 -0
- package/dist/enterprise/auth/oidc.test.d.ts.map +1 -0
- package/dist/enterprise/auth/oidc.test.js +435 -0
- package/dist/enterprise/auth/oidc.test.js.map +1 -0
- package/dist/enterprise/index.d.ts +14 -0
- package/dist/enterprise/index.d.ts.map +1 -0
- package/dist/enterprise/index.js +19 -0
- package/dist/enterprise/index.js.map +1 -0
- package/dist/enterprise/integrations/chat.d.ts +205 -0
- package/dist/enterprise/integrations/chat.d.ts.map +1 -0
- package/dist/enterprise/integrations/chat.js +624 -0
- package/dist/enterprise/integrations/chat.js.map +1 -0
- package/dist/enterprise/integrations/chat.test.d.ts +5 -0
- package/dist/enterprise/integrations/chat.test.d.ts.map +1 -0
- package/dist/enterprise/integrations/chat.test.js +557 -0
- package/dist/enterprise/integrations/chat.test.js.map +1 -0
- package/dist/enterprise/integrations/ticketing.d.ts +257 -0
- package/dist/enterprise/integrations/ticketing.d.ts.map +1 -0
- package/dist/enterprise/integrations/ticketing.js +548 -0
- package/dist/enterprise/integrations/ticketing.js.map +1 -0
- package/dist/enterprise/integrations/ticketing.test.d.ts +5 -0
- package/dist/enterprise/integrations/ticketing.test.d.ts.map +1 -0
- package/dist/enterprise/integrations/ticketing.test.js +693 -0
- package/dist/enterprise/integrations/ticketing.test.js.map +1 -0
- package/dist/enterprise/policy/opa.d.ts +194 -0
- package/dist/enterprise/policy/opa.d.ts.map +1 -0
- package/dist/enterprise/policy/opa.js +385 -0
- package/dist/enterprise/policy/opa.js.map +1 -0
- package/dist/enterprise/policy/opa.test.d.ts +5 -0
- package/dist/enterprise/policy/opa.test.d.ts.map +1 -0
- package/dist/enterprise/policy/opa.test.js +702 -0
- package/dist/enterprise/policy/opa.test.js.map +1 -0
- package/dist/enterprise/signing/kms.d.ts +211 -0
- package/dist/enterprise/signing/kms.d.ts.map +1 -0
- package/dist/enterprise/signing/kms.js +480 -0
- package/dist/enterprise/signing/kms.js.map +1 -0
- package/dist/enterprise/signing/kms.test.d.ts +5 -0
- package/dist/enterprise/signing/kms.test.d.ts.map +1 -0
- package/dist/enterprise/signing/kms.test.js +511 -0
- package/dist/enterprise/signing/kms.test.js.map +1 -0
- package/dist/eval/fixtures.d.ts +58 -0
- package/dist/eval/fixtures.d.ts.map +1 -0
- package/dist/eval/fixtures.js +571 -0
- package/dist/eval/fixtures.js.map +1 -0
- package/dist/eval/fixtures.test.d.ts +5 -0
- package/dist/eval/fixtures.test.d.ts.map +1 -0
- package/dist/eval/fixtures.test.js +193 -0
- package/dist/eval/fixtures.test.js.map +1 -0
- package/dist/eval/harness.d.ts +30 -0
- package/dist/eval/harness.d.ts.map +1 -0
- package/dist/eval/harness.js +221 -0
- package/dist/eval/harness.js.map +1 -0
- package/dist/eval/harness.test.d.ts +5 -0
- package/dist/eval/harness.test.d.ts.map +1 -0
- package/dist/eval/harness.test.js +314 -0
- package/dist/eval/harness.test.js.map +1 -0
- package/dist/eval/index.d.ts +15 -0
- package/dist/eval/index.d.ts.map +1 -0
- package/dist/eval/index.js +18 -0
- package/dist/eval/index.js.map +1 -0
- package/dist/eval/metrics.d.ts +56 -0
- package/dist/eval/metrics.d.ts.map +1 -0
- package/dist/eval/metrics.js +298 -0
- package/dist/eval/metrics.js.map +1 -0
- package/dist/eval/metrics.test.d.ts +5 -0
- package/dist/eval/metrics.test.d.ts.map +1 -0
- package/dist/eval/metrics.test.js +426 -0
- package/dist/eval/metrics.test.js.map +1 -0
- package/dist/eval/report.d.ts +30 -0
- package/dist/eval/report.d.ts.map +1 -0
- package/dist/eval/report.js +333 -0
- package/dist/eval/report.js.map +1 -0
- package/dist/eval/report.test.d.ts +5 -0
- package/dist/eval/report.test.d.ts.map +1 -0
- package/dist/eval/report.test.js +275 -0
- package/dist/eval/report.test.js.map +1 -0
- package/dist/eval/types.d.ts +234 -0
- package/dist/eval/types.d.ts.map +1 -0
- package/dist/eval/types.js +27 -0
- package/dist/eval/types.js.map +1 -0
- package/dist/http-server.d.ts +3 -0
- package/dist/http-server.d.ts.map +1 -0
- package/dist/http-server.js +127 -0
- package/dist/http-server.js.map +1 -0
- package/dist/index.d.ts +33 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4120 -0
- package/dist/index.js.map +1 -0
- package/dist/logger.d.ts +46 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +131 -0
- package/dist/logger.js.map +1 -0
- package/dist/multimodel/consensus.d.ts +49 -0
- package/dist/multimodel/consensus.d.ts.map +1 -0
- package/dist/multimodel/consensus.js +454 -0
- package/dist/multimodel/consensus.js.map +1 -0
- package/dist/multimodel/consensus.test.d.ts +5 -0
- package/dist/multimodel/consensus.test.d.ts.map +1 -0
- package/dist/multimodel/consensus.test.js +415 -0
- package/dist/multimodel/consensus.test.js.map +1 -0
- package/dist/multimodel/index.d.ts +13 -0
- package/dist/multimodel/index.d.ts.map +1 -0
- package/dist/multimodel/index.js +14 -0
- package/dist/multimodel/index.js.map +1 -0
- package/dist/multimodel/runner.d.ts +95 -0
- package/dist/multimodel/runner.d.ts.map +1 -0
- package/dist/multimodel/runner.js +312 -0
- package/dist/multimodel/runner.js.map +1 -0
- package/dist/multimodel/runner.test.d.ts +5 -0
- package/dist/multimodel/runner.test.d.ts.map +1 -0
- package/dist/multimodel/runner.test.js +224 -0
- package/dist/multimodel/runner.test.js.map +1 -0
- package/dist/multimodel/types.d.ts +202 -0
- package/dist/multimodel/types.d.ts.map +1 -0
- package/dist/multimodel/types.js +10 -0
- package/dist/multimodel/types.js.map +1 -0
- package/dist/observability/index.d.ts +9 -0
- package/dist/observability/index.d.ts.map +1 -0
- package/dist/observability/index.js +9 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/observability/otel.d.ts +102 -0
- package/dist/observability/otel.d.ts.map +1 -0
- package/dist/observability/otel.js +284 -0
- package/dist/observability/otel.js.map +1 -0
- package/dist/plugins/index.d.ts +10 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +10 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/loader.d.ts +78 -0
- package/dist/plugins/loader.d.ts.map +1 -0
- package/dist/plugins/loader.js +470 -0
- package/dist/plugins/loader.js.map +1 -0
- package/dist/plugins/types.d.ts +304 -0
- package/dist/plugins/types.d.ts.map +1 -0
- package/dist/plugins/types.js +100 -0
- package/dist/plugins/types.js.map +1 -0
- package/dist/sbom/cyclonedx.d.ts +30 -0
- package/dist/sbom/cyclonedx.d.ts.map +1 -0
- package/dist/sbom/cyclonedx.js +392 -0
- package/dist/sbom/cyclonedx.js.map +1 -0
- package/dist/sbom/cyclonedx.test.d.ts +5 -0
- package/dist/sbom/cyclonedx.test.d.ts.map +1 -0
- package/dist/sbom/cyclonedx.test.js +244 -0
- package/dist/sbom/cyclonedx.test.js.map +1 -0
- package/dist/sbom/index.d.ts +13 -0
- package/dist/sbom/index.d.ts.map +1 -0
- package/dist/sbom/index.js +15 -0
- package/dist/sbom/index.js.map +1 -0
- package/dist/sbom/provenance.d.ts +37 -0
- package/dist/sbom/provenance.d.ts.map +1 -0
- package/dist/sbom/provenance.js +268 -0
- package/dist/sbom/provenance.js.map +1 -0
- package/dist/sbom/provenance.test.d.ts +5 -0
- package/dist/sbom/provenance.test.d.ts.map +1 -0
- package/dist/sbom/provenance.test.js +189 -0
- package/dist/sbom/provenance.test.js.map +1 -0
- package/dist/sbom/signing.d.ts +87 -0
- package/dist/sbom/signing.d.ts.map +1 -0
- package/dist/sbom/signing.js +354 -0
- package/dist/sbom/signing.js.map +1 -0
- package/dist/sbom/signing.test.d.ts +5 -0
- package/dist/sbom/signing.test.d.ts.map +1 -0
- package/dist/sbom/signing.test.js +170 -0
- package/dist/sbom/signing.test.js.map +1 -0
- package/dist/sbom/types.d.ts +384 -0
- package/dist/sbom/types.d.ts.map +1 -0
- package/dist/sbom/types.js +17 -0
- package/dist/sbom/types.js.map +1 -0
- package/dist/scanners/agent/credential-scope-audit.d.ts +40 -0
- package/dist/scanners/agent/credential-scope-audit.d.ts.map +1 -0
- package/dist/scanners/agent/credential-scope-audit.js +404 -0
- package/dist/scanners/agent/credential-scope-audit.js.map +1 -0
- package/dist/scanners/agent/exfil-path-graph.d.ts +50 -0
- package/dist/scanners/agent/exfil-path-graph.d.ts.map +1 -0
- package/dist/scanners/agent/exfil-path-graph.js +764 -0
- package/dist/scanners/agent/exfil-path-graph.js.map +1 -0
- package/dist/scanners/agent/index.d.ts +43 -0
- package/dist/scanners/agent/index.d.ts.map +1 -0
- package/dist/scanners/agent/index.js +616 -0
- package/dist/scanners/agent/index.js.map +1 -0
- package/dist/scanners/agent/manifest-audit.d.ts +43 -0
- package/dist/scanners/agent/manifest-audit.d.ts.map +1 -0
- package/dist/scanners/agent/manifest-audit.js +403 -0
- package/dist/scanners/agent/manifest-audit.js.map +1 -0
- package/dist/scanners/agent/payloads/index.d.ts +44 -0
- package/dist/scanners/agent/payloads/index.d.ts.map +1 -0
- package/dist/scanners/agent/payloads/index.js +184 -0
- package/dist/scanners/agent/payloads/index.js.map +1 -0
- package/dist/scanners/agent/permission-minimiser.d.ts +48 -0
- package/dist/scanners/agent/permission-minimiser.d.ts.map +1 -0
- package/dist/scanners/agent/permission-minimiser.js +551 -0
- package/dist/scanners/agent/permission-minimiser.js.map +1 -0
- package/dist/scanners/agent/prompt-injection-fuzzer.d.ts +39 -0
- package/dist/scanners/agent/prompt-injection-fuzzer.d.ts.map +1 -0
- package/dist/scanners/agent/prompt-injection-fuzzer.js +720 -0
- package/dist/scanners/agent/prompt-injection-fuzzer.js.map +1 -0
- package/dist/scanners/agent/sandbox-audit.d.ts +44 -0
- package/dist/scanners/agent/sandbox-audit.d.ts.map +1 -0
- package/dist/scanners/agent/sandbox-audit.js +425 -0
- package/dist/scanners/agent/sandbox-audit.js.map +1 -0
- package/dist/scanners/agent/supply-chain-mcp.d.ts +53 -0
- package/dist/scanners/agent/supply-chain-mcp.d.ts.map +1 -0
- package/dist/scanners/agent/supply-chain-mcp.js +479 -0
- package/dist/scanners/agent/supply-chain-mcp.js.map +1 -0
- package/dist/scanners/agent/tool-description-drift.d.ts +62 -0
- package/dist/scanners/agent/tool-description-drift.d.ts.map +1 -0
- package/dist/scanners/agent/tool-description-drift.js +365 -0
- package/dist/scanners/agent/tool-description-drift.js.map +1 -0
- package/dist/scanners/agent/types.d.ts +840 -0
- package/dist/scanners/agent/types.d.ts.map +1 -0
- package/dist/scanners/agent/types.js +149 -0
- package/dist/scanners/agent/types.js.map +1 -0
- package/dist/scanners/bandit.d.ts +25 -0
- package/dist/scanners/bandit.d.ts.map +1 -0
- package/dist/scanners/bandit.js +129 -0
- package/dist/scanners/bandit.js.map +1 -0
- package/dist/scanners/binary-analysis.d.ts +41 -0
- package/dist/scanners/binary-analysis.d.ts.map +1 -0
- package/dist/scanners/binary-analysis.js +587 -0
- package/dist/scanners/binary-analysis.js.map +1 -0
- package/dist/scanners/binary-analysis.test.d.ts +5 -0
- package/dist/scanners/binary-analysis.test.d.ts.map +1 -0
- package/dist/scanners/binary-analysis.test.js +291 -0
- package/dist/scanners/binary-analysis.test.js.map +1 -0
- package/dist/scanners/brakeman.d.ts +30 -0
- package/dist/scanners/brakeman.d.ts.map +1 -0
- package/dist/scanners/brakeman.js +271 -0
- package/dist/scanners/brakeman.js.map +1 -0
- package/dist/scanners/dependencies.d.ts +22 -0
- package/dist/scanners/dependencies.d.ts.map +1 -0
- package/dist/scanners/dependencies.js +202 -0
- package/dist/scanners/dependencies.js.map +1 -0
- package/dist/scanners/dependencies.test.d.ts +5 -0
- package/dist/scanners/dependencies.test.d.ts.map +1 -0
- package/dist/scanners/dependencies.test.js +185 -0
- package/dist/scanners/dependencies.test.js.map +1 -0
- package/dist/scanners/eslint.d.ts +25 -0
- package/dist/scanners/eslint.d.ts.map +1 -0
- package/dist/scanners/eslint.js +220 -0
- package/dist/scanners/eslint.js.map +1 -0
- package/dist/scanners/gosec.d.ts +25 -0
- package/dist/scanners/gosec.d.ts.map +1 -0
- package/dist/scanners/gosec.js +128 -0
- package/dist/scanners/gosec.js.map +1 -0
- package/dist/scanners/index.d.ts +128 -0
- package/dist/scanners/index.d.ts.map +1 -0
- package/dist/scanners/index.js +811 -0
- package/dist/scanners/index.js.map +1 -0
- package/dist/scanners/index.test.d.ts +5 -0
- package/dist/scanners/index.test.d.ts.map +1 -0
- package/dist/scanners/index.test.js +424 -0
- package/dist/scanners/index.test.js.map +1 -0
- package/dist/scanners/memory-safety.d.ts +44 -0
- package/dist/scanners/memory-safety.d.ts.map +1 -0
- package/dist/scanners/memory-safety.js +571 -0
- package/dist/scanners/memory-safety.js.map +1 -0
- package/dist/scanners/memory-safety.test.d.ts +5 -0
- package/dist/scanners/memory-safety.test.d.ts.map +1 -0
- package/dist/scanners/memory-safety.test.js +321 -0
- package/dist/scanners/memory-safety.test.js.map +1 -0
- package/dist/scanners/race-condition.d.ts +25 -0
- package/dist/scanners/race-condition.d.ts.map +1 -0
- package/dist/scanners/race-condition.js +443 -0
- package/dist/scanners/race-condition.js.map +1 -0
- package/dist/scanners/race-condition.test.d.ts +5 -0
- package/dist/scanners/race-condition.test.d.ts.map +1 -0
- package/dist/scanners/race-condition.test.js +428 -0
- package/dist/scanners/race-condition.test.js.map +1 -0
- package/dist/scanners/secrets.d.ts +25 -0
- package/dist/scanners/secrets.d.ts.map +1 -0
- package/dist/scanners/secrets.js +367 -0
- package/dist/scanners/secrets.js.map +1 -0
- package/dist/scanners/secrets.test.d.ts +5 -0
- package/dist/scanners/secrets.test.d.ts.map +1 -0
- package/dist/scanners/secrets.test.js +160 -0
- package/dist/scanners/secrets.test.js.map +1 -0
- package/dist/scanners/semgrep.d.ts +33 -0
- package/dist/scanners/semgrep.d.ts.map +1 -0
- package/dist/scanners/semgrep.js +350 -0
- package/dist/scanners/semgrep.js.map +1 -0
- package/dist/scanners/semgrep.test.d.ts +8 -0
- package/dist/scanners/semgrep.test.d.ts.map +1 -0
- package/dist/scanners/semgrep.test.js +254 -0
- package/dist/scanners/semgrep.test.js.map +1 -0
- package/dist/scanners/trivy.d.ts +26 -0
- package/dist/scanners/trivy.d.ts.map +1 -0
- package/dist/scanners/trivy.js +187 -0
- package/dist/scanners/trivy.js.map +1 -0
- package/dist/scanners/types.d.ts +210 -0
- package/dist/scanners/types.d.ts.map +1 -0
- package/dist/scanners/types.js +106 -0
- package/dist/scanners/types.js.map +1 -0
- package/dist/scanners/types.test.d.ts +5 -0
- package/dist/scanners/types.test.d.ts.map +1 -0
- package/dist/scanners/types.test.js +103 -0
- package/dist/scanners/types.test.js.map +1 -0
- package/dist/scanners/typescript.d.ts +32 -0
- package/dist/scanners/typescript.d.ts.map +1 -0
- package/dist/scanners/typescript.js +300 -0
- package/dist/scanners/typescript.js.map +1 -0
- package/dist/scanners/typescript.test.d.ts +5 -0
- package/dist/scanners/typescript.test.d.ts.map +1 -0
- package/dist/scanners/typescript.test.js +296 -0
- package/dist/scanners/typescript.test.js.map +1 -0
- package/dist/transcripts/index.d.ts +13 -0
- package/dist/transcripts/index.d.ts.map +1 -0
- package/dist/transcripts/index.js +17 -0
- package/dist/transcripts/index.js.map +1 -0
- package/dist/transcripts/logger.d.ts +190 -0
- package/dist/transcripts/logger.d.ts.map +1 -0
- package/dist/transcripts/logger.js +385 -0
- package/dist/transcripts/logger.js.map +1 -0
- package/dist/transcripts/logger.test.d.ts +5 -0
- package/dist/transcripts/logger.test.d.ts.map +1 -0
- package/dist/transcripts/logger.test.js +227 -0
- package/dist/transcripts/logger.test.js.map +1 -0
- package/dist/transcripts/redaction.d.ts +125 -0
- package/dist/transcripts/redaction.d.ts.map +1 -0
- package/dist/transcripts/redaction.js +416 -0
- package/dist/transcripts/redaction.js.map +1 -0
- package/dist/transcripts/redaction.test.d.ts +5 -0
- package/dist/transcripts/redaction.test.d.ts.map +1 -0
- package/dist/transcripts/redaction.test.js +267 -0
- package/dist/transcripts/redaction.test.js.map +1 -0
- package/dist/transcripts/signing.d.ts +108 -0
- package/dist/transcripts/signing.d.ts.map +1 -0
- package/dist/transcripts/signing.js +173 -0
- package/dist/transcripts/signing.js.map +1 -0
- package/dist/transcripts/verifier.d.ts +133 -0
- package/dist/transcripts/verifier.d.ts.map +1 -0
- package/dist/transcripts/verifier.js +489 -0
- package/dist/transcripts/verifier.js.map +1 -0
- package/dist/transcripts/verifier.test.d.ts +5 -0
- package/dist/transcripts/verifier.test.d.ts.map +1 -0
- package/dist/transcripts/verifier.test.js +330 -0
- package/dist/transcripts/verifier.test.js.map +1 -0
- package/dist/util/concurrency.d.ts +221 -0
- package/dist/util/concurrency.d.ts.map +1 -0
- package/dist/util/concurrency.js +339 -0
- package/dist/util/concurrency.js.map +1 -0
- package/dist/util/index.d.ts +12 -0
- package/dist/util/index.d.ts.map +1 -0
- package/dist/util/index.js +12 -0
- package/dist/util/index.js.map +1 -0
- package/dist/util/json.d.ts +63 -0
- package/dist/util/json.d.ts.map +1 -0
- package/dist/util/json.js +134 -0
- package/dist/util/json.js.map +1 -0
- package/dist/util/paths.d.ts +56 -0
- package/dist/util/paths.d.ts.map +1 -0
- package/dist/util/paths.js +128 -0
- package/dist/util/paths.js.map +1 -0
- package/dist/util/retry.d.ts +185 -0
- package/dist/util/retry.d.ts.map +1 -0
- package/dist/util/retry.js +338 -0
- package/dist/util/retry.js.map +1 -0
- package/package.json +79 -0
package/README.md
ADDED
|
@@ -0,0 +1,809 @@
|
|
|
1
|
+
# Vaspera Hardening MCP Server
|
|
2
|
+
|
|
3
|
+
Enterprise-grade security certification for codebases **and AI agent systems** with deterministic scanners, LLM-powered analysis, and signed attestations.
|
|
4
|
+
|
|
5
|
+

|
|
6
|
+

|
|
7
|
+

|
|
8
|
+

|
|
9
|
+

|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## What's New in v2.5.0
|
|
14
|
+
|
|
15
|
+
### Mythos-Class Security Scanners 🔬
|
|
16
|
+
Three new deep-analysis scanners for low-level security vulnerabilities:
|
|
17
|
+
|
|
18
|
+
| Scanner | Focus | Detection |
|
|
19
|
+
|---------|-------|-----------|
|
|
20
|
+
| **binary-analysis** | Native modules, FFI | Missing RELRO/NX/PIE/CANARY, dangerous imports |
|
|
21
|
+
| **memory-safety** | C/C++/Rust memory bugs | Buffer overflow, use-after-free, double-free |
|
|
22
|
+
| **race-condition** | Concurrency bugs | TOCTOU, data races, lock issues |
|
|
23
|
+
|
|
24
|
+
**Binary Analysis** detects:
|
|
25
|
+
- Node.js native addons (binding.gyp, *.node)
|
|
26
|
+
- Shared libraries without stack protection
|
|
27
|
+
- Rust FFI boundaries and Go CGO usage
|
|
28
|
+
- Disabled FORTIFY_SOURCE
|
|
29
|
+
|
|
30
|
+
**Memory Safety** detects:
|
|
31
|
+
- Dangerous C functions: `strcpy`, `sprintf`, `gets`, `strcat`
|
|
32
|
+
- Buffer overflows (CWE-120, CWE-787)
|
|
33
|
+
- Use-after-free (CWE-416), double-free (CWE-415)
|
|
34
|
+
- Rust `unsafe` blocks with `transmute`
|
|
35
|
+
|
|
36
|
+
**Race Conditions** detects:
|
|
37
|
+
- TOCTOU (time-of-check-time-of-use) patterns
|
|
38
|
+
- Go goroutine data races
|
|
39
|
+
- Python threading with shared state
|
|
40
|
+
- Java check-then-act anti-patterns
|
|
41
|
+
|
|
42
|
+
### Semantic AI Agents 🧠
|
|
43
|
+
Three new AI-powered agents for deep code analysis:
|
|
44
|
+
|
|
45
|
+
| Agent | Focus | Capability |
|
|
46
|
+
|-------|-------|------------|
|
|
47
|
+
| **zero-day-hunter** | Novel vulnerabilities | Logic flaws, auth bypasses, crypto weaknesses |
|
|
48
|
+
| **logic-flaw-detector** | Business logic bugs | State inconsistencies, trust boundary issues |
|
|
49
|
+
| **exploit-chain** | Attack paths | Chains multiple findings into attack scenarios |
|
|
50
|
+
|
|
51
|
+
**Exploit Chain Analyzer** automatically:
|
|
52
|
+
- Chains vulnerabilities: Info disclosure → RCE, SSRF → Internal API
|
|
53
|
+
- Calculates severity escalation (medium + medium = critical)
|
|
54
|
+
- Maps to MITRE ATT&CK techniques
|
|
55
|
+
- Generates attack scenario narratives
|
|
56
|
+
|
|
57
|
+
### New MCP Tools
|
|
58
|
+
```
|
|
59
|
+
certification_scan_binary # Scan native modules and binaries
|
|
60
|
+
certification_semantic_analysis # AI-powered code analysis
|
|
61
|
+
certification_analyze_chains # Analyze finding chains
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## What's New in v2.3.0
|
|
67
|
+
|
|
68
|
+
### Agent & MCP Security Certification 🤖
|
|
69
|
+
First-mover capability for certifying AI agent systems and MCP servers:
|
|
70
|
+
|
|
71
|
+
- **Prompt Injection Fuzzer** - 200+ payloads to test tool inputs for injection vulnerabilities
|
|
72
|
+
- **Exfiltration Path Analysis** - Graph-based detection of secret→network data flow paths
|
|
73
|
+
- **Tool Description Drift** - Detect silent changes to MCP tool definitions (rug-pull detection)
|
|
74
|
+
- **Permission Minimizer** - Analyze traces to recommend least-privilege permissions
|
|
75
|
+
- **Sandbox Audit** - Verify tools don't escape declared execution boundaries
|
|
76
|
+
- **Credential Scope Audit** - Flag over-scoped tokens (GitHub PATs, AWS IAM, etc.)
|
|
77
|
+
|
|
78
|
+
### AI Compliance Frameworks 📋
|
|
79
|
+
Five new AI-specific compliance frameworks:
|
|
80
|
+
|
|
81
|
+
| Framework | Controls | Use Case |
|
|
82
|
+
|-----------|----------|----------|
|
|
83
|
+
| **OWASP LLM Top 10** | 10 | AI application security |
|
|
84
|
+
| **NIST AI RMF** | 33 | Federal AI governance |
|
|
85
|
+
| **MITRE ATLAS** | 34 | AI threat modeling |
|
|
86
|
+
| **EU AI Act** | 33 | European AI regulation |
|
|
87
|
+
| **ISO/IEC 42001** | 38 | AI management systems |
|
|
88
|
+
|
|
89
|
+
### Signed Transcripts & Attestations ✍️
|
|
90
|
+
Tamper-evident audit trails for AI agent sessions:
|
|
91
|
+
|
|
92
|
+
- **Merkle Chain Integrity** - Cryptographically linked entries for tamper detection
|
|
93
|
+
- **Sigstore Signing** - Keyless signatures via Fulcio + Rekor transparency log
|
|
94
|
+
- **in-toto Provenance** - SLSA-compatible attestation statements
|
|
95
|
+
- **PII Redaction** - 12+ detection patterns (SSN, credit cards, API keys, JWTs)
|
|
96
|
+
|
|
97
|
+
### Enterprise Integrations 🏢
|
|
98
|
+
Production-ready integrations for large deployments:
|
|
99
|
+
|
|
100
|
+
- **OIDC SSO** - Okta, Auth0, Azure AD, Google with SCIM provisioning
|
|
101
|
+
- **OPA Policy Engine** - Rego policy evaluation for certification gates
|
|
102
|
+
- **Ticketing** - Jira, ServiceNow, Linear automatic issue creation
|
|
103
|
+
- **Chat Notifications** - Slack, Teams, Discord with rich certification cards
|
|
104
|
+
- **KMS Signing** - AWS KMS, GCP KMS, HashiCorp Vault for air-gapped deployments
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## What's New in v2.1.0
|
|
109
|
+
|
|
110
|
+
### Auto-Detect Languages
|
|
111
|
+
Automatically detect project languages and enable appropriate scanners:
|
|
112
|
+
- **certification_detect_languages** - Detect JS, Python, Go, Ruby, Java, Docker, Terraform
|
|
113
|
+
- **auto_detect mode** - Pass `auto_detect: true` to `certification_scan`
|
|
114
|
+
- **Smart scanner selection** - Enables Bandit for Python, Gosec for Go, Brakeman for Ruby, etc.
|
|
115
|
+
|
|
116
|
+
### Brakeman Scanner (Ruby on Rails)
|
|
117
|
+
Complete Ruby security scanning with Brakeman:
|
|
118
|
+
- **SQL injection** - ActiveRecord query analysis
|
|
119
|
+
- **XSS** - Cross-site scripting in views
|
|
120
|
+
- **CSRF** - Cross-site request forgery detection
|
|
121
|
+
- **Mass assignment** - Dangerous model updates
|
|
122
|
+
- **Remote code execution** - eval, system, backticks
|
|
123
|
+
- **CWE mappings** - All findings mapped to CWE identifiers
|
|
124
|
+
|
|
125
|
+
### GDPR Compliance Framework
|
|
126
|
+
Full GDPR compliance mapping with 30+ controls:
|
|
127
|
+
- **Principles (Art. 5)** - Lawfulness, purpose limitation, data minimization
|
|
128
|
+
- **Data Protection by Design (Art. 25)** - Privacy by default
|
|
129
|
+
- **Security of Processing (Art. 32)** - Encryption, integrity, availability
|
|
130
|
+
- **Breach Notification (Art. 33-34)** - Incident response requirements
|
|
131
|
+
- **Control mapping** - Automatic finding-to-control linking
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## What's New in v2.0.1
|
|
136
|
+
|
|
137
|
+
### Batch Auto-Fix
|
|
138
|
+
- **autofix_batch** - Apply all safe fixes at once with dry-run support
|
|
139
|
+
- **16 fix patterns** - IDOR, rate limiting, CSRF, cookies, SQL injection, XSS, and more
|
|
140
|
+
|
|
141
|
+
### Scanner Install Helper
|
|
142
|
+
- **certification_install_scanners** - Platform-specific install commands
|
|
143
|
+
- **run_install option** - Execute installation with confirmation
|
|
144
|
+
- **macOS/Linux/Windows** - Automatic platform detection
|
|
145
|
+
|
|
146
|
+
### SBOM Improvements
|
|
147
|
+
- **output_file** - Write SBOM directly to file
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
## What's New in v2.0.0
|
|
152
|
+
|
|
153
|
+
### Cost Tracking
|
|
154
|
+
Track and control LLM API costs across certifications:
|
|
155
|
+
- **Token counting** - Track input/output tokens per model
|
|
156
|
+
- **Budget limits** - Set cost budgets with automatic abort
|
|
157
|
+
- **Cost estimation** - Estimate costs before running
|
|
158
|
+
- **13 models supported** - Claude, GPT-4, Gemini pricing
|
|
159
|
+
|
|
160
|
+
### Consensus Aggregation
|
|
161
|
+
Aggregate findings from multiple runs for higher confidence:
|
|
162
|
+
- **Record findings** - From external agent runs (Claude, GPT, Gemini, etc.)
|
|
163
|
+
- **Disagreement detection** - Flag when runs produce conflicting results
|
|
164
|
+
- **Fleiss' kappa reliability** - Statistical inter-rater agreement
|
|
165
|
+
- **Weighted consensus** - Configurable weights per source
|
|
166
|
+
|
|
167
|
+
*Note: These tools aggregate results from external runs. They do not call LLM APIs directly.*
|
|
168
|
+
|
|
169
|
+
### Compliance Mapping
|
|
170
|
+
Map findings to enterprise compliance frameworks:
|
|
171
|
+
- **SOC 2 Type II** - All Trust Service Criteria
|
|
172
|
+
- **ISO 27001** - Annex A controls
|
|
173
|
+
- **PCI-DSS v4.0** - Payment card security
|
|
174
|
+
- **HIPAA** - Healthcare data protection
|
|
175
|
+
- **GDPR** - EU data protection (v2.1.0)
|
|
176
|
+
- **CIS Controls** - Security best practices
|
|
177
|
+
- **Control status** - Compliant/At-Risk/Non-Compliant
|
|
178
|
+
- **Gap analysis** - Identify missing controls
|
|
179
|
+
|
|
180
|
+
### SBOM & Provenance
|
|
181
|
+
Software Bill of Materials and supply chain security:
|
|
182
|
+
- **CycloneDX SBOM** - Dependency inventory
|
|
183
|
+
- **SLSA Provenance** - Build attestation
|
|
184
|
+
- **Sigstore signing** - Real cryptographic signing via Fulcio + Rekor
|
|
185
|
+
|
|
186
|
+
*Signing requires OIDC identity (GitHub Actions, GitLab CI, or SIGSTORE_ID_TOKEN).*
|
|
187
|
+
|
|
188
|
+
---
|
|
189
|
+
|
|
190
|
+
## Features
|
|
191
|
+
|
|
192
|
+
### Deterministic Scanner Backbone
|
|
193
|
+
Ground every finding in verifiable evidence with industry-standard scanners:
|
|
194
|
+
- **Semgrep** - OWASP Top 10, custom rules
|
|
195
|
+
- **gitleaks** - Secrets detection
|
|
196
|
+
- **npm audit** - Dependency vulnerabilities
|
|
197
|
+
- **TypeScript** - Type safety analysis
|
|
198
|
+
- **ESLint** - Code quality and security rules
|
|
199
|
+
- **Bandit** - Python security analysis
|
|
200
|
+
- **Gosec** - Go security checker
|
|
201
|
+
- **Brakeman** - Ruby on Rails security (v2.1.0)
|
|
202
|
+
- **Trivy** - Container/IaC vulnerability scanning
|
|
203
|
+
- **binary-analysis** - Native module security (v2.5.0)
|
|
204
|
+
- **memory-safety** - C/C++/Rust memory bugs (v2.5.0)
|
|
205
|
+
- **race-condition** - Concurrency vulnerabilities (v2.5.0)
|
|
206
|
+
|
|
207
|
+
### Enterprise Certification
|
|
208
|
+
Multi-agent validation with cross-verification:
|
|
209
|
+
- 9 specialized agents: security, reliability, typesafety, performance, quality, redteam, zero-day-hunter, logic-flaw-detector, exploit-chain (v2.5.0)
|
|
210
|
+
- Cross-verification between agents for high-confidence findings
|
|
211
|
+
- Consensus scoring with certification levels
|
|
212
|
+
- Exploit chain analysis for attack path mapping (v2.5.0)
|
|
213
|
+
|
|
214
|
+
### GitHub Action Integration
|
|
215
|
+
CI/CD integration with PR comments and Sigstore signing:
|
|
216
|
+
- **Security certification workflow** - Auto-detect languages, run scanners, generate reports
|
|
217
|
+
- **Sigstore signing** - OIDC-based signing with Fulcio + Rekor (requires `id-token: write`)
|
|
218
|
+
- **Automatic PR comments** - Findings summary on pull requests
|
|
219
|
+
- **SARIF upload** - GitHub Security tab integration
|
|
220
|
+
|
|
221
|
+
See [.github/workflows/certify.yml](.github/workflows/certify.yml) for example.
|
|
222
|
+
|
|
223
|
+
### Evaluation Harness
|
|
224
|
+
Measure scanner accuracy with labeled test fixtures:
|
|
225
|
+
- Precision, recall, F1 score metrics
|
|
226
|
+
- Stability testing across multiple runs
|
|
227
|
+
- Target thresholds for publication
|
|
228
|
+
|
|
229
|
+
## Quick Start
|
|
230
|
+
|
|
231
|
+
### Installation
|
|
232
|
+
|
|
233
|
+
```bash
|
|
234
|
+
npm install vaspera-hardening-mcp-server
|
|
235
|
+
# or
|
|
236
|
+
git clone https://github.com/RCOLKITT/hardening-mcp.git
|
|
237
|
+
cd hardening-mcp
|
|
238
|
+
npm install && npm run build
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
### Add to Claude Desktop
|
|
242
|
+
|
|
243
|
+
Edit `~/Library/Application Support/Claude/claude_desktop_config.json`:
|
|
244
|
+
|
|
245
|
+
```json
|
|
246
|
+
{
|
|
247
|
+
"mcpServers": {
|
|
248
|
+
"vaspera-hardening": {
|
|
249
|
+
"command": "node",
|
|
250
|
+
"args": ["/path/to/vaspera-hardening-mcp/dist/index.js"],
|
|
251
|
+
"env": {
|
|
252
|
+
"VASPERA_PROJECTS_DIR": "/path/to/your/projects"
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
## MCP Tools
|
|
260
|
+
|
|
261
|
+
### Hardening Commands
|
|
262
|
+
|
|
263
|
+
| Tool | Description |
|
|
264
|
+
|------|-------------|
|
|
265
|
+
| `hardening_list_projects` | Discover all projects in workspace |
|
|
266
|
+
| `hardening_install` | Install hardening commands into a project |
|
|
267
|
+
| `hardening_install_all` | Install commands into all projects |
|
|
268
|
+
| `hardening_get_command` | Get a specific command prompt |
|
|
269
|
+
| `hardening_read_audit` | Read AUDIT.md from a project |
|
|
270
|
+
| `hardening_read_report` | Read HARDENING-REPORT.md |
|
|
271
|
+
| `hardening_dashboard` | Portfolio-wide readiness dashboard |
|
|
272
|
+
| `hardening_list_commands` | List available commands |
|
|
273
|
+
|
|
274
|
+
### Enterprise Certification
|
|
275
|
+
|
|
276
|
+
| Tool | Description |
|
|
277
|
+
|------|-------------|
|
|
278
|
+
| `certification_start` | Initialize enterprise certification |
|
|
279
|
+
| `certification_scan` | Run deterministic scanners (supports `auto_detect`) |
|
|
280
|
+
| `certification_detect_languages` | Auto-detect project languages for scanner selection |
|
|
281
|
+
| `certification_scanners_available` | Check scanner availability |
|
|
282
|
+
| `certification_install_scanners` | Get install commands for missing scanners |
|
|
283
|
+
| `certification_status` | Get certification progress |
|
|
284
|
+
| `certification_consensus` | Calculate consensus score |
|
|
285
|
+
| `certification_finalize` | Generate certification artifacts |
|
|
286
|
+
| `certification_dashboard` | Portfolio certification view |
|
|
287
|
+
|
|
288
|
+
### Mythos-Class Scanners (v2.5.0)
|
|
289
|
+
|
|
290
|
+
| Tool | Description |
|
|
291
|
+
|------|-------------|
|
|
292
|
+
| `certification_scan_binary` | Scan compiled code and native modules |
|
|
293
|
+
| `certification_semantic_analysis` | AI-powered semantic code analysis |
|
|
294
|
+
| `certification_analyze_chains` | Analyze findings for exploitable attack chains |
|
|
295
|
+
|
|
296
|
+
### Agent Tools
|
|
297
|
+
|
|
298
|
+
| Tool | Description |
|
|
299
|
+
|------|-------------|
|
|
300
|
+
| `agent_submit_finding` | Submit a finding from an agent |
|
|
301
|
+
| `agent_complete` | Mark agent run as complete |
|
|
302
|
+
| `agent_cross_verify` | Cross-verify another agent's finding |
|
|
303
|
+
| `redteam_challenge` | Challenge an area marked clean |
|
|
304
|
+
|
|
305
|
+
### Utilities
|
|
306
|
+
|
|
307
|
+
| Tool | Description |
|
|
308
|
+
|------|-------------|
|
|
309
|
+
| `certification_cross_verify` | Batch cross-verify critical findings |
|
|
310
|
+
| `certification_summary` | Progressive disclosure summary |
|
|
311
|
+
| `certification_filter` | Filter findings by criteria |
|
|
312
|
+
| `certification_export_sarif` | Export to SARIF format |
|
|
313
|
+
| `autofix_preview` | Preview auto-fix for a finding |
|
|
314
|
+
| `autofix_apply` | Apply auto-fix |
|
|
315
|
+
| `autofix_batch` | Batch apply all safe fixes |
|
|
316
|
+
| `autofix_list_patterns` | List available fix patterns |
|
|
317
|
+
|
|
318
|
+
### Custom Rules
|
|
319
|
+
|
|
320
|
+
| Tool | Description |
|
|
321
|
+
|------|-------------|
|
|
322
|
+
| `rules_load` | Load custom rules from config |
|
|
323
|
+
| `rules_templates` | List built-in rule templates |
|
|
324
|
+
| `rules_generate_config` | Generate sample rules config |
|
|
325
|
+
| `rules_check_file` | Check file against custom rules |
|
|
326
|
+
|
|
327
|
+
### Evaluation
|
|
328
|
+
|
|
329
|
+
| Tool | Description |
|
|
330
|
+
|------|-------------|
|
|
331
|
+
| `certification_eval` | Run evaluation against test fixtures |
|
|
332
|
+
| `certification_eval_fixtures` | Get fixture statistics |
|
|
333
|
+
|
|
334
|
+
### Cost Tracking (v2.0.0)
|
|
335
|
+
|
|
336
|
+
| Tool | Description |
|
|
337
|
+
|------|-------------|
|
|
338
|
+
| `cost_track` | Start tracking costs for a certification |
|
|
339
|
+
| `cost_estimate` | Estimate cost before running |
|
|
340
|
+
| `cost_status` | Get current cost status |
|
|
341
|
+
| `cost_report` | Generate cost report |
|
|
342
|
+
| `cost_budget` | Set/update budget limits |
|
|
343
|
+
| `cost_models` | List supported models and pricing |
|
|
344
|
+
|
|
345
|
+
### Consensus Aggregation (v2.0.0)
|
|
346
|
+
|
|
347
|
+
*These tools aggregate findings from external runs - they do NOT call LLM APIs.*
|
|
348
|
+
|
|
349
|
+
| Tool | Description |
|
|
350
|
+
|------|-------------|
|
|
351
|
+
| `consensus_record` | Record findings from an external agent run |
|
|
352
|
+
| `consensus_calculate` | Calculate consensus with Fleiss' kappa |
|
|
353
|
+
| `consensus_disagreements` | Get disagreements between runs |
|
|
354
|
+
| `consensus_merged` | Get deduplicated findings after consensus |
|
|
355
|
+
| `consensus_summary` | Generate consensus summary |
|
|
356
|
+
| `consensus_models` | List model configurations |
|
|
357
|
+
| `consensus_clear` | Clear recorded results |
|
|
358
|
+
|
|
359
|
+
### Compliance Mapping (v2.0.0)
|
|
360
|
+
|
|
361
|
+
| Tool | Description |
|
|
362
|
+
|------|-------------|
|
|
363
|
+
| `compliance_report` | Generate compliance report for a framework |
|
|
364
|
+
| `compliance_multi_report` | Generate report for multiple frameworks |
|
|
365
|
+
| `compliance_controls` | List controls for a framework |
|
|
366
|
+
|
|
367
|
+
### SBOM & Provenance (v2.0.0)
|
|
368
|
+
|
|
369
|
+
| Tool | Description |
|
|
370
|
+
|------|-------------|
|
|
371
|
+
| `sbom_generate` | Generate CycloneDX SBOM |
|
|
372
|
+
| `sbom_provenance` | Generate SLSA provenance attestation |
|
|
373
|
+
| `sbom_sign` | Sign content with Sigstore (requires OIDC) |
|
|
374
|
+
| `sbom_verify_provenance` | Verify provenance attestation |
|
|
375
|
+
|
|
376
|
+
### Agent & MCP Security (v2.3.0)
|
|
377
|
+
|
|
378
|
+
| Tool | Description |
|
|
379
|
+
|------|-------------|
|
|
380
|
+
| `agent_cert_scan` | Full agent-system certification against MCP server |
|
|
381
|
+
| `agent_cert_fuzz` | Quick prompt injection fuzzing (CI-friendly, <60s) |
|
|
382
|
+
| `agent_cert_attest` | Generate Sigstore-signed attestation bundle |
|
|
383
|
+
| `agent_cert_verify` | Verify attestation against live MCP server |
|
|
384
|
+
| `agent_cert_watch` | Continuous monitoring with drift detection |
|
|
385
|
+
| `agent_scanners_available` | Check agent scanner availability |
|
|
386
|
+
|
|
387
|
+
**Agent Scanners:**
|
|
388
|
+
- `manifest-audit` - Parse MCP manifest, flag security issues
|
|
389
|
+
- `tool-description-drift` - Detect silent tool definition changes
|
|
390
|
+
- `prompt-injection-fuzzer` - Fuzz inputs with 200+ payloads
|
|
391
|
+
- `exfil-path-graph` - Build secret→network data flow graph
|
|
392
|
+
- `permission-minimiser` - Recommend tightened permissions from traces
|
|
393
|
+
- `supply-chain-mcp` - SBOM + CVE scan for MCP dependencies
|
|
394
|
+
- `sandbox-audit` - Verify tools stay within declared boundaries
|
|
395
|
+
- `credential-scope-audit` - Flag over-scoped tokens
|
|
396
|
+
|
|
397
|
+
### AI Compliance Frameworks (v2.3.0)
|
|
398
|
+
|
|
399
|
+
| Tool | Description |
|
|
400
|
+
|------|-------------|
|
|
401
|
+
| `compliance_report` | Generate report (now supports AI frameworks) |
|
|
402
|
+
|
|
403
|
+
**Supported AI Frameworks:**
|
|
404
|
+
- `OWASP-LLM` - OWASP LLM Top 10 (10 controls)
|
|
405
|
+
- `NIST-AI-RMF` - NIST AI Risk Management Framework (33 controls)
|
|
406
|
+
- `MITRE-ATLAS` - ATLAS adversarial ML techniques (34 techniques)
|
|
407
|
+
- `EU-AI-ACT` - European AI Act compliance (33 controls)
|
|
408
|
+
- `ISO-42001` - ISO/IEC 42001 AI management (38 controls)
|
|
409
|
+
|
|
410
|
+
### Transcripts & Attestations (v2.3.0)
|
|
411
|
+
|
|
412
|
+
*Programmatic API - not exposed as MCP tools:*
|
|
413
|
+
|
|
414
|
+
```typescript
|
|
415
|
+
import {
|
|
416
|
+
TranscriptLogger,
|
|
417
|
+
signTranscript,
|
|
418
|
+
verifyTranscriptBundle,
|
|
419
|
+
redactPII
|
|
420
|
+
} from "vaspera-hardening-mcp-server/transcripts";
|
|
421
|
+
|
|
422
|
+
// Create logger with Merkle chain
|
|
423
|
+
const logger = new TranscriptLogger("session-123");
|
|
424
|
+
logger.logPrompt("User prompt here");
|
|
425
|
+
logger.logToolCall("tool_name", "input data");
|
|
426
|
+
logger.logToolResult("tool_name", "output data");
|
|
427
|
+
|
|
428
|
+
// Generate signed transcript
|
|
429
|
+
const transcript = logger.generateSignedTranscript();
|
|
430
|
+
const bundle = await signTranscript(transcript, logger.getChain());
|
|
431
|
+
|
|
432
|
+
// Verify integrity
|
|
433
|
+
const result = await verifyTranscriptBundle(bundle, logger.getChain());
|
|
434
|
+
console.log(result.valid); // true
|
|
435
|
+
|
|
436
|
+
// Redact PII before logging
|
|
437
|
+
const { redacted, redactions } = redactPII("Contact: john@example.com");
|
|
438
|
+
// redacted = "Contact: [REDACTED:EMAIL]"
|
|
439
|
+
```
|
|
440
|
+
|
|
441
|
+
### Enterprise Integrations (v2.3.0)
|
|
442
|
+
|
|
443
|
+
*Programmatic API - not exposed as MCP tools:*
|
|
444
|
+
|
|
445
|
+
```typescript
|
|
446
|
+
import {
|
|
447
|
+
createOIDCClient,
|
|
448
|
+
createTicketingClient,
|
|
449
|
+
createChatClient,
|
|
450
|
+
createOPAClient,
|
|
451
|
+
createKMSClient
|
|
452
|
+
} from "vaspera-hardening-mcp-server/enterprise";
|
|
453
|
+
|
|
454
|
+
// OIDC SSO
|
|
455
|
+
const oidc = createOIDCClient({
|
|
456
|
+
provider: "okta",
|
|
457
|
+
clientId: "...",
|
|
458
|
+
clientSecret: "...",
|
|
459
|
+
issuerUrl: "https://company.okta.com",
|
|
460
|
+
redirectUri: "https://app.example.com/callback",
|
|
461
|
+
});
|
|
462
|
+
const { url } = await oidc.getAuthorizationUrl();
|
|
463
|
+
|
|
464
|
+
// Ticketing
|
|
465
|
+
const jira = createTicketingClient({
|
|
466
|
+
platform: "jira",
|
|
467
|
+
baseUrl: "https://company.atlassian.net",
|
|
468
|
+
apiToken: "...",
|
|
469
|
+
email: "...",
|
|
470
|
+
isCloud: true,
|
|
471
|
+
});
|
|
472
|
+
const ticket = await jira.createTicket({
|
|
473
|
+
title: "[CRITICAL] SQL Injection in auth.ts",
|
|
474
|
+
description: "...",
|
|
475
|
+
findings: certificationFindings,
|
|
476
|
+
});
|
|
477
|
+
|
|
478
|
+
// Chat notifications
|
|
479
|
+
const slack = createChatClient({
|
|
480
|
+
platform: "slack",
|
|
481
|
+
webhookUrl: "https://hooks.slack.com/...",
|
|
482
|
+
});
|
|
483
|
+
await slack.sendNotification({
|
|
484
|
+
certificationId: "cert-123",
|
|
485
|
+
target: "myapp",
|
|
486
|
+
status: "completed",
|
|
487
|
+
score: 87,
|
|
488
|
+
findings: { total: 12, critical: 0, high: 2, medium: 5, low: 5, info: 0 },
|
|
489
|
+
});
|
|
490
|
+
|
|
491
|
+
// OPA Policy
|
|
492
|
+
const opa = createOPAClient({
|
|
493
|
+
mode: "local",
|
|
494
|
+
bundlePath: "./policies/certification.json",
|
|
495
|
+
});
|
|
496
|
+
const policyResult = await opa.evaluate({ certification: {...} });
|
|
497
|
+
|
|
498
|
+
// KMS Signing (air-gapped alternative to Sigstore)
|
|
499
|
+
const kms = createKMSClient({
|
|
500
|
+
provider: "vault",
|
|
501
|
+
keyId: "signing-key",
|
|
502
|
+
vault: { address: "https://vault.example.com", token: "..." },
|
|
503
|
+
});
|
|
504
|
+
const signed = await kms.sign(certificationJson);
|
|
505
|
+
```
|
|
506
|
+
|
|
507
|
+
## Typical Workflows
|
|
508
|
+
|
|
509
|
+
### Run Security Scan
|
|
510
|
+
|
|
511
|
+
```
|
|
512
|
+
You: "Scan this project for security issues"
|
|
513
|
+
→ Claude calls certification_scan
|
|
514
|
+
→ Returns findings from Semgrep, gitleaks, npm audit, TypeScript
|
|
515
|
+
```
|
|
516
|
+
|
|
517
|
+
### Full Enterprise Certification
|
|
518
|
+
|
|
519
|
+
```
|
|
520
|
+
You: "Start enterprise certification for this project"
|
|
521
|
+
→ Claude calls certification_start
|
|
522
|
+
→ Claude calls certification_scan (deterministic pre-pass)
|
|
523
|
+
→ Claude runs each agent (security, reliability, typesafety, etc.)
|
|
524
|
+
→ Claude calls certification_cross_verify (batch verify critical findings)
|
|
525
|
+
→ Claude calls certification_consensus
|
|
526
|
+
→ Claude calls certification_finalize
|
|
527
|
+
→ Generates CERTIFICATION.md and CERTIFICATION.json
|
|
528
|
+
```
|
|
529
|
+
|
|
530
|
+
### Evaluate Scanner Accuracy
|
|
531
|
+
|
|
532
|
+
```
|
|
533
|
+
You: "Run the evaluation harness to test scanner accuracy"
|
|
534
|
+
→ Claude calls certification_eval
|
|
535
|
+
→ Returns precision, recall, F1 scores against labeled fixtures
|
|
536
|
+
```
|
|
537
|
+
|
|
538
|
+
### Cost-Controlled Certification (v2.0.0)
|
|
539
|
+
|
|
540
|
+
```
|
|
541
|
+
You: "Run certification with a $5 budget limit"
|
|
542
|
+
→ Claude calls cost_track with budget: 5.00
|
|
543
|
+
→ Claude runs agents, tracking costs in real-time
|
|
544
|
+
→ If budget exceeded, certification pauses
|
|
545
|
+
→ Claude calls cost_report for final breakdown
|
|
546
|
+
```
|
|
547
|
+
|
|
548
|
+
### Consensus Aggregation (v2.0.0)
|
|
549
|
+
|
|
550
|
+
```
|
|
551
|
+
You: "Calculate consensus from my security agent runs"
|
|
552
|
+
→ User runs security agent via different MCP clients or APIs
|
|
553
|
+
→ User calls consensus_record for each run's findings
|
|
554
|
+
→ Claude calls consensus_calculate for agreement metrics
|
|
555
|
+
→ Claude calls consensus_disagreements for disputed findings
|
|
556
|
+
```
|
|
557
|
+
|
|
558
|
+
*Note: Consensus tools aggregate external results. Run agents separately.*
|
|
559
|
+
|
|
560
|
+
### Compliance Report (v2.0.0)
|
|
561
|
+
|
|
562
|
+
```
|
|
563
|
+
You: "Generate SOC 2 compliance report from certification"
|
|
564
|
+
→ Claude calls compliance_report with framework: "SOC2"
|
|
565
|
+
→ Returns control-by-control status with findings mapped
|
|
566
|
+
→ Identifies at-risk controls and gaps
|
|
567
|
+
```
|
|
568
|
+
|
|
569
|
+
### Generate SBOM (v2.0.0)
|
|
570
|
+
|
|
571
|
+
```
|
|
572
|
+
You: "Generate an SBOM for this project"
|
|
573
|
+
→ Claude calls sbom_generate
|
|
574
|
+
→ Returns CycloneDX SBOM with all dependencies
|
|
575
|
+
→ Claude calls sbom_provenance for build attestation
|
|
576
|
+
```
|
|
577
|
+
|
|
578
|
+
### Install Missing Scanners (v2.0.1)
|
|
579
|
+
|
|
580
|
+
```
|
|
581
|
+
You: "What scanners are missing and how do I install them?"
|
|
582
|
+
→ Claude calls certification_install_scanners
|
|
583
|
+
→ Returns platform-specific install commands for each scanner
|
|
584
|
+
→ Claude calls with run_install: true to execute installation
|
|
585
|
+
```
|
|
586
|
+
|
|
587
|
+
### Batch Auto-Fix (v2.0.1)
|
|
588
|
+
|
|
589
|
+
```
|
|
590
|
+
You: "Apply all safe fixes to the certification findings"
|
|
591
|
+
→ Claude calls autofix_batch with dry_run: true (preview)
|
|
592
|
+
→ Shows what would be changed
|
|
593
|
+
→ Claude calls autofix_batch with dry_run: false (apply)
|
|
594
|
+
→ Reports fixes applied by pattern and file
|
|
595
|
+
```
|
|
596
|
+
|
|
597
|
+
### Auto-Detect and Scan (v2.1.0)
|
|
598
|
+
|
|
599
|
+
```
|
|
600
|
+
You: "Scan this project with auto-detection"
|
|
601
|
+
→ Claude calls certification_scan with auto_detect: true
|
|
602
|
+
→ Detects Python, JavaScript, Go files
|
|
603
|
+
→ Automatically enables Bandit, npm-audit, Gosec
|
|
604
|
+
→ Returns unified findings from all relevant scanners
|
|
605
|
+
```
|
|
606
|
+
|
|
607
|
+
### GDPR Compliance Report (v2.1.0)
|
|
608
|
+
|
|
609
|
+
```
|
|
610
|
+
You: "Generate GDPR compliance report"
|
|
611
|
+
→ Claude calls compliance_report with framework: "GDPR"
|
|
612
|
+
→ Maps findings to GDPR articles (Art. 5, 25, 32, etc.)
|
|
613
|
+
→ Returns control status with gap analysis
|
|
614
|
+
```
|
|
615
|
+
|
|
616
|
+
### Sigstore Signing (v2.1.1)
|
|
617
|
+
|
|
618
|
+
```
|
|
619
|
+
You: "Sign the SBOM with Sigstore"
|
|
620
|
+
→ Claude calls sbom_sign with the SBOM content
|
|
621
|
+
→ Gets OIDC token from GitHub Actions / GitLab CI
|
|
622
|
+
→ Obtains certificate from Fulcio
|
|
623
|
+
→ Records signature in Rekor transparency log
|
|
624
|
+
→ Returns signed bundle with log index
|
|
625
|
+
```
|
|
626
|
+
|
|
627
|
+
*Requires CI environment with OIDC (GitHub Actions: `permissions: id-token: write`)*
|
|
628
|
+
|
|
629
|
+
### Agent Security Certification (v2.3.0)
|
|
630
|
+
|
|
631
|
+
```
|
|
632
|
+
You: "Certify this MCP server for prompt injection vulnerabilities"
|
|
633
|
+
→ Claude calls agent_cert_scan with target and scanners
|
|
634
|
+
→ Runs manifest-audit, prompt-injection-fuzzer, exfil-path-graph
|
|
635
|
+
→ Returns findings with severity and remediation
|
|
636
|
+
→ Claude calls agent_cert_attest to generate signed bundle
|
|
637
|
+
```
|
|
638
|
+
|
|
639
|
+
### Quick Prompt Injection Fuzz (v2.3.0)
|
|
640
|
+
|
|
641
|
+
```
|
|
642
|
+
You: "Quick fuzz test on this MCP server - CI mode"
|
|
643
|
+
→ Claude calls agent_cert_fuzz with corpus: "quick"
|
|
644
|
+
→ Runs 50 high-priority payloads in <60 seconds
|
|
645
|
+
→ Returns pass/fail for each tool with behavior change detection
|
|
646
|
+
```
|
|
647
|
+
|
|
648
|
+
### AI Compliance Report (v2.3.0)
|
|
649
|
+
|
|
650
|
+
```
|
|
651
|
+
You: "Generate OWASP LLM Top 10 compliance report"
|
|
652
|
+
→ Claude calls compliance_report with framework: "OWASP-LLM"
|
|
653
|
+
→ Maps findings to LLM01-LLM10 controls
|
|
654
|
+
→ Returns control status with gap analysis
|
|
655
|
+
→ Identifies prompt injection, sensitive disclosure, excessive agency risks
|
|
656
|
+
```
|
|
657
|
+
|
|
658
|
+
### Binary & Memory Safety Scan (v2.5.0)
|
|
659
|
+
|
|
660
|
+
```
|
|
661
|
+
You: "Scan native modules for security issues"
|
|
662
|
+
→ Claude calls certification_scan_binary
|
|
663
|
+
→ Detects binding.gyp, *.node, Rust FFI, Go CGO
|
|
664
|
+
→ Checks RELRO, NX, PIE, CANARY protections
|
|
665
|
+
→ Reports missing stack protections and dangerous imports
|
|
666
|
+
```
|
|
667
|
+
|
|
668
|
+
### Exploit Chain Analysis (v2.5.0)
|
|
669
|
+
|
|
670
|
+
```
|
|
671
|
+
You: "Analyze findings for attack chains"
|
|
672
|
+
→ Claude calls certification_analyze_chains
|
|
673
|
+
→ Chains SSRF → internal API access
|
|
674
|
+
→ Chains XSS → session hijacking
|
|
675
|
+
→ Calculates escalated severity (medium + medium = critical)
|
|
676
|
+
→ Maps to MITRE ATT&CK techniques
|
|
677
|
+
```
|
|
678
|
+
|
|
679
|
+
### Create Tickets from Findings (v2.3.0)
|
|
680
|
+
|
|
681
|
+
```typescript
|
|
682
|
+
// Programmatic - create Jira tickets for critical/high findings
|
|
683
|
+
const jira = createTicketingClient({ platform: "jira", ... });
|
|
684
|
+
const result = await jira.createTicketsForFindings(findings, {
|
|
685
|
+
project: "SEC",
|
|
686
|
+
groupByCategory: true,
|
|
687
|
+
minSeverity: "high",
|
|
688
|
+
});
|
|
689
|
+
console.log(`Created ${result.created.length} tickets`);
|
|
690
|
+
```
|
|
691
|
+
|
|
692
|
+
## Architecture
|
|
693
|
+
|
|
694
|
+
```
|
|
695
|
+
┌─────────────────────────────────────────────────────────────────────────────────────────┐
|
|
696
|
+
│ Codebase Scanner Layer │
|
|
697
|
+
├─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬────────┤
|
|
698
|
+
│ Semgrep │npm audit│gitleaks │ tsc │ ESLint │ Bandit │ Gosec │Brakeman │ Trivy │
|
|
699
|
+
│ (OWASP) │ (CVEs) │(secrets)│ (types) │ (lint) │ (Python)│ (Go) │ (Ruby) │ (IaC) │
|
|
700
|
+
└────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴───┬────┘
|
|
701
|
+
│ │ │ │ │ │ │ │ │
|
|
702
|
+
└─────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┴────────┘
|
|
703
|
+
│
|
|
704
|
+
┌─────────────────────────────────────────────┼─────────────────────────────────────────┐
|
|
705
|
+
│ Mythos-Class Scanner Layer (v2.5.0) │
|
|
706
|
+
├─────────────────────┬─────────────────────┬─┴───────────────────┬─────────────────────┤
|
|
707
|
+
│ Binary Analysis │ Memory Safety │ Race Condition │ Exploit Chain │
|
|
708
|
+
│ (native modules) │ (C/C++/Rust bugs) │ (concurrency) │ (attack paths) │
|
|
709
|
+
└──────────┬──────────┴──────────┬──────────┴──────────┬──────────┴──────────┬──────────┘
|
|
710
|
+
│ │ │ │
|
|
711
|
+
└─────────────────────┴─────────────────────┴─────────────────────┘
|
|
712
|
+
│
|
|
713
|
+
┌─────────────────────────────────────────────┼─────────────────────────────────────────┐
|
|
714
|
+
│ Agent Scanner Layer (v2.3.0) │
|
|
715
|
+
├──────────────┬──────────────┬──────────────┬┴─────────────┬──────────────┬────────────┤
|
|
716
|
+
│ Manifest │ Tool Drift │ Prompt │ Exfil Path │ Permission │ Credential │
|
|
717
|
+
│ Audit │ Detection │ Injection │ Graph │ Minimizer │ Scope │
|
|
718
|
+
│ │ │ Fuzzer │ │ │ Audit │
|
|
719
|
+
└──────┬───────┴──────┬───────┴──────┬───────┴──────┬───────┴──────┬───────┴─────┬──────┘
|
|
720
|
+
│ │ │ │ │ │
|
|
721
|
+
└──────────────┴──────────────┴──────────────┴──────────────┴─────────────┘
|
|
722
|
+
│
|
|
723
|
+
┌─────────▼─────────┐
|
|
724
|
+
│ Finding Aggregator │
|
|
725
|
+
│ (confidence: 100) │
|
|
726
|
+
└─────────┬─────────┘
|
|
727
|
+
│
|
|
728
|
+
┌───────────────────┴───────────────────┐
|
|
729
|
+
▼ ▼
|
|
730
|
+
┌─────────────────┐ ┌─────────────────┐
|
|
731
|
+
│ Compliance │ │ LLM Agents │
|
|
732
|
+
│ Mapper │◄────────────────────│ (triage/enrich) │
|
|
733
|
+
│ (10 frameworks) │ │ + Privacy Agent │
|
|
734
|
+
└────────┬────────┘ │ + Integrity │
|
|
735
|
+
│ └─────────────────┘
|
|
736
|
+
▼
|
|
737
|
+
┌─────────────────┐
|
|
738
|
+
│ Transcript │
|
|
739
|
+
│ Logger │──► Merkle Chain ──► Sigstore Signing
|
|
740
|
+
│ + PII Redaction │
|
|
741
|
+
└────────┬────────┘
|
|
742
|
+
│
|
|
743
|
+
▼
|
|
744
|
+
┌─────────────────┐
|
|
745
|
+
│ Enterprise │──► OIDC SSO, OPA Policy, Ticketing, Chat
|
|
746
|
+
│ Integrations │
|
|
747
|
+
└─────────────────┘
|
|
748
|
+
```
|
|
749
|
+
|
|
750
|
+
## Evidence Validation
|
|
751
|
+
|
|
752
|
+
Non-deterministic findings are validated to prevent hallucinations:
|
|
753
|
+
- Requires evidence (code snippet) for all LLM findings
|
|
754
|
+
- Validates evidence matches actual file content
|
|
755
|
+
- Deterministic scanner findings (confidence: 100) bypass validation
|
|
756
|
+
|
|
757
|
+
## Evaluation Metrics
|
|
758
|
+
|
|
759
|
+
Target metrics for scanner accuracy:
|
|
760
|
+
|
|
761
|
+
| Metric | Target | Description |
|
|
762
|
+
|--------|--------|-------------|
|
|
763
|
+
| Precision | >90% | Low false positives |
|
|
764
|
+
| Recall | >85% | Catches real issues |
|
|
765
|
+
| Stability | >95% | Consistent across runs |
|
|
766
|
+
| Agreement | >85% | Cross-agent confirmation |
|
|
767
|
+
|
|
768
|
+
## GitHub Action
|
|
769
|
+
|
|
770
|
+
```yaml
|
|
771
|
+
- uses: RCOLKITT/vaspera-hardening-action@v1
|
|
772
|
+
with:
|
|
773
|
+
mode: 'diff' # scan | certify | diff
|
|
774
|
+
fail-on: 'critical' # critical | high | medium | none
|
|
775
|
+
upload-sarif: true
|
|
776
|
+
comment-on-pr: true
|
|
777
|
+
anthropic-api-key: ${{ secrets.ANTHROPIC_API_KEY }} # Optional for LLM features
|
|
778
|
+
```
|
|
779
|
+
|
|
780
|
+
## Environment Variables
|
|
781
|
+
|
|
782
|
+
| Variable | Default | Description |
|
|
783
|
+
|----------|---------|-------------|
|
|
784
|
+
| `VASPERA_PROJECTS_DIR` | `~/Documents/GitHub` | Base directory to scan |
|
|
785
|
+
| `ANTHROPIC_API_KEY` | - | API key for LLM features (optional) |
|
|
786
|
+
| `SIGSTORE_ID_TOKEN` | - | OIDC token for Sigstore signing |
|
|
787
|
+
| `ACTIONS_ID_TOKEN_REQUEST_TOKEN` | - | GitHub Actions OIDC (auto-set) |
|
|
788
|
+
| `VASPERA_OPA_BUNDLE` | - | Path to OPA policy bundle |
|
|
789
|
+
| `VASPERA_OPA_SERVER` | - | OPA server URL for remote evaluation |
|
|
790
|
+
| `VASPERA_TRANSCRIPT_DIR` | `.vaspera/transcripts` | Transcript storage directory |
|
|
791
|
+
|
|
792
|
+
### Enterprise Environment Variables
|
|
793
|
+
|
|
794
|
+
| Variable | Description |
|
|
795
|
+
|----------|-------------|
|
|
796
|
+
| `VASPERA_OIDC_ISSUER` | OIDC issuer URL (Okta, Auth0, Azure AD) |
|
|
797
|
+
| `VASPERA_OIDC_CLIENT_ID` | OIDC client ID |
|
|
798
|
+
| `VASPERA_OIDC_CLIENT_SECRET` | OIDC client secret |
|
|
799
|
+
| `VASPERA_JIRA_URL` | Jira instance URL |
|
|
800
|
+
| `VASPERA_JIRA_TOKEN` | Jira API token |
|
|
801
|
+
| `VASPERA_SLACK_WEBHOOK` | Slack webhook URL |
|
|
802
|
+
| `VASPERA_TEAMS_WEBHOOK` | Microsoft Teams webhook URL |
|
|
803
|
+
| `VASPERA_AWS_KMS_KEY` | AWS KMS key ARN for signing |
|
|
804
|
+
| `VASPERA_VAULT_ADDR` | HashiCorp Vault address |
|
|
805
|
+
| `VASPERA_VAULT_TOKEN` | HashiCorp Vault token |
|
|
806
|
+
|
|
807
|
+
## License
|
|
808
|
+
|
|
809
|
+
MIT
|