@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.
Files changed (108) hide show
  1. package/bin/.agentic-security/findings.json +320 -9
  2. package/bin/.agentic-security/last-scan.json +320 -9
  3. package/bin/.agentic-security/last-scan.json.sig +1 -1
  4. package/bin/.agentic-security/scan-history.json +17 -377
  5. package/bin/.agentic-security/streak.json +11 -16
  6. package/bin/agentic-security.js +33 -2
  7. package/dist/178.index.js +1 -1
  8. package/dist/384.index.js +1 -1
  9. package/dist/637.index.js +1 -1
  10. package/dist/718.index.js +106 -0
  11. package/dist/824.index.js +126 -0
  12. package/dist/838.index.js +1 -1
  13. package/dist/agentic-security.mjs +32 -32
  14. package/dist/agentic-security.mjs.sha256 +1 -1
  15. package/package.json +7 -7
  16. package/src/.agentic-security/findings.json +5731 -3933
  17. package/src/.agentic-security/last-scan.json +5731 -3933
  18. package/src/.agentic-security/last-scan.json.sig +1 -1
  19. package/src/.agentic-security/scan-history.json +2533 -887
  20. package/src/.agentic-security/streak.json +11 -16
  21. package/src/dataflow/.agentic-security/findings.json +52 -24
  22. package/src/dataflow/.agentic-security/last-scan.json +52 -24
  23. package/src/dataflow/.agentic-security/last-scan.json.sig +1 -1
  24. package/src/dataflow/.agentic-security/scan-history.json +101 -134
  25. package/src/dataflow/.agentic-security/streak.json +8 -10
  26. package/src/dataflow/async-sequencing.js +16 -7
  27. package/src/dataflow/builtin-summaries.js +131 -0
  28. package/src/dataflow/catalog.js +107 -0
  29. package/src/dataflow/cross-repo.js +75 -1
  30. package/src/dataflow/engine.js +129 -0
  31. package/src/dataflow/implicit-flow.js +24 -6
  32. package/src/dataflow/stub-aware-filter.js +69 -11
  33. package/src/dataflow/summaries.js +28 -3
  34. package/src/engine-parallel.js +70 -0
  35. package/src/engine.js +165 -15
  36. package/src/ir/.agentic-security/findings.json +757 -16
  37. package/src/ir/.agentic-security/last-scan.json +757 -16
  38. package/src/ir/.agentic-security/last-scan.json.sig +1 -1
  39. package/src/ir/.agentic-security/scan-history.json +545 -138
  40. package/src/ir/.agentic-security/streak.json +11 -13
  41. package/src/ir/index.js +22 -1
  42. package/src/ir/parser-go.js +403 -0
  43. package/src/ir/parser-js.js +2 -0
  44. package/src/ir/parser-php.js +330 -0
  45. package/src/ir/parser-py.helper.py +137 -11
  46. package/src/ir/parser-rb.js +309 -0
  47. package/src/posture/.agentic-security/findings.json +407 -84
  48. package/src/posture/.agentic-security/last-scan.json +407 -84
  49. package/src/posture/.agentic-security/last-scan.json.sig +1 -1
  50. package/src/posture/.agentic-security/scan-history.json +16 -4923
  51. package/src/posture/.agentic-security/streak.json +10 -14
  52. package/src/posture/calibration.js +14 -0
  53. package/src/posture/triage.js +13 -0
  54. package/src/report/.agentic-security/findings.json +6 -5
  55. package/src/report/.agentic-security/last-scan.json +6 -5
  56. package/src/report/.agentic-security/last-scan.json.sig +1 -1
  57. package/src/report/.agentic-security/scan-history.json +3 -300
  58. package/src/report/.agentic-security/streak.json +7 -8
  59. package/src/report/index.js +23 -2
  60. package/src/sast/.agentic-security/findings.json +195 -56
  61. package/src/sast/.agentic-security/last-scan.json +195 -56
  62. package/src/sast/.agentic-security/last-scan.json.sig +1 -1
  63. package/src/sast/.agentic-security/scan-history.json +14 -394
  64. package/src/sast/.agentic-security/streak.json +10 -13
  65. package/src/sast/cache-poisoning.js +77 -0
  66. package/src/sast/comparison-safety.js +73 -0
  67. package/src/sast/db-taint.js +54 -0
  68. package/src/sast/graphql.js +127 -0
  69. package/src/sast/llm-stored-prompt.js +57 -0
  70. package/src/sast/mutation-xss.js +43 -0
  71. package/src/sast/nosql-injection.js +5 -0
  72. package/src/sast/null-byte-injection.js +76 -0
  73. package/src/sast/redos-nfa.js +338 -0
  74. package/src/sast/sensitive-data-logging.js +73 -0
  75. package/src/sast/weak-password-hash.js +77 -0
  76. package/src/sast/weak-randomness.js +100 -0
  77. package/src/sca/.agentic-security/findings.json +502 -11
  78. package/src/sca/.agentic-security/last-scan.json +502 -11
  79. package/src/sca/.agentic-security/last-scan.json.sig +1 -1
  80. package/src/sca/.agentic-security/scan-history.json +19 -1
  81. package/src/sca/.agentic-security/streak.json +6 -6
  82. package/src/sca/llm-function-extract.js +107 -0
  83. package/src/sca/vendor-detect.js +91 -0
  84. package/dist/218.index.js +0 -793
  85. package/dist/601.index.js +0 -1038
  86. package/dist/634.index.js +0 -1892
  87. package/src/integrations/.agentic-security/findings.json +0 -1504
  88. package/src/integrations/.agentic-security/last-scan.json +0 -1504
  89. package/src/integrations/.agentic-security/scan-history.json +0 -40
  90. package/src/integrations/.agentic-security/streak.json +0 -21
  91. package/src/llm-validator/.agentic-security/findings.json +0 -1891
  92. package/src/llm-validator/.agentic-security/last-scan.json +0 -1891
  93. package/src/llm-validator/.agentic-security/last-scan.json.sig +0 -1
  94. package/src/llm-validator/.agentic-security/scan-history.json +0 -168
  95. package/src/llm-validator/.agentic-security/streak.json +0 -20
  96. package/src/lsp/.agentic-security/findings.json +0 -28
  97. package/src/lsp/.agentic-security/last-scan.json +0 -28
  98. package/src/lsp/.agentic-security/scan-history.json +0 -79
  99. package/src/lsp/.agentic-security/streak.json +0 -22
  100. package/src/mcp/.agentic-security/findings.json +0 -8403
  101. package/src/mcp/.agentic-security/last-scan.json +0 -8403
  102. package/src/mcp/.agentic-security/last-scan.json.sig +0 -1
  103. package/src/mcp/.agentic-security/scan-history.json +0 -1182
  104. package/src/mcp/.agentic-security/streak.json +0 -22
  105. package/src/sast/bench-shape/.agentic-security/findings.json +0 -28
  106. package/src/sast/bench-shape/.agentic-security/last-scan.json +0 -28
  107. package/src/sast/bench-shape/.agentic-security/scan-history.json +0 -24
  108. package/src/sast/bench-shape/.agentic-security/streak.json +0 -22
@@ -1,9 +1,9 @@
1
1
  {
2
- "scanId": "a0503a11-81c7-4743-a7a7-d72879ba1db3",
3
- "startedAt": "2026-05-21T18:12:54.614Z",
4
- "durationMs": 117,
2
+ "scanId": "c0d36b32-79df-4614-9dd6-475907a34882",
3
+ "startedAt": "2026-05-27T13:30:13.810Z",
4
+ "durationMs": 185,
5
5
  "scanned": {
6
- "files": 4,
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": 0,
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": 85
1486
+ "controlsDetected": 95
1025
1487
  },
1026
1488
  "threatModel": {
1027
1489
  "summary": {
1028
- "assetCount": 0,
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": 3,
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": {