@clear-capabilities/agentic-security-scanner 0.76.1 → 0.78.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/bin/.agentic-security/findings.json +320 -9
- package/bin/.agentic-security/last-scan.json +320 -9
- package/bin/.agentic-security/last-scan.json.sig +1 -1
- package/bin/.agentic-security/scan-history.json +17 -377
- package/bin/.agentic-security/streak.json +11 -16
- package/bin/agentic-security.js +33 -2
- package/dist/178.index.js +1 -1
- package/dist/384.index.js +1 -1
- package/dist/637.index.js +1 -1
- package/dist/718.index.js +106 -0
- package/dist/824.index.js +126 -0
- package/dist/838.index.js +1 -1
- package/dist/agentic-security.mjs +32 -32
- package/dist/agentic-security.mjs.sha256 +1 -1
- package/package.json +7 -7
- package/src/.agentic-security/findings.json +5731 -3933
- package/src/.agentic-security/last-scan.json +5731 -3933
- package/src/.agentic-security/last-scan.json.sig +1 -1
- package/src/.agentic-security/scan-history.json +2533 -887
- package/src/.agentic-security/streak.json +11 -16
- package/src/dataflow/.agentic-security/findings.json +52 -24
- package/src/dataflow/.agentic-security/last-scan.json +52 -24
- package/src/dataflow/.agentic-security/last-scan.json.sig +1 -1
- package/src/dataflow/.agentic-security/scan-history.json +101 -134
- package/src/dataflow/.agentic-security/streak.json +8 -10
- package/src/dataflow/async-sequencing.js +16 -7
- package/src/dataflow/builtin-summaries.js +131 -0
- package/src/dataflow/catalog.js +107 -0
- package/src/dataflow/cross-repo.js +75 -1
- package/src/dataflow/engine.js +129 -0
- package/src/dataflow/implicit-flow.js +24 -6
- package/src/dataflow/stub-aware-filter.js +69 -11
- package/src/dataflow/summaries.js +28 -3
- package/src/engine-parallel.js +70 -0
- package/src/engine.js +165 -15
- package/src/ir/.agentic-security/findings.json +757 -16
- package/src/ir/.agentic-security/last-scan.json +757 -16
- package/src/ir/.agentic-security/last-scan.json.sig +1 -1
- package/src/ir/.agentic-security/scan-history.json +545 -138
- package/src/ir/.agentic-security/streak.json +11 -13
- package/src/ir/index.js +22 -1
- package/src/ir/parser-go.js +403 -0
- package/src/ir/parser-js.js +2 -0
- package/src/ir/parser-php.js +330 -0
- package/src/ir/parser-py.helper.py +137 -11
- package/src/ir/parser-rb.js +309 -0
- package/src/posture/.agentic-security/findings.json +407 -84
- package/src/posture/.agentic-security/last-scan.json +407 -84
- package/src/posture/.agentic-security/last-scan.json.sig +1 -1
- package/src/posture/.agentic-security/scan-history.json +16 -4923
- package/src/posture/.agentic-security/streak.json +10 -14
- package/src/posture/calibration.js +14 -0
- package/src/posture/triage.js +13 -0
- package/src/report/.agentic-security/findings.json +6 -5
- package/src/report/.agentic-security/last-scan.json +6 -5
- package/src/report/.agentic-security/last-scan.json.sig +1 -1
- package/src/report/.agentic-security/scan-history.json +3 -300
- package/src/report/.agentic-security/streak.json +7 -8
- package/src/report/index.js +23 -2
- package/src/sast/.agentic-security/findings.json +195 -56
- package/src/sast/.agentic-security/last-scan.json +195 -56
- package/src/sast/.agentic-security/last-scan.json.sig +1 -1
- package/src/sast/.agentic-security/scan-history.json +14 -394
- package/src/sast/.agentic-security/streak.json +10 -13
- package/src/sast/cache-poisoning.js +77 -0
- package/src/sast/comparison-safety.js +73 -0
- package/src/sast/db-taint.js +54 -0
- package/src/sast/graphql.js +127 -0
- package/src/sast/llm-stored-prompt.js +57 -0
- package/src/sast/mutation-xss.js +43 -0
- package/src/sast/nosql-injection.js +5 -0
- package/src/sast/null-byte-injection.js +76 -0
- package/src/sast/redos-nfa.js +338 -0
- package/src/sast/sensitive-data-logging.js +73 -0
- package/src/sast/weak-password-hash.js +77 -0
- package/src/sast/weak-randomness.js +100 -0
- package/src/sca/.agentic-security/findings.json +502 -11
- package/src/sca/.agentic-security/last-scan.json +502 -11
- package/src/sca/.agentic-security/last-scan.json.sig +1 -1
- package/src/sca/.agentic-security/scan-history.json +19 -1
- package/src/sca/.agentic-security/streak.json +6 -6
- package/src/sca/llm-function-extract.js +107 -0
- package/src/sca/vendor-detect.js +91 -0
- package/dist/218.index.js +0 -793
- package/dist/601.index.js +0 -1038
- package/dist/634.index.js +0 -1892
- package/src/integrations/.agentic-security/findings.json +0 -1504
- package/src/integrations/.agentic-security/last-scan.json +0 -1504
- package/src/integrations/.agentic-security/scan-history.json +0 -40
- package/src/integrations/.agentic-security/streak.json +0 -21
- package/src/llm-validator/.agentic-security/findings.json +0 -1891
- package/src/llm-validator/.agentic-security/last-scan.json +0 -1891
- package/src/llm-validator/.agentic-security/last-scan.json.sig +0 -1
- package/src/llm-validator/.agentic-security/scan-history.json +0 -168
- package/src/llm-validator/.agentic-security/streak.json +0 -20
- package/src/lsp/.agentic-security/findings.json +0 -28
- package/src/lsp/.agentic-security/last-scan.json +0 -28
- package/src/lsp/.agentic-security/scan-history.json +0 -79
- package/src/lsp/.agentic-security/streak.json +0 -22
- package/src/mcp/.agentic-security/findings.json +0 -8403
- package/src/mcp/.agentic-security/last-scan.json +0 -8403
- package/src/mcp/.agentic-security/last-scan.json.sig +0 -1
- package/src/mcp/.agentic-security/scan-history.json +0 -1182
- package/src/mcp/.agentic-security/streak.json +0 -22
- package/src/sast/bench-shape/.agentic-security/findings.json +0 -28
- package/src/sast/bench-shape/.agentic-security/last-scan.json +0 -28
- package/src/sast/bench-shape/.agentic-security/scan-history.json +0 -24
- package/src/sast/bench-shape/.agentic-security/streak.json +0 -22
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
|
-
"scanId": "
|
|
3
|
-
"startedAt": "2026-05-
|
|
4
|
-
"durationMs":
|
|
2
|
+
"scanId": "c0d36b32-79df-4614-9dd6-475907a34882",
|
|
3
|
+
"startedAt": "2026-05-27T13:30:13.810Z",
|
|
4
|
+
"durationMs": 185,
|
|
5
5
|
"scanned": {
|
|
6
|
-
"files":
|
|
6
|
+
"files": 6,
|
|
7
7
|
"lines": 0
|
|
8
8
|
},
|
|
9
9
|
"findings": [
|
|
@@ -465,6 +465,468 @@
|
|
|
465
465
|
"bountyConfidence": "high",
|
|
466
466
|
"attackPlaybook": null
|
|
467
467
|
},
|
|
468
|
+
{
|
|
469
|
+
"id": "struct:llm-function-extract.js:24:Synchronous_Blocking_I/O_(DoS_Risk_in_Server_Context)",
|
|
470
|
+
"kind": "sast",
|
|
471
|
+
"severity": "medium",
|
|
472
|
+
"vuln": "Synchronous Blocking I/O (DoS Risk in Server Context)",
|
|
473
|
+
"cwe": "CWE-400",
|
|
474
|
+
"owaspLlm": null,
|
|
475
|
+
"stride": "Denial of Service",
|
|
476
|
+
"file": "llm-function-extract.js",
|
|
477
|
+
"line": 24,
|
|
478
|
+
"snippet": "return JSON.parse(fs.readFileSync(fp, 'utf8'));",
|
|
479
|
+
"fix": null,
|
|
480
|
+
"reachable": false,
|
|
481
|
+
"triage": 22,
|
|
482
|
+
"dataClasses": [],
|
|
483
|
+
"chain": null,
|
|
484
|
+
"confidence": 0.212,
|
|
485
|
+
"toxicity": 28,
|
|
486
|
+
"toxicityFactors": [
|
|
487
|
+
"http-facing"
|
|
488
|
+
],
|
|
489
|
+
"toxicityLabel": "Medium",
|
|
490
|
+
"sources": null,
|
|
491
|
+
"epssScore": null,
|
|
492
|
+
"epssPercentile": null,
|
|
493
|
+
"epssCve": null,
|
|
494
|
+
"exploitedNow": false,
|
|
495
|
+
"tags": null,
|
|
496
|
+
"blastRadius": {
|
|
497
|
+
"scope": "all-users",
|
|
498
|
+
"dataAtRisk": [
|
|
499
|
+
"config"
|
|
500
|
+
],
|
|
501
|
+
"userCount": 50,
|
|
502
|
+
"industry": "generic",
|
|
503
|
+
"jurisdictions": [],
|
|
504
|
+
"controlsApplied": [],
|
|
505
|
+
"dollarBest": 23250,
|
|
506
|
+
"dollarLikely": 136250,
|
|
507
|
+
"dollarWorst": 775000,
|
|
508
|
+
"dollarLow": 23250,
|
|
509
|
+
"dollarHigh": 775000,
|
|
510
|
+
"components": {
|
|
511
|
+
"incidentResponse": {
|
|
512
|
+
"low": 8000,
|
|
513
|
+
"likely": 50000,
|
|
514
|
+
"high": 250000
|
|
515
|
+
},
|
|
516
|
+
"legal": {
|
|
517
|
+
"low": 10000,
|
|
518
|
+
"likely": 75000,
|
|
519
|
+
"high": 500000
|
|
520
|
+
},
|
|
521
|
+
"crisisPR": {
|
|
522
|
+
"low": 0,
|
|
523
|
+
"likely": 0,
|
|
524
|
+
"high": 0
|
|
525
|
+
},
|
|
526
|
+
"notification": {
|
|
527
|
+
"low": 5000,
|
|
528
|
+
"likely": 10000,
|
|
529
|
+
"high": 15000
|
|
530
|
+
},
|
|
531
|
+
"creditMonitoring": {
|
|
532
|
+
"low": 0,
|
|
533
|
+
"likely": 0,
|
|
534
|
+
"high": 0
|
|
535
|
+
},
|
|
536
|
+
"regulatoryFines": {
|
|
537
|
+
"low": 0,
|
|
538
|
+
"likely": 0,
|
|
539
|
+
"high": 0
|
|
540
|
+
},
|
|
541
|
+
"directDamage": {
|
|
542
|
+
"low": 250,
|
|
543
|
+
"likely": 1250,
|
|
544
|
+
"high": 10000
|
|
545
|
+
},
|
|
546
|
+
"classAction": {
|
|
547
|
+
"low": 0,
|
|
548
|
+
"likely": 0,
|
|
549
|
+
"high": 0
|
|
550
|
+
},
|
|
551
|
+
"lostBusiness": {
|
|
552
|
+
"low": 0,
|
|
553
|
+
"likely": 0,
|
|
554
|
+
"high": 0
|
|
555
|
+
}
|
|
556
|
+
},
|
|
557
|
+
"dominantDriver": "legal counsel",
|
|
558
|
+
"comparable": "Air Canada 2024 LLM chatbot DoS → court-ordered refunds + reputational damage",
|
|
559
|
+
"confidence": "low",
|
|
560
|
+
"narrative": "Synchronous Blocking I/O (DoS Risk in Server Context) on `llm-function-extract.js:24` 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."
|
|
561
|
+
},
|
|
562
|
+
"stableId": "0c8c5b613b013dda",
|
|
563
|
+
"confidenceTier": "very-low",
|
|
564
|
+
"exploitability": 0.2,
|
|
565
|
+
"exploitabilityTier": "low",
|
|
566
|
+
"exploitabilityFactors": [
|
|
567
|
+
"sev:medium",
|
|
568
|
+
"unreachable"
|
|
569
|
+
],
|
|
570
|
+
"clusterSize": null,
|
|
571
|
+
"unreachable": false,
|
|
572
|
+
"validator_verdict": "unvalidated",
|
|
573
|
+
"llm_confidence": null,
|
|
574
|
+
"unvalidated": true,
|
|
575
|
+
"cross_language": false,
|
|
576
|
+
"family": "dos-sync-io",
|
|
577
|
+
"parser": "STRUCTURAL",
|
|
578
|
+
"_unsigned": false,
|
|
579
|
+
"_passThroughSigning": false,
|
|
580
|
+
"signatureStatus": "verified",
|
|
581
|
+
"regression_test": null,
|
|
582
|
+
"poc": null,
|
|
583
|
+
"calibrated_confidence": null,
|
|
584
|
+
"calibrated_confidence_ci": null,
|
|
585
|
+
"calibrated_n": 0,
|
|
586
|
+
"calibration_reason": "no-history",
|
|
587
|
+
"verifier_verdict": "cannot-verify",
|
|
588
|
+
"verifier_reason": "no-poc-no-sanitizer-rule",
|
|
589
|
+
"verifier_runner": null,
|
|
590
|
+
"narration": null,
|
|
591
|
+
"mitigationVerdict": "unreachable-in-prod",
|
|
592
|
+
"mitigationsApplied": [],
|
|
593
|
+
"mitigatedByWaf": false,
|
|
594
|
+
"wafRuleId": null,
|
|
595
|
+
"mitigatedByAuth": false,
|
|
596
|
+
"authMechanism": null,
|
|
597
|
+
"mitigatedByNetwork": false,
|
|
598
|
+
"networkExposure": null,
|
|
599
|
+
"featureFlag": null,
|
|
600
|
+
"featureFlagState": null,
|
|
601
|
+
"featureFlagRollout": null,
|
|
602
|
+
"exposedInProd": false,
|
|
603
|
+
"unreachableInProd": true,
|
|
604
|
+
"coldPath": false,
|
|
605
|
+
"hotPath": false,
|
|
606
|
+
"prodRequestCount": null,
|
|
607
|
+
"crownJewelScore": 0.1,
|
|
608
|
+
"crownJewelTier": "low-value",
|
|
609
|
+
"crownJewelFactors": [
|
|
610
|
+
"reads-secret-env"
|
|
611
|
+
],
|
|
612
|
+
"cloneClusterId": "b8a597058e30c50c",
|
|
613
|
+
"cloneClusterSize": 1,
|
|
614
|
+
"provenance": "human-likely",
|
|
615
|
+
"provenanceScore": 0.04,
|
|
616
|
+
"typeNarrowed": null,
|
|
617
|
+
"strideCategory": "denialOfService",
|
|
618
|
+
"personaScores": {
|
|
619
|
+
"script-kiddie": {
|
|
620
|
+
"score": 0.4,
|
|
621
|
+
"tier": "medium",
|
|
622
|
+
"factors": [
|
|
623
|
+
"sev:medium"
|
|
624
|
+
]
|
|
625
|
+
},
|
|
626
|
+
"opportunistic-criminal": {
|
|
627
|
+
"score": 0.4,
|
|
628
|
+
"tier": "medium",
|
|
629
|
+
"factors": [
|
|
630
|
+
"sev:medium"
|
|
631
|
+
]
|
|
632
|
+
},
|
|
633
|
+
"apt-nation-state": {
|
|
634
|
+
"score": 0.4,
|
|
635
|
+
"tier": "medium",
|
|
636
|
+
"factors": [
|
|
637
|
+
"sev:medium"
|
|
638
|
+
]
|
|
639
|
+
},
|
|
640
|
+
"supply-chain-attacker": {
|
|
641
|
+
"score": 0.4,
|
|
642
|
+
"tier": "medium",
|
|
643
|
+
"factors": [
|
|
644
|
+
"sev:medium"
|
|
645
|
+
]
|
|
646
|
+
},
|
|
647
|
+
"malicious-insider": {
|
|
648
|
+
"score": 0.4,
|
|
649
|
+
"tier": "medium",
|
|
650
|
+
"factors": [
|
|
651
|
+
"sev:medium"
|
|
652
|
+
]
|
|
653
|
+
}
|
|
654
|
+
},
|
|
655
|
+
"personaTopTwo": [
|
|
656
|
+
"script-kiddie",
|
|
657
|
+
"opportunistic-criminal"
|
|
658
|
+
],
|
|
659
|
+
"personaMaxName": "script-kiddie",
|
|
660
|
+
"personaMaxScore": 0.4,
|
|
661
|
+
"reverseExposure": null,
|
|
662
|
+
"specMined": null,
|
|
663
|
+
"whyFired": {
|
|
664
|
+
"detector": "sast/dos-sync-io",
|
|
665
|
+
"ruleId": "CWE-400",
|
|
666
|
+
"parser": "STRUCTURAL",
|
|
667
|
+
"evidence": {
|
|
668
|
+
"sinkSnippet": "return JSON.parse(fs.readFileSync(fp, 'utf8'));",
|
|
669
|
+
"sourceSnippet": "return JSON.parse(fs.readFileSync(fp, 'utf8'));",
|
|
670
|
+
"pathSteps": [],
|
|
671
|
+
"sanitizers": [],
|
|
672
|
+
"guards": []
|
|
673
|
+
},
|
|
674
|
+
"considered": {
|
|
675
|
+
"suppressionsApplied": [],
|
|
676
|
+
"suppressionsSkipped": [],
|
|
677
|
+
"reachabilityFilter": "unaffected",
|
|
678
|
+
"clusterCollapsed": false,
|
|
679
|
+
"typeNarrowed": false,
|
|
680
|
+
"crownJewelTier": "low-value",
|
|
681
|
+
"mitigationVerdict": "unreachable-in-prod"
|
|
682
|
+
},
|
|
683
|
+
"scanner": {
|
|
684
|
+
"rulesetVersion": null,
|
|
685
|
+
"packHash": null,
|
|
686
|
+
"modelId": null
|
|
687
|
+
}
|
|
688
|
+
},
|
|
689
|
+
"adversaryTranscript": null,
|
|
690
|
+
"predictedBountyUsd": {
|
|
691
|
+
"low": 10,
|
|
692
|
+
"likely": 40,
|
|
693
|
+
"high": 120,
|
|
694
|
+
"program": "web2"
|
|
695
|
+
},
|
|
696
|
+
"bountyConfidence": "high",
|
|
697
|
+
"attackPlaybook": null
|
|
698
|
+
},
|
|
699
|
+
{
|
|
700
|
+
"id": "struct:llm-function-extract.js:31:Synchronous_Blocking_I/O_(DoS_Risk_in_Server_Context)",
|
|
701
|
+
"kind": "sast",
|
|
702
|
+
"severity": "medium",
|
|
703
|
+
"vuln": "Synchronous Blocking I/O (DoS Risk in Server Context)",
|
|
704
|
+
"cwe": "CWE-400",
|
|
705
|
+
"owaspLlm": null,
|
|
706
|
+
"stride": "Denial of Service",
|
|
707
|
+
"file": "llm-function-extract.js",
|
|
708
|
+
"line": 31,
|
|
709
|
+
"snippet": "fs.writeFileSync(path.join(CACHE_DIR, _cacheKey(osvId) + '.json'), JSON.stringify(data));",
|
|
710
|
+
"fix": null,
|
|
711
|
+
"reachable": false,
|
|
712
|
+
"triage": 22,
|
|
713
|
+
"dataClasses": [],
|
|
714
|
+
"chain": null,
|
|
715
|
+
"confidence": 0.212,
|
|
716
|
+
"toxicity": 28,
|
|
717
|
+
"toxicityFactors": [
|
|
718
|
+
"http-facing"
|
|
719
|
+
],
|
|
720
|
+
"toxicityLabel": "Medium",
|
|
721
|
+
"sources": null,
|
|
722
|
+
"epssScore": null,
|
|
723
|
+
"epssPercentile": null,
|
|
724
|
+
"epssCve": null,
|
|
725
|
+
"exploitedNow": false,
|
|
726
|
+
"tags": null,
|
|
727
|
+
"blastRadius": {
|
|
728
|
+
"scope": "all-users",
|
|
729
|
+
"dataAtRisk": [
|
|
730
|
+
"config"
|
|
731
|
+
],
|
|
732
|
+
"userCount": 50,
|
|
733
|
+
"industry": "generic",
|
|
734
|
+
"jurisdictions": [],
|
|
735
|
+
"controlsApplied": [],
|
|
736
|
+
"dollarBest": 23250,
|
|
737
|
+
"dollarLikely": 136250,
|
|
738
|
+
"dollarWorst": 775000,
|
|
739
|
+
"dollarLow": 23250,
|
|
740
|
+
"dollarHigh": 775000,
|
|
741
|
+
"components": {
|
|
742
|
+
"incidentResponse": {
|
|
743
|
+
"low": 8000,
|
|
744
|
+
"likely": 50000,
|
|
745
|
+
"high": 250000
|
|
746
|
+
},
|
|
747
|
+
"legal": {
|
|
748
|
+
"low": 10000,
|
|
749
|
+
"likely": 75000,
|
|
750
|
+
"high": 500000
|
|
751
|
+
},
|
|
752
|
+
"crisisPR": {
|
|
753
|
+
"low": 0,
|
|
754
|
+
"likely": 0,
|
|
755
|
+
"high": 0
|
|
756
|
+
},
|
|
757
|
+
"notification": {
|
|
758
|
+
"low": 5000,
|
|
759
|
+
"likely": 10000,
|
|
760
|
+
"high": 15000
|
|
761
|
+
},
|
|
762
|
+
"creditMonitoring": {
|
|
763
|
+
"low": 0,
|
|
764
|
+
"likely": 0,
|
|
765
|
+
"high": 0
|
|
766
|
+
},
|
|
767
|
+
"regulatoryFines": {
|
|
768
|
+
"low": 0,
|
|
769
|
+
"likely": 0,
|
|
770
|
+
"high": 0
|
|
771
|
+
},
|
|
772
|
+
"directDamage": {
|
|
773
|
+
"low": 250,
|
|
774
|
+
"likely": 1250,
|
|
775
|
+
"high": 10000
|
|
776
|
+
},
|
|
777
|
+
"classAction": {
|
|
778
|
+
"low": 0,
|
|
779
|
+
"likely": 0,
|
|
780
|
+
"high": 0
|
|
781
|
+
},
|
|
782
|
+
"lostBusiness": {
|
|
783
|
+
"low": 0,
|
|
784
|
+
"likely": 0,
|
|
785
|
+
"high": 0
|
|
786
|
+
}
|
|
787
|
+
},
|
|
788
|
+
"dominantDriver": "legal counsel",
|
|
789
|
+
"comparable": "Air Canada 2024 LLM chatbot DoS → court-ordered refunds + reputational damage",
|
|
790
|
+
"confidence": "low",
|
|
791
|
+
"narrative": "Synchronous Blocking I/O (DoS Risk in Server Context) on `llm-function-extract.js:31` 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."
|
|
792
|
+
},
|
|
793
|
+
"stableId": "9c296e2c3069fe33",
|
|
794
|
+
"confidenceTier": "very-low",
|
|
795
|
+
"exploitability": 0.2,
|
|
796
|
+
"exploitabilityTier": "low",
|
|
797
|
+
"exploitabilityFactors": [
|
|
798
|
+
"sev:medium",
|
|
799
|
+
"unreachable"
|
|
800
|
+
],
|
|
801
|
+
"clusterSize": null,
|
|
802
|
+
"unreachable": false,
|
|
803
|
+
"validator_verdict": "unvalidated",
|
|
804
|
+
"llm_confidence": null,
|
|
805
|
+
"unvalidated": true,
|
|
806
|
+
"cross_language": false,
|
|
807
|
+
"family": "dos-sync-io",
|
|
808
|
+
"parser": "STRUCTURAL",
|
|
809
|
+
"_unsigned": false,
|
|
810
|
+
"_passThroughSigning": false,
|
|
811
|
+
"signatureStatus": "verified",
|
|
812
|
+
"regression_test": null,
|
|
813
|
+
"poc": null,
|
|
814
|
+
"calibrated_confidence": null,
|
|
815
|
+
"calibrated_confidence_ci": null,
|
|
816
|
+
"calibrated_n": 0,
|
|
817
|
+
"calibration_reason": "no-history",
|
|
818
|
+
"verifier_verdict": "cannot-verify",
|
|
819
|
+
"verifier_reason": "no-poc-no-sanitizer-rule",
|
|
820
|
+
"verifier_runner": null,
|
|
821
|
+
"narration": null,
|
|
822
|
+
"mitigationVerdict": "unreachable-in-prod",
|
|
823
|
+
"mitigationsApplied": [],
|
|
824
|
+
"mitigatedByWaf": false,
|
|
825
|
+
"wafRuleId": null,
|
|
826
|
+
"mitigatedByAuth": false,
|
|
827
|
+
"authMechanism": null,
|
|
828
|
+
"mitigatedByNetwork": false,
|
|
829
|
+
"networkExposure": null,
|
|
830
|
+
"featureFlag": null,
|
|
831
|
+
"featureFlagState": null,
|
|
832
|
+
"featureFlagRollout": null,
|
|
833
|
+
"exposedInProd": false,
|
|
834
|
+
"unreachableInProd": true,
|
|
835
|
+
"coldPath": false,
|
|
836
|
+
"hotPath": false,
|
|
837
|
+
"prodRequestCount": null,
|
|
838
|
+
"crownJewelScore": 0.1,
|
|
839
|
+
"crownJewelTier": "low-value",
|
|
840
|
+
"crownJewelFactors": [
|
|
841
|
+
"reads-secret-env"
|
|
842
|
+
],
|
|
843
|
+
"cloneClusterId": "f4d8f5169ad2f78e",
|
|
844
|
+
"cloneClusterSize": 1,
|
|
845
|
+
"provenance": "human-likely",
|
|
846
|
+
"provenanceScore": 0.04,
|
|
847
|
+
"typeNarrowed": null,
|
|
848
|
+
"strideCategory": "denialOfService",
|
|
849
|
+
"personaScores": {
|
|
850
|
+
"script-kiddie": {
|
|
851
|
+
"score": 0.4,
|
|
852
|
+
"tier": "medium",
|
|
853
|
+
"factors": [
|
|
854
|
+
"sev:medium"
|
|
855
|
+
]
|
|
856
|
+
},
|
|
857
|
+
"opportunistic-criminal": {
|
|
858
|
+
"score": 0.4,
|
|
859
|
+
"tier": "medium",
|
|
860
|
+
"factors": [
|
|
861
|
+
"sev:medium"
|
|
862
|
+
]
|
|
863
|
+
},
|
|
864
|
+
"apt-nation-state": {
|
|
865
|
+
"score": 0.4,
|
|
866
|
+
"tier": "medium",
|
|
867
|
+
"factors": [
|
|
868
|
+
"sev:medium"
|
|
869
|
+
]
|
|
870
|
+
},
|
|
871
|
+
"supply-chain-attacker": {
|
|
872
|
+
"score": 0.4,
|
|
873
|
+
"tier": "medium",
|
|
874
|
+
"factors": [
|
|
875
|
+
"sev:medium"
|
|
876
|
+
]
|
|
877
|
+
},
|
|
878
|
+
"malicious-insider": {
|
|
879
|
+
"score": 0.4,
|
|
880
|
+
"tier": "medium",
|
|
881
|
+
"factors": [
|
|
882
|
+
"sev:medium"
|
|
883
|
+
]
|
|
884
|
+
}
|
|
885
|
+
},
|
|
886
|
+
"personaTopTwo": [
|
|
887
|
+
"script-kiddie",
|
|
888
|
+
"opportunistic-criminal"
|
|
889
|
+
],
|
|
890
|
+
"personaMaxName": "script-kiddie",
|
|
891
|
+
"personaMaxScore": 0.4,
|
|
892
|
+
"reverseExposure": null,
|
|
893
|
+
"specMined": null,
|
|
894
|
+
"whyFired": {
|
|
895
|
+
"detector": "sast/dos-sync-io",
|
|
896
|
+
"ruleId": "CWE-400",
|
|
897
|
+
"parser": "STRUCTURAL",
|
|
898
|
+
"evidence": {
|
|
899
|
+
"sinkSnippet": "fs.writeFileSync(path.join(CACHE_DIR, _cacheKey(osvId) + '.json'), JSON.stringify(data));",
|
|
900
|
+
"sourceSnippet": "fs.writeFileSync(path.join(CACHE_DIR, _cacheKey(osvId) + '.json'), JSON.stringify(data));",
|
|
901
|
+
"pathSteps": [],
|
|
902
|
+
"sanitizers": [],
|
|
903
|
+
"guards": []
|
|
904
|
+
},
|
|
905
|
+
"considered": {
|
|
906
|
+
"suppressionsApplied": [],
|
|
907
|
+
"suppressionsSkipped": [],
|
|
908
|
+
"reachabilityFilter": "unaffected",
|
|
909
|
+
"clusterCollapsed": false,
|
|
910
|
+
"typeNarrowed": false,
|
|
911
|
+
"crownJewelTier": "low-value",
|
|
912
|
+
"mitigationVerdict": "unreachable-in-prod"
|
|
913
|
+
},
|
|
914
|
+
"scanner": {
|
|
915
|
+
"rulesetVersion": null,
|
|
916
|
+
"packHash": null,
|
|
917
|
+
"modelId": null
|
|
918
|
+
}
|
|
919
|
+
},
|
|
920
|
+
"adversaryTranscript": null,
|
|
921
|
+
"predictedBountyUsd": {
|
|
922
|
+
"low": 10,
|
|
923
|
+
"likely": 40,
|
|
924
|
+
"high": 120,
|
|
925
|
+
"program": "web2"
|
|
926
|
+
},
|
|
927
|
+
"bountyConfidence": "high",
|
|
928
|
+
"attackPlaybook": null
|
|
929
|
+
},
|
|
468
930
|
{
|
|
469
931
|
"id": "struct:sarif-ingest.js:112:Synchronous_Blocking_I/O_(DoS_Risk_in_Server_Context)",
|
|
470
932
|
"kind": "sast",
|
|
@@ -1003,7 +1465,7 @@
|
|
|
1003
1465
|
"bundles": [],
|
|
1004
1466
|
"routes": [],
|
|
1005
1467
|
"components": [],
|
|
1006
|
-
"suppressedCount":
|
|
1468
|
+
"suppressedCount": 4,
|
|
1007
1469
|
"blastRadiusSignals": {
|
|
1008
1470
|
"industry": "generic",
|
|
1009
1471
|
"industryConfidence": "low",
|
|
@@ -1021,22 +1483,30 @@
|
|
|
1021
1483
|
"_v3": {
|
|
1022
1484
|
"counterfactual": {
|
|
1023
1485
|
"spofControls": [],
|
|
1024
|
-
"controlsDetected":
|
|
1486
|
+
"controlsDetected": 95
|
|
1025
1487
|
},
|
|
1026
1488
|
"threatModel": {
|
|
1027
1489
|
"summary": {
|
|
1028
|
-
"assetCount":
|
|
1490
|
+
"assetCount": 1,
|
|
1029
1491
|
"boundaryCount": 0,
|
|
1030
1492
|
"strideCounts": {
|
|
1031
1493
|
"spoofing": 0,
|
|
1032
1494
|
"tampering": 1,
|
|
1033
1495
|
"repudiation": 0,
|
|
1034
1496
|
"informationDisclosure": 0,
|
|
1035
|
-
"denialOfService":
|
|
1497
|
+
"denialOfService": 5,
|
|
1036
1498
|
"elevationOfPrivilege": 0
|
|
1037
1499
|
}
|
|
1038
1500
|
},
|
|
1039
|
-
"assets": [
|
|
1501
|
+
"assets": [
|
|
1502
|
+
{
|
|
1503
|
+
"name": "AGENTIC_SECURITY_LLM_API_KEY",
|
|
1504
|
+
"file": "llm-function-extract.js",
|
|
1505
|
+
"line": 41,
|
|
1506
|
+
"category": "secret",
|
|
1507
|
+
"exposure": "internal"
|
|
1508
|
+
}
|
|
1509
|
+
],
|
|
1040
1510
|
"trustBoundaries": [],
|
|
1041
1511
|
"stride": {
|
|
1042
1512
|
"spoofing": [],
|
|
@@ -1061,6 +1531,16 @@
|
|
|
1061
1531
|
"file": "dep-confusion.js",
|
|
1062
1532
|
"severity": "medium"
|
|
1063
1533
|
},
|
|
1534
|
+
{
|
|
1535
|
+
"vuln": "Synchronous Blocking I/O (DoS Risk in Server Context)",
|
|
1536
|
+
"file": "llm-function-extract.js",
|
|
1537
|
+
"severity": "medium"
|
|
1538
|
+
},
|
|
1539
|
+
{
|
|
1540
|
+
"vuln": "Synchronous Blocking I/O (DoS Risk in Server Context)",
|
|
1541
|
+
"file": "llm-function-extract.js",
|
|
1542
|
+
"severity": "medium"
|
|
1543
|
+
},
|
|
1064
1544
|
{
|
|
1065
1545
|
"vuln": "Synchronous Blocking I/O (DoS Risk in Server Context)",
|
|
1066
1546
|
"file": "sarif-ingest.js",
|
|
@@ -1071,7 +1551,7 @@
|
|
|
1071
1551
|
}
|
|
1072
1552
|
},
|
|
1073
1553
|
"trustBoundaryDiagram": {
|
|
1074
|
-
"mermaid": "flowchart LR\n INTERNET((Internet))\n APP[\"Application\"]\n classDef sev_critical fill:#ffcccc,stroke:#a00,stroke-width:2px;\n classDef sev_high fill:#ffe0b2,stroke:#c60,stroke-width:2px;\n classDef sev_medium fill:#fff3cd,stroke:#a80;\n classDef sev_low fill:#e8eaf6,stroke:#557;",
|
|
1554
|
+
"mermaid": "flowchart LR\n INTERNET((Internet))\n APP[\"Application\"]\n asset_secret_AGENTIC_SECURITY_LLM_API_KEY[/\"secret: AGENTIC_SECURITY_LLM_API_KEY\"/]\n APP -->|asset| asset_secret_AGENTIC_SECURITY_LLM_API_KEY\n classDef sev_critical fill:#ffcccc,stroke:#a00,stroke-width:2px;\n classDef sev_high fill:#ffe0b2,stroke:#c60,stroke-width:2px;\n classDef sev_medium fill:#fff3cd,stroke:#a80;\n classDef sev_low fill:#e8eaf6,stroke:#557;",
|
|
1075
1555
|
"nodes": [
|
|
1076
1556
|
{
|
|
1077
1557
|
"id": "INTERNET",
|
|
@@ -1082,9 +1562,20 @@
|
|
|
1082
1562
|
"id": "APP",
|
|
1083
1563
|
"kind": "app",
|
|
1084
1564
|
"label": "Application"
|
|
1565
|
+
},
|
|
1566
|
+
{
|
|
1567
|
+
"id": "asset_secret_AGENTIC_SECURITY_LLM_API_KEY",
|
|
1568
|
+
"kind": "asset",
|
|
1569
|
+
"label": "secret: AGENTIC_SECURITY_LLM_API_KEY"
|
|
1570
|
+
}
|
|
1571
|
+
],
|
|
1572
|
+
"edges": [
|
|
1573
|
+
{
|
|
1574
|
+
"from": "APP",
|
|
1575
|
+
"to": "asset_secret_AGENTIC_SECURITY_LLM_API_KEY",
|
|
1576
|
+
"kind": "asset"
|
|
1085
1577
|
}
|
|
1086
1578
|
],
|
|
1087
|
-
"edges": [],
|
|
1088
1579
|
"decorations": []
|
|
1089
1580
|
},
|
|
1090
1581
|
"calibrationDrift": {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
d2a426290abf051e739d3f60eefd2f5c61a9328cd2698d7020170b483a6ce836
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[
|
|
2
2
|
{
|
|
3
|
-
"timestamp": "2026-05-
|
|
3
|
+
"timestamp": "2026-05-27T13:24:07.357Z",
|
|
4
4
|
"label": "scan",
|
|
5
5
|
"total": 4,
|
|
6
6
|
"critical": 0,
|
|
@@ -14,5 +14,23 @@
|
|
|
14
14
|
"struct:sarif-ingest.js:112:Synchronous_Blocking_I/O_(DoS_Risk_in_Server_Context)",
|
|
15
15
|
"toctou-fs:dep-confusion.js:56"
|
|
16
16
|
]
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"timestamp": "2026-05-27T13:30:13.994Z",
|
|
20
|
+
"label": "scan",
|
|
21
|
+
"total": 6,
|
|
22
|
+
"critical": 0,
|
|
23
|
+
"high": 0,
|
|
24
|
+
"medium": 6,
|
|
25
|
+
"low": 0,
|
|
26
|
+
"kev": 0,
|
|
27
|
+
"ids": [
|
|
28
|
+
"struct:dep-confusion.js:56:Synchronous_Blocking_I/O_(DoS_Risk_in_Server_Context)",
|
|
29
|
+
"struct:dep-confusion.js:58:Synchronous_Blocking_I/O_(DoS_Risk_in_Server_Context)",
|
|
30
|
+
"struct:llm-function-extract.js:24:Synchronous_Blocking_I/O_(DoS_Risk_in_Server_Context)",
|
|
31
|
+
"struct:llm-function-extract.js:31:Synchronous_Blocking_I/O_(DoS_Risk_in_Server_Context)",
|
|
32
|
+
"struct:sarif-ingest.js:112:Synchronous_Blocking_I/O_(DoS_Risk_in_Server_Context)",
|
|
33
|
+
"toctou-fs:dep-confusion.js:56"
|
|
34
|
+
]
|
|
17
35
|
}
|
|
18
36
|
]
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
|
-
"firstScanDate": "2026-05-
|
|
3
|
-
"lastScanDate": "2026-05-
|
|
4
|
-
"totalScans":
|
|
2
|
+
"firstScanDate": "2026-05-27T13:24:07.375Z",
|
|
3
|
+
"lastScanDate": "2026-05-27T13:30:14.013Z",
|
|
4
|
+
"totalScans": 2,
|
|
5
5
|
"daysCleanCritical": 1,
|
|
6
|
-
"lastCleanDate": "2026-05-
|
|
6
|
+
"lastCleanDate": "2026-05-27",
|
|
7
7
|
"lastCriticalDate": null,
|
|
8
8
|
"hasEverHadCritical": false,
|
|
9
9
|
"bestDaysCleanCritical": 1,
|
|
10
10
|
"totalFindingsAtFirstScan": 5,
|
|
11
|
-
"totalFindingsAtLastScan":
|
|
11
|
+
"totalFindingsAtLastScan": 7,
|
|
12
12
|
"totalFixesInferred": 0,
|
|
13
13
|
"lastGrade": "A",
|
|
14
14
|
"bestGrade": "A",
|
|
@@ -17,5 +17,5 @@
|
|
|
17
17
|
"first-scan",
|
|
18
18
|
"grade-a"
|
|
19
19
|
],
|
|
20
|
-
"previousGrade":
|
|
20
|
+
"previousGrade": "A"
|
|
21
21
|
}
|