security-mcp 1.0.5 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/README.md +963 -193
  2. package/defaults/agent-run-schema.json +98 -0
  3. package/defaults/checklists/ai.json +25 -0
  4. package/defaults/checklists/api.json +27 -0
  5. package/defaults/checklists/infra.json +27 -0
  6. package/defaults/checklists/mobile.json +25 -0
  7. package/defaults/checklists/payments.json +25 -0
  8. package/defaults/checklists/web.json +30 -0
  9. package/defaults/control-catalog.json +392 -0
  10. package/defaults/evidence-map.json +194 -0
  11. package/defaults/security-policy.json +41 -2
  12. package/dist/cli/index.js +13 -8
  13. package/dist/cli/install.js +80 -2
  14. package/dist/cli/onboarding.js +590 -0
  15. package/dist/cli/update.js +83 -15
  16. package/dist/gate/baseline.js +115 -0
  17. package/dist/gate/checks/ai-redteam.js +398 -0
  18. package/dist/gate/checks/api.js +93 -0
  19. package/dist/gate/checks/crypto.js +153 -0
  20. package/dist/gate/checks/database.js +144 -0
  21. package/dist/gate/checks/dependencies.js +126 -0
  22. package/dist/gate/checks/dlp.js +153 -0
  23. package/dist/gate/checks/graphql.js +122 -0
  24. package/dist/gate/checks/infra.js +126 -12
  25. package/dist/gate/checks/k8s.js +190 -0
  26. package/dist/gate/checks/playbook.js +160 -0
  27. package/dist/gate/checks/runtime.js +316 -0
  28. package/dist/gate/checks/sbom.js +199 -0
  29. package/dist/gate/checks/scanners.js +379 -8
  30. package/dist/gate/checks/secrets.js +85 -20
  31. package/dist/gate/exceptions.js +6 -1
  32. package/dist/gate/policy.js +85 -19
  33. package/dist/gate/threat-intel.js +157 -0
  34. package/dist/mcp/orchestration.js +586 -0
  35. package/dist/mcp/server.js +568 -16
  36. package/dist/repo/search.js +11 -1
  37. package/dist/review/store.js +133 -0
  38. package/dist/types/agent-run.js +8 -0
  39. package/package.json +5 -5
  40. package/prompts/SECURITY_PROMPT.md +415 -1
  41. package/skills/agentic-loop-exploiter/SKILL.md +69 -0
  42. package/skills/ai-llm-redteam/SKILL.md +118 -0
  43. package/skills/algorithm-implementation-reviewer/SKILL.md +85 -0
  44. package/skills/android-penetration-tester/SKILL.md +83 -0
  45. package/skills/appsec-code-auditor/SKILL.md +86 -0
  46. package/skills/artifact-integrity-analyst/SKILL.md +68 -0
  47. package/skills/attack-navigator/SKILL.md +64 -0
  48. package/skills/auth-session-hacker/SKILL.md +87 -0
  49. package/skills/aws-penetration-tester/SKILL.md +60 -0
  50. package/skills/azure-penetration-tester/SKILL.md +64 -0
  51. package/skills/business-logic-attacker/SKILL.md +76 -0
  52. package/skills/cicd-pipeline-hijacker/SKILL.md +81 -0
  53. package/skills/ciso-orchestrator/SKILL.md +165 -0
  54. package/skills/cloud-infra-specialist/SKILL.md +85 -0
  55. package/skills/compliance-gap-analyst/SKILL.md +77 -0
  56. package/skills/compliance-grc/SKILL.md +148 -0
  57. package/skills/crypto-pki-specialist/SKILL.md +136 -0
  58. package/skills/dependency-confusion-attacker/SKILL.md +78 -0
  59. package/skills/evidence-collector/SKILL.md +86 -0
  60. package/skills/gcp-penetration-tester/SKILL.md +63 -0
  61. package/skills/injection-specialist/SKILL.md +62 -0
  62. package/skills/ios-security-auditor/SKILL.md +77 -0
  63. package/skills/k8s-container-escaper/SKILL.md +74 -0
  64. package/skills/key-management-lifecycle-analyst/SKILL.md +92 -0
  65. package/skills/logic-race-fuzzer/SKILL.md +67 -0
  66. package/skills/mobile-api-network-attacker/SKILL.md +81 -0
  67. package/skills/mobile-security-specialist/SKILL.md +124 -0
  68. package/skills/model-extraction-attacker/SKILL.md +68 -0
  69. package/skills/pentest-infra/SKILL.md +69 -0
  70. package/skills/pentest-social/SKILL.md +72 -0
  71. package/skills/pentest-team/SKILL.md +126 -0
  72. package/skills/pentest-web-api/SKILL.md +71 -0
  73. package/skills/privacy-flow-analyst/SKILL.md +70 -0
  74. package/skills/prompt-injection-specialist/SKILL.md +76 -0
  75. package/skills/rag-poisoning-specialist/SKILL.md +71 -0
  76. package/skills/senior-security-engineer/SKILL.md +75 -13
  77. package/skills/serialization-memory-attacker/SKILL.md +78 -0
  78. package/skills/stride-pasta-analyst/SKILL.md +72 -0
  79. package/skills/supply-chain-devsecops/SKILL.md +82 -0
  80. package/skills/threat-modeler/SKILL.md +116 -0
  81. package/skills/tls-certificate-auditor/SKILL.md +76 -0
@@ -152,6 +152,398 @@
152
152
  "surfaces": ["all"],
153
153
  "frameworks": ["NIST 800-218", "SOC 2"],
154
154
  "required_steps": ["self_heal_loop"]
155
+ },
156
+ {
157
+ "id": "SBOM_SCANNER_READY",
158
+ "description": "An SBOM generator (Syft) is installed and runnable.",
159
+ "automation": "tooling",
160
+ "surfaces": ["all"],
161
+ "frameworks": ["SLSA", "NIST 800-218", "Executive Order 14028"],
162
+ "required_scanners": ["syft"]
163
+ },
164
+ {
165
+ "id": "NIST_AC_ACCESS_CONTROL",
166
+ "description": "Access control policies enforce least privilege and separation of duties (NIST 800-53 AC).",
167
+ "automation": "evidence",
168
+ "surfaces": ["all"],
169
+ "frameworks": ["NIST 800-53"],
170
+ "evidence": ["deny_by_default_authz", "service_to_service_auth"]
171
+ },
172
+ {
173
+ "id": "NIST_AU_AUDIT_LOGGING",
174
+ "description": "Audit events are logged, immutable, timestamped, and retained ≥1 year (NIST 800-53 AU).",
175
+ "automation": "evidence",
176
+ "surfaces": ["all"],
177
+ "frameworks": ["NIST 800-53", "SOC 2"],
178
+ "evidence": ["audit_logging_configured", "log_retention_policy"]
179
+ },
180
+ {
181
+ "id": "NIST_IA_IDENTIFICATION",
182
+ "description": "All users and services are uniquely identified and authenticated (NIST 800-53 IA).",
183
+ "automation": "evidence",
184
+ "surfaces": ["web", "api", "infra"],
185
+ "frameworks": ["NIST 800-53", "OWASP ASVS"],
186
+ "evidence": ["mfa_enforced", "service_account_per_workload"]
187
+ },
188
+ {
189
+ "id": "NIST_SC_TRANSMISSION",
190
+ "description": "All data in transit is encrypted using approved algorithms (NIST 800-53 SC).",
191
+ "automation": "evidence",
192
+ "surfaces": ["all"],
193
+ "frameworks": ["NIST 800-53", "PCI DSS 4.0"],
194
+ "evidence": ["tls_config_verified"]
195
+ },
196
+ {
197
+ "id": "NIST_SI_INPUT_VALIDATION",
198
+ "description": "All inputs are validated, sanitized, and encoded before processing (NIST 800-53 SI).",
199
+ "automation": "evidence",
200
+ "surfaces": ["web", "api"],
201
+ "frameworks": ["NIST 800-53", "OWASP Top 10"],
202
+ "evidence": ["input_validation_schema", "output_encoding_present"]
203
+ },
204
+ {
205
+ "id": "NIST_CM_CONFIGURATION",
206
+ "description": "Baseline configurations are established and enforced for all systems (NIST 800-53 CM).",
207
+ "automation": "tooling",
208
+ "surfaces": ["infra"],
209
+ "frameworks": ["NIST 800-53", "CIS Benchmarks"],
210
+ "required_scanners": ["checkov"]
211
+ },
212
+ {
213
+ "id": "NIST_IR_INCIDENT_RESPONSE",
214
+ "description": "Incident response playbooks exist, are tested, and have defined MTTD/MTTR SLAs (NIST 800-53 IR).",
215
+ "automation": "evidence",
216
+ "surfaces": ["all"],
217
+ "frameworks": ["NIST 800-53", "SOC 2"],
218
+ "evidence": ["ir_playbook_present", "ir_playbook_tested"]
219
+ },
220
+ {
221
+ "id": "NIST_RA_RISK_ASSESSMENT",
222
+ "description": "Security risk assessments are performed before major releases (NIST 800-53 RA).",
223
+ "automation": "workflow",
224
+ "surfaces": ["all"],
225
+ "frameworks": ["NIST 800-53", "ISO 27001:2022"],
226
+ "required_steps": ["threat_model"]
227
+ },
228
+ {
229
+ "id": "NIST_SA_SYSTEM_SERVICES",
230
+ "description": "Third-party components are assessed for security risk before adoption (NIST 800-53 SA).",
231
+ "automation": "tooling",
232
+ "surfaces": ["all"],
233
+ "frameworks": ["NIST 800-53", "NIST 800-218"],
234
+ "required_scanners": ["osv-scanner"]
235
+ },
236
+ {
237
+ "id": "NIST_SR_SUPPLY_CHAIN",
238
+ "description": "Supply chain integrity is verified via SBOM, provenance attestation, and dependency scanning (NIST 800-53 SR).",
239
+ "automation": "tooling",
240
+ "surfaces": ["all"],
241
+ "frameworks": ["NIST 800-53", "SLSA", "Executive Order 14028"],
242
+ "required_scanners": ["syft", "osv-scanner"]
243
+ },
244
+ {
245
+ "id": "PCI_REQ1_NETWORK",
246
+ "description": "Network security controls restrict inbound/outbound traffic to only what is necessary (PCI DSS 4.0 Req 1).",
247
+ "automation": "tooling",
248
+ "surfaces": ["infra"],
249
+ "frameworks": ["PCI DSS 4.0"],
250
+ "required_scanners": ["checkov"]
251
+ },
252
+ {
253
+ "id": "PCI_REQ3_STORED_DATA",
254
+ "description": "Cardholder data at rest is encrypted and PAN is never stored in plaintext (PCI DSS 4.0 Req 3).",
255
+ "automation": "evidence",
256
+ "surfaces": ["api", "infra"],
257
+ "frameworks": ["PCI DSS 4.0"],
258
+ "evidence": ["pan_encryption_configured", "no_plaintext_pan"]
259
+ },
260
+ {
261
+ "id": "PCI_REQ4_TRANSIT",
262
+ "description": "Cardholder data in transit uses TLS 1.2+ with approved cipher suites (PCI DSS 4.0 Req 4).",
263
+ "automation": "evidence",
264
+ "surfaces": ["web", "api"],
265
+ "frameworks": ["PCI DSS 4.0"],
266
+ "evidence": ["tls_config_verified"]
267
+ },
268
+ {
269
+ "id": "PCI_REQ6_SECURE_SYSTEMS",
270
+ "description": "All software components are up-to-date and protected against known vulnerabilities (PCI DSS 4.0 Req 6).",
271
+ "automation": "tooling",
272
+ "surfaces": ["all"],
273
+ "frameworks": ["PCI DSS 4.0"],
274
+ "required_scanners": ["osv-scanner", "trivy"]
275
+ },
276
+ {
277
+ "id": "SOC2_CC6_LOGICAL_ACCESS",
278
+ "description": "Logical access to systems is restricted and uses MFA for privileged accounts (SOC 2 CC6).",
279
+ "automation": "evidence",
280
+ "surfaces": ["all"],
281
+ "frameworks": ["SOC 2 Type II"],
282
+ "evidence": ["mfa_enforced", "deny_by_default_authz"]
283
+ },
284
+ {
285
+ "id": "SOC2_CC7_SYSTEM_MONITORING",
286
+ "description": "System components are monitored for anomalous activity and security events (SOC 2 CC7).",
287
+ "automation": "evidence",
288
+ "surfaces": ["all"],
289
+ "frameworks": ["SOC 2 Type II"],
290
+ "evidence": ["audit_logging_configured", "alerting_configured"]
291
+ },
292
+ {
293
+ "id": "SOC2_CC8_CHANGE_MANAGEMENT",
294
+ "description": "Changes are authorized, tested, and reviewed before deployment (SOC 2 CC8).",
295
+ "automation": "workflow",
296
+ "surfaces": ["all"],
297
+ "frameworks": ["SOC 2 Type II"],
298
+ "required_steps": ["run_pr_gate"]
299
+ },
300
+ {
301
+ "id": "SOC2_CC9_RISK_MITIGATION",
302
+ "description": "Security risks are identified and formally risk-accepted or remediated (SOC 2 CC9).",
303
+ "automation": "workflow",
304
+ "surfaces": ["all"],
305
+ "frameworks": ["SOC 2 Type II"],
306
+ "required_steps": ["threat_model", "run_pr_gate"]
307
+ },
308
+ {
309
+ "id": "MITRE_INITIAL_ACCESS",
310
+ "description": "Controls in place to prevent initial access vectors: phishing, supply chain, public-facing exploits (TA0001).",
311
+ "automation": "evidence",
312
+ "surfaces": ["all"],
313
+ "frameworks": ["MITRE ATT&CK Enterprise"],
314
+ "evidence": ["mfa_enforced", "email_filtering", "public_surface_hardened"]
315
+ },
316
+ {
317
+ "id": "MITRE_CREDENTIAL_ACCESS",
318
+ "description": "Controls prevent credential dumping, brute force, and credential theft (TA0006).",
319
+ "automation": "evidence",
320
+ "surfaces": ["all"],
321
+ "frameworks": ["MITRE ATT&CK Enterprise"],
322
+ "evidence": ["no_hardcoded_secrets", "secret_manager_refs", "rate_limiting_present"]
323
+ },
324
+ {
325
+ "id": "MITRE_EXFILTRATION",
326
+ "description": "Controls prevent unauthorized data exfiltration over network, cloud storage, or encoding (TA0010).",
327
+ "automation": "evidence",
328
+ "surfaces": ["all"],
329
+ "frameworks": ["MITRE ATT&CK Enterprise"],
330
+ "evidence": ["egress_controls", "dlp_configured"]
331
+ },
332
+ {
333
+ "id": "MITRE_DEFENSE_EVASION",
334
+ "description": "Logging is tamper-evident; code signing prevents unauthorized binary substitution (TA0005).",
335
+ "automation": "evidence",
336
+ "surfaces": ["all"],
337
+ "frameworks": ["MITRE ATT&CK Enterprise"],
338
+ "evidence": ["audit_logging_configured", "artifact_signing"]
339
+ },
340
+ {
341
+ "id": "MITRE_PERSISTENCE",
342
+ "description": "Controls detect and prevent backdoors, scheduled tasks, and unauthorized service installation (TA0003).",
343
+ "automation": "tooling",
344
+ "surfaces": ["infra"],
345
+ "frameworks": ["MITRE ATT&CK Enterprise"],
346
+ "required_scanners": ["checkov", "trivy"]
347
+ },
348
+ {
349
+ "id": "MITRE_PRIVILEGE_ESCALATION",
350
+ "description": "Containers and services cannot escalate to root; least-privilege IAM enforced (TA0004).",
351
+ "automation": "tooling",
352
+ "surfaces": ["infra"],
353
+ "frameworks": ["MITRE ATT&CK Enterprise", "CIS Kubernetes Benchmark"],
354
+ "required_scanners": ["checkov"]
355
+ },
356
+ {
357
+ "id": "MITRE_LATERAL_MOVEMENT",
358
+ "description": "Network segmentation and mTLS prevent lateral movement between services (TA0008).",
359
+ "automation": "evidence",
360
+ "surfaces": ["infra"],
361
+ "frameworks": ["MITRE ATT&CK Enterprise", "NIST 800-207"],
362
+ "evidence": ["network_segmentation", "zero_trust_network"]
363
+ },
364
+ {
365
+ "id": "MITRE_IMPACT",
366
+ "description": "Data backups are encrypted and tested; ransomware-resistant backup policies in place (TA0040).",
367
+ "automation": "evidence",
368
+ "surfaces": ["infra"],
369
+ "frameworks": ["MITRE ATT&CK Enterprise"],
370
+ "evidence": ["backup_encryption", "backup_tested"]
371
+ },
372
+ {
373
+ "id": "MITRE_COMMAND_CONTROL",
374
+ "description": "Egress filtering blocks C2 channels; DNS monitoring detects beaconing (TA0011).",
375
+ "automation": "evidence",
376
+ "surfaces": ["infra"],
377
+ "frameworks": ["MITRE ATT&CK Enterprise"],
378
+ "evidence": ["egress_controls", "dns_monitoring"]
379
+ },
380
+ {
381
+ "id": "AI_LLM01_PROMPT_INJECTION",
382
+ "description": "Application defends against direct and indirect prompt injection attacks (OWASP LLM01).",
383
+ "automation": "tooling",
384
+ "surfaces": ["ai"],
385
+ "frameworks": ["OWASP LLM Top 10 2025", "MITRE ATLAS"],
386
+ "required_scanners": ["semgrep"]
387
+ },
388
+ {
389
+ "id": "AI_LLM02_OUTPUT_HANDLING",
390
+ "description": "LLM outputs are validated against a schema before use in downstream systems (OWASP LLM02).",
391
+ "automation": "evidence",
392
+ "surfaces": ["ai"],
393
+ "frameworks": ["OWASP LLM Top 10 2025"],
394
+ "evidence": ["json_schema_validation", "output_encoding_present"]
395
+ },
396
+ {
397
+ "id": "AI_LLM04_MODEL_DOS",
398
+ "description": "Rate limiting and input length limits prevent model resource exhaustion (OWASP LLM04).",
399
+ "automation": "evidence",
400
+ "surfaces": ["ai", "api"],
401
+ "frameworks": ["OWASP LLM Top 10 2025"],
402
+ "evidence": ["rate_limiting_present", "input_length_limits"]
403
+ },
404
+ {
405
+ "id": "AI_LLM07_PLUGIN_DESIGN",
406
+ "description": "LLM plugins and tools operate on an explicit allowlist with minimal permissions (OWASP LLM07).",
407
+ "automation": "evidence",
408
+ "surfaces": ["ai"],
409
+ "frameworks": ["OWASP LLM Top 10 2025"],
410
+ "evidence": ["tool_allowlist_router"]
411
+ },
412
+ {
413
+ "id": "AI_LLM08_EXCESSIVE_AGENCY",
414
+ "description": "LLM agents cannot take irreversible actions without human confirmation (OWASP LLM08).",
415
+ "automation": "evidence",
416
+ "surfaces": ["ai"],
417
+ "frameworks": ["OWASP LLM Top 10 2025", "NIST AI RMF"],
418
+ "evidence": ["human_in_loop_for_actions", "tool_allowlist_router"]
419
+ },
420
+ {
421
+ "id": "SLSA_L3_PROVENANCE",
422
+ "description": "Build artifacts have signed SLSA Level 3 provenance from a hermetic, ephemeral CI build.",
423
+ "automation": "evidence",
424
+ "surfaces": ["all"],
425
+ "frameworks": ["SLSA", "NIST 800-218"],
426
+ "evidence": ["artifact_signing", "hermetic_build_configured"]
427
+ },
428
+ {
429
+ "id": "SBOM_GENERATED",
430
+ "description": "A CycloneDX or SPDX SBOM is generated on every release and stored as a signed artifact.",
431
+ "automation": "tooling",
432
+ "surfaces": ["all"],
433
+ "frameworks": ["Executive Order 14028", "NIST 800-218", "SLSA"],
434
+ "required_scanners": ["syft"]
435
+ },
436
+ {
437
+ "id": "ZERO_TRUST_MICROSEG",
438
+ "description": "Network microsegmentation enforces deny-by-default between all services.",
439
+ "automation": "evidence",
440
+ "surfaces": ["infra"],
441
+ "frameworks": ["NIST 800-207", "CISA Zero Trust Maturity Model"],
442
+ "evidence": ["network_segmentation", "zero_trust_network"]
443
+ },
444
+ {
445
+ "id": "ZERO_TRUST_CONTINUOUS_VERIFY",
446
+ "description": "Every request is continuously verified — no persistent trust based on network location.",
447
+ "automation": "evidence",
448
+ "surfaces": ["all"],
449
+ "frameworks": ["NIST 800-207"],
450
+ "evidence": ["deny_by_default_authz", "service_to_service_auth"]
451
+ },
452
+ {
453
+ "id": "IR_PLAYBOOKS_CURRENT",
454
+ "description": "Incident response playbooks exist for all surfaces, are tested within 90 days, and have contact lists.",
455
+ "automation": "tooling",
456
+ "surfaces": ["all"],
457
+ "frameworks": ["NIST 800-53", "SOC 2 Type II"],
458
+ "required_scanners": []
459
+ },
460
+ {
461
+ "id": "CIS_CONTAINER_HARDENING",
462
+ "description": "Container images comply with CIS Docker Benchmark Level 2.",
463
+ "automation": "tooling",
464
+ "surfaces": ["infra"],
465
+ "frameworks": ["CIS Benchmarks", "NIST 800-190"],
466
+ "required_scanners": ["trivy", "checkov"]
467
+ },
468
+ {
469
+ "id": "CIS_K8S_HARDENING",
470
+ "description": "Kubernetes cluster configuration complies with CIS Kubernetes Benchmark Level 2.",
471
+ "automation": "tooling",
472
+ "surfaces": ["infra"],
473
+ "frameworks": ["CIS Benchmarks", "NIST 800-190"],
474
+ "required_scanners": ["checkov"]
475
+ },
476
+ {
477
+ "id": "CIS_CLOUD_HARDENING",
478
+ "description": "Cloud account configuration complies with CIS Benchmark Level 2 for the active cloud provider.",
479
+ "automation": "tooling",
480
+ "surfaces": ["infra"],
481
+ "frameworks": ["CIS Benchmarks", "NIST 800-53"],
482
+ "required_scanners": ["checkov"]
483
+ },
484
+ {
485
+ "id": "GRAPHQL_INTROSPECTION_DISABLED",
486
+ "description": "GraphQL introspection is disabled in non-development environments.",
487
+ "automation": "tooling",
488
+ "surfaces": ["api"],
489
+ "frameworks": ["OWASP API Security Top 10", "CWE-200"],
490
+ "required_scanners": ["semgrep"]
491
+ },
492
+ {
493
+ "id": "GRAPHQL_QUERY_COMPLEXITY",
494
+ "description": "GraphQL query depth and complexity limits are enforced.",
495
+ "automation": "tooling",
496
+ "surfaces": ["api"],
497
+ "frameworks": ["OWASP API Security Top 10"],
498
+ "required_scanners": ["semgrep"]
499
+ },
500
+ {
501
+ "id": "K8S_POD_SECURITY",
502
+ "description": "Kubernetes pods enforce security contexts with least-privilege settings.",
503
+ "automation": "tooling",
504
+ "surfaces": ["infra"],
505
+ "frameworks": ["CIS Kubernetes Benchmark", "NIST 800-190"],
506
+ "required_scanners": ["checkov"]
507
+ },
508
+ {
509
+ "id": "K8S_NETWORK_POLICY",
510
+ "description": "Kubernetes NetworkPolicy resources restrict pod-to-pod traffic.",
511
+ "automation": "tooling",
512
+ "surfaces": ["infra"],
513
+ "frameworks": ["CIS Kubernetes Benchmark", "NIST 800-190"],
514
+ "required_scanners": ["checkov"]
515
+ },
516
+ {
517
+ "id": "DB_ENCRYPTION_TRANSIT",
518
+ "description": "All database connections require TLS/SSL encryption in transit.",
519
+ "automation": "tooling",
520
+ "surfaces": ["api", "infra"],
521
+ "frameworks": ["PCI DSS 4.0", "NIST 800-53"],
522
+ "required_scanners": ["semgrep"]
523
+ },
524
+ {
525
+ "id": "DB_LEAST_PRIVILEGE",
526
+ "description": "Database credentials use least-privilege accounts, not root/admin.",
527
+ "automation": "tooling",
528
+ "surfaces": ["infra"],
529
+ "frameworks": ["NIST 800-53", "CIS"],
530
+ "required_scanners": ["semgrep"]
531
+ },
532
+ {
533
+ "id": "CRYPTO_APPROVED_ALGORITHMS",
534
+ "description": "Only NIST-approved cryptographic algorithms are used (AES-256, SHA-256+, RSA-2048+).",
535
+ "automation": "tooling",
536
+ "surfaces": ["all"],
537
+ "frameworks": ["NIST SP 800-131A", "FIPS 140-3"],
538
+ "required_scanners": ["semgrep"]
539
+ },
540
+ {
541
+ "id": "DLP_NO_PII_IN_LOGS",
542
+ "description": "PII, PAN, SSN, and credentials are never written to application logs.",
543
+ "automation": "tooling",
544
+ "surfaces": ["all"],
545
+ "frameworks": ["GDPR", "HIPAA", "PCI DSS 4.0"],
546
+ "required_scanners": ["semgrep"]
155
547
  }
156
548
  ]
157
549
  }
@@ -122,5 +122,199 @@
122
122
  "src/**/tool-router*.ts",
123
123
  "src/**/tool*.ts",
124
124
  "src/**/agent*.ts"
125
+ ],
126
+ "mfa_enforced": [
127
+ "src/**/mfa*.ts",
128
+ "src/**/mfa*.js",
129
+ "src/**/totp*.ts",
130
+ "src/**/webauthn*.ts",
131
+ "src/**/passkey*.ts",
132
+ "src/**/two-factor*.ts",
133
+ "src/**/2fa*.ts",
134
+ "infra/**",
135
+ "terraform/**",
136
+ "k8s/**"
137
+ ],
138
+ "audit_logging_configured": [
139
+ "src/**/audit*.ts",
140
+ "src/**/audit*.js",
141
+ "src/**/logger*.ts",
142
+ "src/**/logging*.ts",
143
+ "src/**/log*.ts",
144
+ "lib/**/audit*.ts",
145
+ "infra/**",
146
+ "terraform/**",
147
+ "k8s/**",
148
+ "helm/**"
149
+ ],
150
+ "log_retention_policy": [
151
+ "infra/**",
152
+ "terraform/**",
153
+ "k8s/**",
154
+ "helm/**",
155
+ "docs/**",
156
+ "security/**",
157
+ ".mcp/**"
158
+ ],
159
+ "alerting_configured": [
160
+ "infra/**",
161
+ "terraform/**",
162
+ "k8s/**",
163
+ "helm/**",
164
+ "src/**/alert*.ts",
165
+ "src/**/alarm*.ts",
166
+ "src/**/monitor*.ts",
167
+ "src/**/pagerduty*.ts",
168
+ "src/**/opsgenie*.ts"
169
+ ],
170
+ "email_filtering": [
171
+ "infra/**",
172
+ "terraform/**",
173
+ "docs/**",
174
+ "security/**"
175
+ ],
176
+ "public_surface_hardened": [
177
+ "infra/**",
178
+ "terraform/**",
179
+ "k8s/**",
180
+ "helm/**",
181
+ "src/**/waf*.ts",
182
+ "src/**/ddos*.ts",
183
+ "nginx/**",
184
+ "caddy/**"
185
+ ],
186
+ "rate_limiting_present": [
187
+ "src/**/rate-limit*.ts",
188
+ "src/**/rateLimit*.ts",
189
+ "src/**/throttle*.ts",
190
+ "src/**/middleware*.ts",
191
+ "middleware.ts",
192
+ "middleware.js",
193
+ "app/api/**",
194
+ "src/api/**"
195
+ ],
196
+ "egress_controls": [
197
+ "infra/**",
198
+ "terraform/**",
199
+ "k8s/**",
200
+ "helm/**",
201
+ "src/**/egress*.ts",
202
+ "src/**/firewall*.ts",
203
+ "src/**/network*.ts"
204
+ ],
205
+ "dlp_configured": [
206
+ "src/**/dlp*.ts",
207
+ "src/**/dlp*.js",
208
+ "src/**/pii*.ts",
209
+ "src/**/redact*.ts",
210
+ "src/**/sanitize*.ts",
211
+ "infra/**",
212
+ "terraform/**"
213
+ ],
214
+ "artifact_signing": [
215
+ ".github/workflows/**",
216
+ ".gitlab-ci.yml",
217
+ "cloudbuild.yaml",
218
+ "Makefile",
219
+ "scripts/**",
220
+ "infra/**",
221
+ "cosign.pub",
222
+ "*.pub"
223
+ ],
224
+ "hermetic_build_configured": [
225
+ ".github/workflows/**",
226
+ ".gitlab-ci.yml",
227
+ "cloudbuild.yaml",
228
+ "Makefile",
229
+ "scripts/**",
230
+ "BUILD",
231
+ "BUILD.bazel"
232
+ ],
233
+ "ir_playbook_present": [
234
+ "security/**",
235
+ "docs/security/**",
236
+ "runbooks/**",
237
+ "playbooks/**",
238
+ ".mcp/**"
239
+ ],
240
+ "ir_playbook_tested": [
241
+ "security/**",
242
+ "docs/security/**",
243
+ "runbooks/**",
244
+ "playbooks/**"
245
+ ],
246
+ "network_segmentation": [
247
+ "infra/**",
248
+ "terraform/**",
249
+ "k8s/**",
250
+ "helm/**"
251
+ ],
252
+ "zero_trust_network": [
253
+ "infra/**",
254
+ "terraform/**",
255
+ "k8s/**",
256
+ "helm/**",
257
+ "src/**/mtls*.ts",
258
+ "src/**/spiffe*.ts",
259
+ "src/**/zero-trust*.ts"
260
+ ],
261
+ "backup_encryption": [
262
+ "infra/**",
263
+ "terraform/**",
264
+ "k8s/**"
265
+ ],
266
+ "backup_tested": [
267
+ "docs/**",
268
+ "security/**",
269
+ "runbooks/**"
270
+ ],
271
+ "dns_monitoring": [
272
+ "infra/**",
273
+ "terraform/**"
274
+ ],
275
+ "pan_encryption_configured": [
276
+ "infra/**",
277
+ "terraform/**",
278
+ "src/**/payment*.ts",
279
+ "src/**/card*.ts",
280
+ "src/**/stripe*.ts",
281
+ "src/**/braintree*.ts"
282
+ ],
283
+ "no_plaintext_pan": [
284
+ "**/*.ts",
285
+ "**/*.js",
286
+ "**/*.py",
287
+ "**/*.go",
288
+ "**/*.java"
289
+ ],
290
+ "input_validation_schema": [
291
+ "src/**",
292
+ "app/**",
293
+ "lib/**",
294
+ "server/**"
295
+ ],
296
+ "output_encoding_present": [
297
+ "src/**",
298
+ "app/**",
299
+ "lib/**"
300
+ ],
301
+ "service_account_per_workload": [
302
+ "infra/**",
303
+ "terraform/**",
304
+ "k8s/**",
305
+ "helm/**"
306
+ ],
307
+ "human_in_loop_for_actions": [
308
+ "ai/**",
309
+ "src/**/agent*.ts",
310
+ "src/**/tool*.ts",
311
+ "src/**/confirm*.ts",
312
+ "src/**/approval*.ts"
313
+ ],
314
+ "input_length_limits": [
315
+ "src/**",
316
+ "app/**",
317
+ "middleware.ts",
318
+ "middleware.js"
125
319
  ]
126
320
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "security-policy",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "description": "Default security gate policy for security-mcp. Copy to .mcp/policies/security-policy.json and customize for your project.",
5
5
  "required_checks": {
6
6
  "secrets_scan": { "severity_block": ["HIGH", "CRITICAL"] },
@@ -8,6 +8,44 @@
8
8
  "sast": { "severity_block": ["CRITICAL"] },
9
9
  "iac_scan": { "severity_block": ["HIGH", "CRITICAL"] }
10
10
  },
11
+ "environments": {
12
+ "dev": {
13
+ "severity_block": ["CRITICAL"],
14
+ "required_scanners": ["gitleaks"],
15
+ "required_checks": ["secrets_scan"],
16
+ "vulnerability_slas": {
17
+ "CRITICAL": "7d",
18
+ "HIGH": "30d",
19
+ "MEDIUM": "90d",
20
+ "LOW": "never"
21
+ }
22
+ },
23
+ "staging": {
24
+ "severity_block": ["HIGH", "CRITICAL"],
25
+ "required_scanners": ["gitleaks", "semgrep", "osv-scanner"],
26
+ "required_checks": ["secrets_scan", "dependency_scan", "sast"],
27
+ "vulnerability_slas": {
28
+ "CRITICAL": "24h",
29
+ "HIGH": "7d",
30
+ "MEDIUM": "30d",
31
+ "LOW": "90d",
32
+ "CISA_KEV": "24h"
33
+ }
34
+ },
35
+ "prod": {
36
+ "severity_block": ["MEDIUM", "HIGH", "CRITICAL"],
37
+ "required_scanners": ["gitleaks", "semgrep", "osv-scanner", "trivy", "checkov"],
38
+ "required_checks": ["secrets_scan", "dependency_scan", "sast", "iac_scan"],
39
+ "vulnerability_slas": {
40
+ "CRITICAL": "24h",
41
+ "HIGH": "7d",
42
+ "MEDIUM": "30d",
43
+ "LOW": "90d",
44
+ "CISA_KEV": "24h",
45
+ "HIGH_EPSS": "48h"
46
+ }
47
+ }
48
+ },
11
49
  "requirements": [
12
50
  {
13
51
  "id": "ZERO_TRUST",
@@ -84,7 +122,8 @@
84
122
  "HIGH": "7d",
85
123
  "MEDIUM": "30d",
86
124
  "LOW": "90d",
87
- "CISA_KEV": "24h"
125
+ "CISA_KEV": "24h",
126
+ "HIGH_EPSS": "48h"
88
127
  },
89
128
  "exceptions": {
90
129
  "require_ticket": true,