@clear-capabilities/agentic-security-scanner 0.78.0 → 0.80.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.
Files changed (126) hide show
  1. package/bin/.agentic-security/findings.json +16 -16
  2. package/bin/.agentic-security/last-scan.json +16 -16
  3. package/bin/.agentic-security/last-scan.json.sig +1 -1
  4. package/bin/.agentic-security/scan-history.json +51 -0
  5. package/bin/.agentic-security/streak.json +5 -5
  6. package/bin/agentic-security.js +22 -7
  7. package/dist/178.index.js +1 -1
  8. package/dist/333.index.js +283 -0
  9. package/dist/384.index.js +1 -1
  10. package/dist/476.index.js +5 -5
  11. package/dist/637.index.js +1 -1
  12. package/dist/700.index.js +138 -0
  13. package/dist/718.index.js +53 -0
  14. package/dist/838.index.js +1 -1
  15. package/dist/985.index.js +95 -1
  16. package/dist/agentic-security.mjs +83 -83
  17. package/dist/agentic-security.mjs.sha256 +1 -1
  18. package/package.json +6 -4
  19. package/src/.agentic-security/findings.json +29799 -7803
  20. package/src/.agentic-security/last-scan.json +29799 -7803
  21. package/src/.agentic-security/last-scan.json.sig +1 -1
  22. package/src/.agentic-security/scan-history.json +5119 -2611
  23. package/src/.agentic-security/streak.json +6 -6
  24. package/src/dataflow/.agentic-security/findings.json +2879 -308
  25. package/src/dataflow/.agentic-security/last-scan.json +2879 -308
  26. package/src/dataflow/.agentic-security/last-scan.json.sig +1 -1
  27. package/src/dataflow/.agentic-security/scan-history.json +68 -520
  28. package/src/dataflow/.agentic-security/streak.json +6 -7
  29. package/src/dataflow/cross-service-taint.js +201 -0
  30. package/src/dataflow/engine.js +52 -8
  31. package/src/dataflow/formal-verify.js +204 -0
  32. package/src/dataflow/ifds-precise.js +222 -0
  33. package/src/dataflow/k2-summary-cache.js +153 -0
  34. package/src/dataflow/lib-taint-summaries.js +198 -0
  35. package/src/dataflow/privacy-taint.js +205 -0
  36. package/src/dataflow/smt-feasibility.js +189 -0
  37. package/src/engine.js +890 -132
  38. package/src/integrations/index.js +2 -1
  39. package/src/ir/.agentic-security/findings.json +240 -6
  40. package/src/ir/.agentic-security/last-scan.json +240 -6
  41. package/src/ir/.agentic-security/last-scan.json.sig +1 -1
  42. package/src/ir/.agentic-security/scan-history.json +16 -594
  43. package/src/ir/.agentic-security/streak.json +8 -9
  44. package/src/ir/callgraph.js +27 -7
  45. package/src/ir/cpp-preprocessor.js +142 -0
  46. package/src/ir/csharp-ir.js +604 -0
  47. package/src/ir/universal-ir.js +403 -0
  48. package/src/llm-validator/index.js +7 -5
  49. package/src/mcp/.agentic-security/findings.json +8632 -0
  50. package/src/mcp/.agentic-security/last-scan.json +8632 -0
  51. package/src/mcp/.agentic-security/last-scan.json.sig +1 -0
  52. package/src/mcp/.agentic-security/scan-history.json +143 -0
  53. package/src/mcp/.agentic-security/streak.json +20 -0
  54. package/src/mcp/audit.js +5 -0
  55. package/src/mcp/tools.js +90 -1
  56. package/src/posture/.agentic-security/findings.json +16809 -4367
  57. package/src/posture/.agentic-security/last-scan.json +16809 -4367
  58. package/src/posture/.agentic-security/last-scan.json.sig +1 -1
  59. package/src/posture/.agentic-security/scan-history.json +6689 -177
  60. package/src/posture/.agentic-security/streak.json +8 -7
  61. package/src/posture/api-contract.js +193 -0
  62. package/src/posture/attack-taxonomy.js +227 -0
  63. package/src/posture/calibration-drift.js +2 -1
  64. package/src/posture/calibration.js +3 -2
  65. package/src/posture/compliance-policy.js +218 -0
  66. package/src/posture/composite-risk.js +122 -0
  67. package/src/posture/csharp-analysis.js +330 -0
  68. package/src/posture/exploit-bundle.js +210 -0
  69. package/src/posture/federated-learning.js +172 -0
  70. package/src/posture/fix-history.js +8 -2
  71. package/src/posture/license-attributions.js +94 -0
  72. package/src/posture/license-graph.js +238 -0
  73. package/src/posture/pqc-migration-plan.js +158 -0
  74. package/src/posture/profile.js +4 -5
  75. package/src/posture/reachability-filter.js +33 -2
  76. package/src/posture/realtime-cve-monitor.js +214 -0
  77. package/src/posture/rule-overrides.js +2 -3
  78. package/src/posture/rule-pack-signing.js +2 -3
  79. package/src/posture/rule-synthesis.js +5 -6
  80. package/src/posture/runtime-correlation.js +174 -0
  81. package/src/posture/sbom-diff.js +171 -0
  82. package/src/posture/sca-policy.js +235 -0
  83. package/src/posture/sca-upgrade.js +259 -0
  84. package/src/posture/security-trend.js +4 -7
  85. package/src/posture/state-dir.js +124 -0
  86. package/src/posture/streak.js +3 -0
  87. package/src/posture/suppressions.js +5 -8
  88. package/src/posture/threat-model-auto.js +268 -0
  89. package/src/posture/triage-learning.js +170 -0
  90. package/src/posture/triage.js +29 -6
  91. package/src/posture/validator-metrics.js +3 -6
  92. package/src/sast/.agentic-security/findings.json +996 -32
  93. package/src/sast/.agentic-security/last-scan.json +996 -32
  94. package/src/sast/.agentic-security/last-scan.json.sig +1 -1
  95. package/src/sast/.agentic-security/scan-history.json +565 -32
  96. package/src/sast/.agentic-security/streak.json +10 -8
  97. package/src/sast/_secret-entropy.js +145 -0
  98. package/src/sast/cloud-iam.js +312 -0
  99. package/src/sast/cpp.js +138 -4
  100. package/src/sast/crypto-protocol.js +388 -0
  101. package/src/sast/csharp-tokenizer.js +392 -0
  102. package/src/sast/csharp.js +924 -138
  103. package/src/sast/dapp-frontend.js +200 -0
  104. package/src/sast/db-taint.js +24 -0
  105. package/src/sast/k8s-admission.js +271 -0
  106. package/src/sast/llm-app.js +272 -0
  107. package/src/sast/ml-supply-chain.js +259 -0
  108. package/src/sast/mobile.js +224 -0
  109. package/src/sast/post-quantum-crypto.js +348 -0
  110. package/src/sast/rust.js +26 -0
  111. package/src/sast/web3-advanced.js +375 -0
  112. package/src/sca/.agentic-security/findings.json +6044 -171
  113. package/src/sca/.agentic-security/last-scan.json +6044 -171
  114. package/src/sca/.agentic-security/last-scan.json.sig +1 -1
  115. package/src/sca/.agentic-security/scan-history.json +83 -6
  116. package/src/sca/.agentic-security/streak.json +9 -9
  117. package/src/sca/CLAUDE.md +161 -0
  118. package/src/sca/binary-metadata.js +146 -0
  119. package/src/sca/py-package-functions.js +118 -0
  120. package/src/sca/sigstore-verify.js +215 -0
  121. package/src/sca/vendor-detect.js +53 -0
  122. package/src/report/.agentic-security/findings.json +0 -80
  123. package/src/report/.agentic-security/last-scan.json +0 -80
  124. package/src/report/.agentic-security/last-scan.json.sig +0 -1
  125. package/src/report/.agentic-security/scan-history.json +0 -35
  126. package/src/report/.agentic-security/streak.json +0 -22
@@ -13,9 +13,10 @@
13
13
  import * as fs from 'node:fs';
14
14
  import * as path from 'node:path';
15
15
  import * as yaml from 'js-yaml';
16
+ import { statePath } from '../posture/state-dir.js';
16
17
 
17
18
  function _configPath(scanRoot) {
18
- return path.join(scanRoot || process.cwd(), '.agentic-security', 'integrations.yml');
19
+ return statePath(scanRoot, 'integrations.yml');
19
20
  }
20
21
 
21
22
  export function loadIntegrationConfig(scanRoot) {
@@ -1,9 +1,9 @@
1
1
  {
2
- "scanId": "1a8e7623-7074-46ec-9fe6-a8a0d25ee3c6",
3
- "startedAt": "2026-05-27T02:22:41.834Z",
4
- "durationMs": 363,
2
+ "scanId": "dab30d60-68ee-499a-a5a0-9a73b9fc15de",
3
+ "startedAt": "2026-05-29T06:24:38.089Z",
4
+ "durationMs": 435,
5
5
  "scanned": {
6
- "files": 15,
6
+ "files": 18,
7
7
  "lines": 0
8
8
  },
9
9
  "findings": [
@@ -1217,6 +1217,235 @@
1217
1217
  "ethics": "# AUTHORIZED USE ONLY — run only against systems you own or have explicit permission to test."
1218
1218
  }
1219
1219
  },
1220
+ {
1221
+ "id": "struct:cpp-preprocessor.js:94:Synchronous_Blocking_I/O_(DoS_Risk_in_Server_Context)",
1222
+ "kind": "sast",
1223
+ "severity": "medium",
1224
+ "vuln": "Synchronous Blocking I/O (DoS Risk in Server Context)",
1225
+ "cwe": "CWE-400",
1226
+ "owaspLlm": null,
1227
+ "stride": "Denial of Service",
1228
+ "file": "cpp-preprocessor.js",
1229
+ "line": 94,
1230
+ "snippet": "try { content = fs.readFileSync(abs, 'utf8'); }",
1231
+ "fix": null,
1232
+ "reachable": false,
1233
+ "triage": 22,
1234
+ "dataClasses": [],
1235
+ "chain": null,
1236
+ "confidence": 0.212,
1237
+ "toxicity": 28,
1238
+ "toxicityFactors": [
1239
+ "http-facing"
1240
+ ],
1241
+ "toxicityLabel": "Medium",
1242
+ "sources": null,
1243
+ "epssScore": null,
1244
+ "epssPercentile": null,
1245
+ "epssCve": null,
1246
+ "exploitedNow": false,
1247
+ "tags": null,
1248
+ "blastRadius": {
1249
+ "scope": "all-users",
1250
+ "dataAtRisk": [
1251
+ "config"
1252
+ ],
1253
+ "userCount": 50,
1254
+ "industry": "generic",
1255
+ "jurisdictions": [],
1256
+ "controlsApplied": [],
1257
+ "dollarBest": 23250,
1258
+ "dollarLikely": 136250,
1259
+ "dollarWorst": 775000,
1260
+ "dollarLow": 23250,
1261
+ "dollarHigh": 775000,
1262
+ "components": {
1263
+ "incidentResponse": {
1264
+ "low": 8000,
1265
+ "likely": 50000,
1266
+ "high": 250000
1267
+ },
1268
+ "legal": {
1269
+ "low": 10000,
1270
+ "likely": 75000,
1271
+ "high": 500000
1272
+ },
1273
+ "crisisPR": {
1274
+ "low": 0,
1275
+ "likely": 0,
1276
+ "high": 0
1277
+ },
1278
+ "notification": {
1279
+ "low": 5000,
1280
+ "likely": 10000,
1281
+ "high": 15000
1282
+ },
1283
+ "creditMonitoring": {
1284
+ "low": 0,
1285
+ "likely": 0,
1286
+ "high": 0
1287
+ },
1288
+ "regulatoryFines": {
1289
+ "low": 0,
1290
+ "likely": 0,
1291
+ "high": 0
1292
+ },
1293
+ "directDamage": {
1294
+ "low": 250,
1295
+ "likely": 1250,
1296
+ "high": 10000
1297
+ },
1298
+ "classAction": {
1299
+ "low": 0,
1300
+ "likely": 0,
1301
+ "high": 0
1302
+ },
1303
+ "lostBusiness": {
1304
+ "low": 0,
1305
+ "likely": 0,
1306
+ "high": 0
1307
+ }
1308
+ },
1309
+ "dominantDriver": "legal counsel",
1310
+ "comparable": "Air Canada 2024 LLM chatbot DoS → court-ordered refunds + reputational damage",
1311
+ "confidence": "low",
1312
+ "narrative": "Synchronous Blocking I/O (DoS Risk in Server Context) on `cpp-preprocessor.js:94` could expose configuration / internal data. Context: general SaaS / no specific regulatory exposure. Estimated cost: best $23k · likely $136k · worst $775k. Dominant driver: legal counsel. Comparable: Air Canada 2024 LLM chatbot DoS → court-ordered refunds + reputational damage."
1313
+ },
1314
+ "stableId": "0b0187a7e1476c07",
1315
+ "confidenceTier": "very-low",
1316
+ "exploitability": 0.2,
1317
+ "exploitabilityTier": "low",
1318
+ "exploitabilityFactors": [
1319
+ "sev:medium",
1320
+ "unreachable"
1321
+ ],
1322
+ "clusterSize": null,
1323
+ "unreachable": false,
1324
+ "validator_verdict": "unvalidated",
1325
+ "llm_confidence": null,
1326
+ "unvalidated": true,
1327
+ "cross_language": false,
1328
+ "family": "dos-sync-io",
1329
+ "parser": "STRUCTURAL",
1330
+ "_unsigned": false,
1331
+ "_passThroughSigning": false,
1332
+ "signatureStatus": "verified",
1333
+ "regression_test": null,
1334
+ "poc": null,
1335
+ "calibrated_confidence": null,
1336
+ "calibrated_confidence_ci": null,
1337
+ "calibrated_n": 0,
1338
+ "calibration_reason": "no-history",
1339
+ "verifier_verdict": "cannot-verify",
1340
+ "verifier_reason": "no-poc-no-sanitizer-rule",
1341
+ "verifier_runner": null,
1342
+ "narration": null,
1343
+ "mitigationVerdict": "unreachable-in-prod",
1344
+ "mitigationsApplied": [],
1345
+ "mitigatedByWaf": false,
1346
+ "wafRuleId": null,
1347
+ "mitigatedByAuth": false,
1348
+ "authMechanism": null,
1349
+ "mitigatedByNetwork": false,
1350
+ "networkExposure": null,
1351
+ "featureFlag": null,
1352
+ "featureFlagState": null,
1353
+ "featureFlagRollout": null,
1354
+ "exposedInProd": false,
1355
+ "unreachableInProd": true,
1356
+ "coldPath": false,
1357
+ "hotPath": false,
1358
+ "prodRequestCount": null,
1359
+ "crownJewelScore": 0,
1360
+ "crownJewelTier": "unknown",
1361
+ "crownJewelFactors": [],
1362
+ "cloneClusterId": "c5704ff81dc82f80",
1363
+ "cloneClusterSize": 1,
1364
+ "provenance": "mixed",
1365
+ "provenanceScore": 0.3,
1366
+ "typeNarrowed": null,
1367
+ "strideCategory": "denialOfService",
1368
+ "personaScores": {
1369
+ "script-kiddie": {
1370
+ "score": 0.4,
1371
+ "tier": "medium",
1372
+ "factors": [
1373
+ "sev:medium"
1374
+ ]
1375
+ },
1376
+ "opportunistic-criminal": {
1377
+ "score": 0.4,
1378
+ "tier": "medium",
1379
+ "factors": [
1380
+ "sev:medium"
1381
+ ]
1382
+ },
1383
+ "apt-nation-state": {
1384
+ "score": 0.4,
1385
+ "tier": "medium",
1386
+ "factors": [
1387
+ "sev:medium"
1388
+ ]
1389
+ },
1390
+ "supply-chain-attacker": {
1391
+ "score": 0.4,
1392
+ "tier": "medium",
1393
+ "factors": [
1394
+ "sev:medium"
1395
+ ]
1396
+ },
1397
+ "malicious-insider": {
1398
+ "score": 0.4,
1399
+ "tier": "medium",
1400
+ "factors": [
1401
+ "sev:medium"
1402
+ ]
1403
+ }
1404
+ },
1405
+ "personaTopTwo": [
1406
+ "script-kiddie",
1407
+ "opportunistic-criminal"
1408
+ ],
1409
+ "personaMaxName": "script-kiddie",
1410
+ "personaMaxScore": 0.4,
1411
+ "reverseExposure": null,
1412
+ "specMined": null,
1413
+ "whyFired": {
1414
+ "detector": "sast/dos-sync-io",
1415
+ "ruleId": "CWE-400",
1416
+ "parser": "STRUCTURAL",
1417
+ "evidence": {
1418
+ "sinkSnippet": "try { content = fs.readFileSync(abs, 'utf8'); }",
1419
+ "sourceSnippet": "try { content = fs.readFileSync(abs, 'utf8'); }",
1420
+ "pathSteps": [],
1421
+ "sanitizers": [],
1422
+ "guards": []
1423
+ },
1424
+ "considered": {
1425
+ "suppressionsApplied": [],
1426
+ "suppressionsSkipped": [],
1427
+ "reachabilityFilter": "unaffected",
1428
+ "clusterCollapsed": false,
1429
+ "typeNarrowed": false,
1430
+ "crownJewelTier": "unknown",
1431
+ "mitigationVerdict": "unreachable-in-prod"
1432
+ },
1433
+ "scanner": {
1434
+ "rulesetVersion": null,
1435
+ "packHash": null,
1436
+ "modelId": null
1437
+ }
1438
+ },
1439
+ "adversaryTranscript": null,
1440
+ "predictedBountyUsd": {
1441
+ "low": 10,
1442
+ "likely": 40,
1443
+ "high": 120,
1444
+ "program": "web2"
1445
+ },
1446
+ "bountyConfidence": "high",
1447
+ "attackPlaybook": null
1448
+ },
1220
1449
  {
1221
1450
  "id": "struct:type-stubs.js:48:Synchronous_Blocking_I/O_(DoS_Risk_in_Server_Context)",
1222
1451
  "kind": "sast",
@@ -3631,7 +3860,7 @@
3631
3860
  "_v3": {
3632
3861
  "counterfactual": {
3633
3862
  "spofControls": [],
3634
- "controlsDetected": 307
3863
+ "controlsDetected": 379
3635
3864
  },
3636
3865
  "threatModel": {
3637
3866
  "summary": {
@@ -3642,7 +3871,7 @@
3642
3871
  "tampering": 1,
3643
3872
  "repudiation": 0,
3644
3873
  "informationDisclosure": 0,
3645
- "denialOfService": 9,
3874
+ "denialOfService": 10,
3646
3875
  "elevationOfPrivilege": 0
3647
3876
  }
3648
3877
  },
@@ -3674,6 +3903,11 @@
3674
3903
  "repudiation": [],
3675
3904
  "informationDisclosure": [],
3676
3905
  "denialOfService": [
3906
+ {
3907
+ "vuln": "Synchronous Blocking I/O (DoS Risk in Server Context)",
3908
+ "file": "cpp-preprocessor.js",
3909
+ "severity": "medium"
3910
+ },
3677
3911
  {
3678
3912
  "vuln": "Synchronous Blocking I/O (DoS Risk in Server Context)",
3679
3913
  "file": "type-stubs.js",
@@ -1,9 +1,9 @@
1
1
  {
2
- "scanId": "1a8e7623-7074-46ec-9fe6-a8a0d25ee3c6",
3
- "startedAt": "2026-05-27T02:22:41.834Z",
4
- "durationMs": 363,
2
+ "scanId": "dab30d60-68ee-499a-a5a0-9a73b9fc15de",
3
+ "startedAt": "2026-05-29T06:24:38.089Z",
4
+ "durationMs": 435,
5
5
  "scanned": {
6
- "files": 15,
6
+ "files": 18,
7
7
  "lines": 0
8
8
  },
9
9
  "findings": [
@@ -1217,6 +1217,235 @@
1217
1217
  "ethics": "# AUTHORIZED USE ONLY — run only against systems you own or have explicit permission to test."
1218
1218
  }
1219
1219
  },
1220
+ {
1221
+ "id": "struct:cpp-preprocessor.js:94:Synchronous_Blocking_I/O_(DoS_Risk_in_Server_Context)",
1222
+ "kind": "sast",
1223
+ "severity": "medium",
1224
+ "vuln": "Synchronous Blocking I/O (DoS Risk in Server Context)",
1225
+ "cwe": "CWE-400",
1226
+ "owaspLlm": null,
1227
+ "stride": "Denial of Service",
1228
+ "file": "cpp-preprocessor.js",
1229
+ "line": 94,
1230
+ "snippet": "try { content = fs.readFileSync(abs, 'utf8'); }",
1231
+ "fix": null,
1232
+ "reachable": false,
1233
+ "triage": 22,
1234
+ "dataClasses": [],
1235
+ "chain": null,
1236
+ "confidence": 0.212,
1237
+ "toxicity": 28,
1238
+ "toxicityFactors": [
1239
+ "http-facing"
1240
+ ],
1241
+ "toxicityLabel": "Medium",
1242
+ "sources": null,
1243
+ "epssScore": null,
1244
+ "epssPercentile": null,
1245
+ "epssCve": null,
1246
+ "exploitedNow": false,
1247
+ "tags": null,
1248
+ "blastRadius": {
1249
+ "scope": "all-users",
1250
+ "dataAtRisk": [
1251
+ "config"
1252
+ ],
1253
+ "userCount": 50,
1254
+ "industry": "generic",
1255
+ "jurisdictions": [],
1256
+ "controlsApplied": [],
1257
+ "dollarBest": 23250,
1258
+ "dollarLikely": 136250,
1259
+ "dollarWorst": 775000,
1260
+ "dollarLow": 23250,
1261
+ "dollarHigh": 775000,
1262
+ "components": {
1263
+ "incidentResponse": {
1264
+ "low": 8000,
1265
+ "likely": 50000,
1266
+ "high": 250000
1267
+ },
1268
+ "legal": {
1269
+ "low": 10000,
1270
+ "likely": 75000,
1271
+ "high": 500000
1272
+ },
1273
+ "crisisPR": {
1274
+ "low": 0,
1275
+ "likely": 0,
1276
+ "high": 0
1277
+ },
1278
+ "notification": {
1279
+ "low": 5000,
1280
+ "likely": 10000,
1281
+ "high": 15000
1282
+ },
1283
+ "creditMonitoring": {
1284
+ "low": 0,
1285
+ "likely": 0,
1286
+ "high": 0
1287
+ },
1288
+ "regulatoryFines": {
1289
+ "low": 0,
1290
+ "likely": 0,
1291
+ "high": 0
1292
+ },
1293
+ "directDamage": {
1294
+ "low": 250,
1295
+ "likely": 1250,
1296
+ "high": 10000
1297
+ },
1298
+ "classAction": {
1299
+ "low": 0,
1300
+ "likely": 0,
1301
+ "high": 0
1302
+ },
1303
+ "lostBusiness": {
1304
+ "low": 0,
1305
+ "likely": 0,
1306
+ "high": 0
1307
+ }
1308
+ },
1309
+ "dominantDriver": "legal counsel",
1310
+ "comparable": "Air Canada 2024 LLM chatbot DoS → court-ordered refunds + reputational damage",
1311
+ "confidence": "low",
1312
+ "narrative": "Synchronous Blocking I/O (DoS Risk in Server Context) on `cpp-preprocessor.js:94` could expose configuration / internal data. Context: general SaaS / no specific regulatory exposure. Estimated cost: best $23k · likely $136k · worst $775k. Dominant driver: legal counsel. Comparable: Air Canada 2024 LLM chatbot DoS → court-ordered refunds + reputational damage."
1313
+ },
1314
+ "stableId": "0b0187a7e1476c07",
1315
+ "confidenceTier": "very-low",
1316
+ "exploitability": 0.2,
1317
+ "exploitabilityTier": "low",
1318
+ "exploitabilityFactors": [
1319
+ "sev:medium",
1320
+ "unreachable"
1321
+ ],
1322
+ "clusterSize": null,
1323
+ "unreachable": false,
1324
+ "validator_verdict": "unvalidated",
1325
+ "llm_confidence": null,
1326
+ "unvalidated": true,
1327
+ "cross_language": false,
1328
+ "family": "dos-sync-io",
1329
+ "parser": "STRUCTURAL",
1330
+ "_unsigned": false,
1331
+ "_passThroughSigning": false,
1332
+ "signatureStatus": "verified",
1333
+ "regression_test": null,
1334
+ "poc": null,
1335
+ "calibrated_confidence": null,
1336
+ "calibrated_confidence_ci": null,
1337
+ "calibrated_n": 0,
1338
+ "calibration_reason": "no-history",
1339
+ "verifier_verdict": "cannot-verify",
1340
+ "verifier_reason": "no-poc-no-sanitizer-rule",
1341
+ "verifier_runner": null,
1342
+ "narration": null,
1343
+ "mitigationVerdict": "unreachable-in-prod",
1344
+ "mitigationsApplied": [],
1345
+ "mitigatedByWaf": false,
1346
+ "wafRuleId": null,
1347
+ "mitigatedByAuth": false,
1348
+ "authMechanism": null,
1349
+ "mitigatedByNetwork": false,
1350
+ "networkExposure": null,
1351
+ "featureFlag": null,
1352
+ "featureFlagState": null,
1353
+ "featureFlagRollout": null,
1354
+ "exposedInProd": false,
1355
+ "unreachableInProd": true,
1356
+ "coldPath": false,
1357
+ "hotPath": false,
1358
+ "prodRequestCount": null,
1359
+ "crownJewelScore": 0,
1360
+ "crownJewelTier": "unknown",
1361
+ "crownJewelFactors": [],
1362
+ "cloneClusterId": "c5704ff81dc82f80",
1363
+ "cloneClusterSize": 1,
1364
+ "provenance": "mixed",
1365
+ "provenanceScore": 0.3,
1366
+ "typeNarrowed": null,
1367
+ "strideCategory": "denialOfService",
1368
+ "personaScores": {
1369
+ "script-kiddie": {
1370
+ "score": 0.4,
1371
+ "tier": "medium",
1372
+ "factors": [
1373
+ "sev:medium"
1374
+ ]
1375
+ },
1376
+ "opportunistic-criminal": {
1377
+ "score": 0.4,
1378
+ "tier": "medium",
1379
+ "factors": [
1380
+ "sev:medium"
1381
+ ]
1382
+ },
1383
+ "apt-nation-state": {
1384
+ "score": 0.4,
1385
+ "tier": "medium",
1386
+ "factors": [
1387
+ "sev:medium"
1388
+ ]
1389
+ },
1390
+ "supply-chain-attacker": {
1391
+ "score": 0.4,
1392
+ "tier": "medium",
1393
+ "factors": [
1394
+ "sev:medium"
1395
+ ]
1396
+ },
1397
+ "malicious-insider": {
1398
+ "score": 0.4,
1399
+ "tier": "medium",
1400
+ "factors": [
1401
+ "sev:medium"
1402
+ ]
1403
+ }
1404
+ },
1405
+ "personaTopTwo": [
1406
+ "script-kiddie",
1407
+ "opportunistic-criminal"
1408
+ ],
1409
+ "personaMaxName": "script-kiddie",
1410
+ "personaMaxScore": 0.4,
1411
+ "reverseExposure": null,
1412
+ "specMined": null,
1413
+ "whyFired": {
1414
+ "detector": "sast/dos-sync-io",
1415
+ "ruleId": "CWE-400",
1416
+ "parser": "STRUCTURAL",
1417
+ "evidence": {
1418
+ "sinkSnippet": "try { content = fs.readFileSync(abs, 'utf8'); }",
1419
+ "sourceSnippet": "try { content = fs.readFileSync(abs, 'utf8'); }",
1420
+ "pathSteps": [],
1421
+ "sanitizers": [],
1422
+ "guards": []
1423
+ },
1424
+ "considered": {
1425
+ "suppressionsApplied": [],
1426
+ "suppressionsSkipped": [],
1427
+ "reachabilityFilter": "unaffected",
1428
+ "clusterCollapsed": false,
1429
+ "typeNarrowed": false,
1430
+ "crownJewelTier": "unknown",
1431
+ "mitigationVerdict": "unreachable-in-prod"
1432
+ },
1433
+ "scanner": {
1434
+ "rulesetVersion": null,
1435
+ "packHash": null,
1436
+ "modelId": null
1437
+ }
1438
+ },
1439
+ "adversaryTranscript": null,
1440
+ "predictedBountyUsd": {
1441
+ "low": 10,
1442
+ "likely": 40,
1443
+ "high": 120,
1444
+ "program": "web2"
1445
+ },
1446
+ "bountyConfidence": "high",
1447
+ "attackPlaybook": null
1448
+ },
1220
1449
  {
1221
1450
  "id": "struct:type-stubs.js:48:Synchronous_Blocking_I/O_(DoS_Risk_in_Server_Context)",
1222
1451
  "kind": "sast",
@@ -3631,7 +3860,7 @@
3631
3860
  "_v3": {
3632
3861
  "counterfactual": {
3633
3862
  "spofControls": [],
3634
- "controlsDetected": 307
3863
+ "controlsDetected": 379
3635
3864
  },
3636
3865
  "threatModel": {
3637
3866
  "summary": {
@@ -3642,7 +3871,7 @@
3642
3871
  "tampering": 1,
3643
3872
  "repudiation": 0,
3644
3873
  "informationDisclosure": 0,
3645
- "denialOfService": 9,
3874
+ "denialOfService": 10,
3646
3875
  "elevationOfPrivilege": 0
3647
3876
  }
3648
3877
  },
@@ -3674,6 +3903,11 @@
3674
3903
  "repudiation": [],
3675
3904
  "informationDisclosure": [],
3676
3905
  "denialOfService": [
3906
+ {
3907
+ "vuln": "Synchronous Blocking I/O (DoS Risk in Server Context)",
3908
+ "file": "cpp-preprocessor.js",
3909
+ "severity": "medium"
3910
+ },
3677
3911
  {
3678
3912
  "vuln": "Synchronous Blocking I/O (DoS Risk in Server Context)",
3679
3913
  "file": "type-stubs.js",
@@ -1 +1 @@
1
- 2d6b454b1b54b22d2448f5dd18fb90e019441e946757937852bed1278c2c80be
1
+ da76e96762f8d7ee6ac2ee8968d5822c14bee45de513ed9c1d60cf6f6694c261