@clear-capabilities/agentic-security-scanner 0.86.0 → 0.119.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 (128) hide show
  1. package/CHANGELOG.md +660 -0
  2. package/bin/agentic-security.js +78 -1
  3. package/dist/178.index.js +1 -1
  4. package/dist/384.index.js +1 -1
  5. package/dist/415.index.js +90 -0
  6. package/dist/444.index.js +89 -0
  7. package/dist/503.index.js +288 -0
  8. package/dist/637.index.js +15 -1
  9. package/dist/838.index.js +1 -1
  10. package/dist/985.index.js +5 -1
  11. package/dist/agentic-security.mjs +84 -84
  12. package/dist/agentic-security.mjs.sha256 +1 -1
  13. package/package.json +21 -10
  14. package/src/dataflow/CLAUDE.md +18 -6
  15. package/src/dataflow/catalog.js +59 -11
  16. package/src/dataflow/engine.js +106 -5
  17. package/src/dataflow/implicit-flow.js +4 -2
  18. package/src/dataflow/index.js +17 -4
  19. package/src/dataflow/proof-gate.js +100 -0
  20. package/src/dataflow/summaries.js +63 -6
  21. package/src/engine.js +292 -10
  22. package/src/ir/CLAUDE.md +1 -0
  23. package/src/ir/callgraph.js +12 -1
  24. package/src/ir/parser-go.js +8 -0
  25. package/src/ir/tree-sitter-loader.js +108 -0
  26. package/src/mcp/tools.js +6 -2
  27. package/src/posture/corpus-status.js +74 -0
  28. package/src/posture/coverage-report.js +113 -0
  29. package/src/posture/fix-history.js +24 -0
  30. package/src/posture/holdout-eval.js +57 -0
  31. package/src/posture/provenance.js +39 -0
  32. package/src/posture/router.js +33 -3
  33. package/src/posture/sca-verdict.js +130 -0
  34. package/src/posture/secret-history.js +72 -0
  35. package/src/pr-delta.js +13 -0
  36. package/src/report/index.js +67 -0
  37. package/src/sast/CLAUDE.md +9 -3
  38. package/src/sast/agent-untrusted-flow.js +107 -0
  39. package/src/sast/api-authz.js +71 -0
  40. package/src/sast/code-injection-multilang.js +117 -0
  41. package/src/sast/cross-service.js +98 -0
  42. package/src/sast/crypto-protocol.js +43 -1
  43. package/src/sast/csharp-structural.js +65 -0
  44. package/src/sast/csharp.js +3 -0
  45. package/src/sast/csrf.js +24 -3
  46. package/src/sast/csv-injection.js +84 -0
  47. package/src/sast/event-entrypoint.js +90 -0
  48. package/src/sast/frontend-hygiene.js +106 -0
  49. package/src/sast/go-structural.js +60 -0
  50. package/src/sast/iac-terraform.js +107 -0
  51. package/src/sast/java-structural.js +81 -0
  52. package/src/sast/js-framework-structural.js +115 -0
  53. package/src/sast/kotlin.js +72 -0
  54. package/src/sast/ldap-injection.js +73 -17
  55. package/src/sast/open-redirect.js +47 -5
  56. package/src/sast/php.js +35 -0
  57. package/src/sast/python-structural.js +83 -0
  58. package/src/sast/rbac-consistency.js +113 -0
  59. package/src/sast/redos-nfa.js +75 -0
  60. package/src/sast/response-splitting.js +48 -19
  61. package/src/sast/ruby.js +38 -0
  62. package/src/sast/secret-concat.js +60 -0
  63. package/src/sast/ssrf-cloud-metadata.js +13 -0
  64. package/src/sast/stored-taint.js +88 -0
  65. package/src/sast/tree-sitter-sinks.js +62 -0
  66. package/src/sast/weak-password-hash.js +28 -0
  67. package/src/sast/weak-randomness.js +46 -5
  68. package/src/sast/wrong-context-sanitizer.js +149 -0
  69. package/src/sast/xpath-injection.js +30 -6
  70. package/src/sast/xss-reflected-multilang.js +116 -0
  71. package/src/sast/xxe.js +67 -0
  72. package/src/sca/image-packages.js +74 -0
  73. package/src/sca/import-reachability.js +271 -0
  74. package/src/sca/install-script-analysis.js +82 -0
  75. package/bin/.agentic-security/findings.json +0 -1907
  76. package/bin/.agentic-security/last-scan.json +0 -1907
  77. package/bin/.agentic-security/last-scan.json.sig +0 -1
  78. package/bin/.agentic-security/scan-history.json +0 -166
  79. package/bin/.agentic-security/streak.json +0 -20
  80. package/src/.agentic-security/findings.json +0 -117732
  81. package/src/.agentic-security/last-scan.json +0 -117732
  82. package/src/.agentic-security/last-scan.json.sig +0 -1
  83. package/src/.agentic-security/scan-history.json +0 -12946
  84. package/src/.agentic-security/streak.json +0 -21
  85. package/src/dataflow/.agentic-security/findings.json +0 -6086
  86. package/src/dataflow/.agentic-security/last-scan.json +0 -6086
  87. package/src/dataflow/.agentic-security/last-scan.json.sig +0 -1
  88. package/src/dataflow/.agentic-security/scan-history.json +0 -250
  89. package/src/dataflow/.agentic-security/streak.json +0 -21
  90. package/src/ir/.agentic-security/findings.json +0 -4011
  91. package/src/ir/.agentic-security/last-scan.json +0 -4011
  92. package/src/ir/.agentic-security/last-scan.json.sig +0 -1
  93. package/src/ir/.agentic-security/scan-history.json +0 -193
  94. package/src/ir/.agentic-security/streak.json +0 -20
  95. package/src/mcp/.agentic-security/findings.json +0 -8632
  96. package/src/mcp/.agentic-security/last-scan.json +0 -8632
  97. package/src/mcp/.agentic-security/last-scan.json.sig +0 -1
  98. package/src/mcp/.agentic-security/scan-history.json +0 -331
  99. package/src/mcp/.agentic-security/streak.json +0 -20
  100. package/src/posture/.agentic-security/dpia.md +0 -26
  101. package/src/posture/.agentic-security/findings.json +0 -77181
  102. package/src/posture/.agentic-security/last-scan.json +0 -77181
  103. package/src/posture/.agentic-security/last-scan.json.sig +0 -1
  104. package/src/posture/.agentic-security/pqc-migration-plan.json +0 -65
  105. package/src/posture/.agentic-security/pqc-migration-plan.md +0 -30
  106. package/src/posture/.agentic-security/sbom-history/7d45b5e03804aac084b4a2b4dc8c6f10107d2005.json +0 -6
  107. package/src/posture/.agentic-security/scan-history.json +0 -8904
  108. package/src/posture/.agentic-security/streak.json +0 -21
  109. package/src/posture/.agentic-security/threat-model.json +0 -2038
  110. package/src/posture/.agentic-security/threat-model.md +0 -73
  111. package/src/posture/compliance-frameworks/.agentic-security/findings.json +0 -80
  112. package/src/posture/compliance-frameworks/.agentic-security/last-scan.json +0 -80
  113. package/src/posture/compliance-frameworks/.agentic-security/last-scan.json.sig +0 -1
  114. package/src/posture/compliance-frameworks/.agentic-security/scan-history.json +0 -90
  115. package/src/posture/compliance-frameworks/.agentic-security/streak.json +0 -22
  116. package/src/report/.agentic-security/sbom-history/7d45b5e03804aac084b4a2b4dc8c6f10107d2005.json +0 -6
  117. package/src/report/.agentic-security/threat-model.json +0 -7
  118. package/src/report/.agentic-security/threat-model.md +0 -22
  119. package/src/sast/.agentic-security/findings.json +0 -6154
  120. package/src/sast/.agentic-security/last-scan.json +0 -6154
  121. package/src/sast/.agentic-security/last-scan.json.sig +0 -1
  122. package/src/sast/.agentic-security/scan-history.json +0 -941
  123. package/src/sast/.agentic-security/streak.json +0 -22
  124. package/src/sca/.agentic-security/findings.json +0 -7460
  125. package/src/sca/.agentic-security/last-scan.json +0 -7460
  126. package/src/sca/.agentic-security/last-scan.json.sig +0 -1
  127. package/src/sca/.agentic-security/scan-history.json +0 -113
  128. package/src/sca/.agentic-security/streak.json +0 -21
@@ -1,73 +0,0 @@
1
- # Threat Model (auto-generated)
2
-
3
- Generated by agentic-security on 2026-05-30.
4
-
5
- This threat model is derived from static analysis of the current codebase and is regenerated on every scan. It is intended as a working artifact, not a finished compliance document.
6
-
7
- ## Entities + boundaries
8
-
9
- ```mermaid
10
- flowchart TB
11
- subgraph External
12
- route_GET__api_users_2["http-route: GET /api/users/2"]
13
- route_GET__api_admin_users["http-route: GET /api/admin/users"]
14
- route_GET__api_health["http-route: GET /api/health"]
15
- end
16
- subgraph Application
17
- end
18
- External --> route_GET__api_users_2
19
- External --> route_GET__api_admin_users
20
- External --> route_GET__api_health
21
- ```
22
-
23
- ## Assets
24
-
25
-
26
- ## STRIDE threats
27
-
28
- ### Tampering (148)
29
-
30
- - [medium] **dos-sync-io** (CWE-400) at `deploy-platform.js:undefined` — Synchronous Blocking I/O (DoS Risk in Server Context)
31
- - [low] **mass-assignment** (CWE-915) at `integrity.js:undefined` — Mass Assignment (req.body Direct to Model)
32
- - [low] **dos-sync-io** (CWE-400) at `agents-memory.js:undefined` — Synchronous Blocking I/O (DoS Risk in Server Context)
33
- - [low] **dos-sync-io** (CWE-400) at `api-contract.js:undefined` — Synchronous Blocking I/O (DoS Risk in Server Context)
34
- - [low] **dos-sync-io** (CWE-400) at `auditor-walkthrough.js:undefined` — Synchronous Blocking I/O (DoS Risk in Server Context)
35
- - [low] **dos-sync-io** (CWE-400) at `auth-posture-import.js:undefined` — Synchronous Blocking I/O (DoS Risk in Server Context)
36
- - [low] **dos-sync-io** (CWE-400) at `blast-radius.js:undefined` — Synchronous Blocking I/O (DoS Risk in Server Context)
37
- - [low] **dos-sync-io** (CWE-400) at `calibration-drift.js:undefined` — Synchronous Blocking I/O (DoS Risk in Server Context)
38
- - [low] **dos-sync-io** (CWE-400) at `calibration.js:undefined` — Synchronous Blocking I/O (DoS Risk in Server Context)
39
- - [low] **dos-sync-io** (CWE-400) at `compliance-policy.js:undefined` — Synchronous Blocking I/O (DoS Risk in Server Context)
40
- - [low] **dos-sync-io** (CWE-400) at `cross-repo-memory.js:undefined` — Synchronous Blocking I/O (DoS Risk in Server Context)
41
- - [low] **dos-sync-io** (CWE-400) at `custom-rules.js:undefined` — Synchronous Blocking I/O (DoS Risk in Server Context)
42
- - [low] **dos-sync-io** (CWE-400) at `cve-alert-daemon.js:undefined` — Synchronous Blocking I/O (DoS Risk in Server Context)
43
- - [low] **dos-sync-io** (CWE-400) at `cve-lookup.js:undefined` — Synchronous Blocking I/O (DoS Risk in Server Context)
44
- - [low] **dos-sync-io** (CWE-400) at `dep-add-guard.js:undefined` — Synchronous Blocking I/O (DoS Risk in Server Context)
45
- - [low] **dos-sync-io** (CWE-400) at `deterministic.js:undefined` — Synchronous Blocking I/O (DoS Risk in Server Context)
46
- - [low] **dos-sync-io** (CWE-400) at `epss.js:undefined` — Synchronous Blocking I/O (DoS Risk in Server Context)
47
- - [low] **dos-sync-io** (CWE-400) at `exploitability-probability.js:undefined` — Synchronous Blocking I/O (DoS Risk in Server Context)
48
- - [low] **dos-sync-io** (CWE-400) at `feature-flags.js:undefined` — Synchronous Blocking I/O (DoS Risk in Server Context)
49
- - [low] **dos-sync-io** (CWE-400) at `federated-learning.js:undefined` — Synchronous Blocking I/O (DoS Risk in Server Context)
50
- - [low] **dos-sync-io** (CWE-400) at `findings-memory.js:undefined` — Synchronous Blocking I/O (DoS Risk in Server Context)
51
- - [low] **dos-sync-io** (CWE-400) at `fix-history.js:undefined` — Synchronous Blocking I/O (DoS Risk in Server Context)
52
- - [low] **dos-sync-io** (CWE-400) at `fix-plan.js:undefined` — Synchronous Blocking I/O (DoS Risk in Server Context)
53
- - [low] **dos-sync-io** (CWE-400) at `fix-style-mirror.js:undefined` — Synchronous Blocking I/O (DoS Risk in Server Context)
54
- - [low] **dos-sync-io** (CWE-400) at `fix-verify-loop.js:undefined` — Synchronous Blocking I/O (DoS Risk in Server Context)
55
- - … and 123 more
56
-
57
- ### Information Disclosure (5)
58
-
59
- - [low] **ssrf** (CWE-918) at `attack-playbooks.js:72` — SSRF: explicit reference to cloud instance-metadata endpoint
60
- - [low] **ssrf** (CWE-918) at `defender-agent.js:41` — SSRF: explicit reference to cloud instance-metadata endpoint
61
- - [low] **ssrf** (CWE-918) at `flow-narration.js:24` — SSRF: explicit reference to cloud instance-metadata endpoint
62
- - [low] **pqc-migration** (CWE-327) at `rule-pack-signing.js:187` — Pre-quantum ED25519 (ed25519) — replace with ML-DSA-65 before CRQC arrives
63
- - [low] **ssrf** (CWE-918) at `verifier.js:55` — SSRF: explicit reference to cloud instance-metadata endpoint
64
-
65
- ### Elevation of Privilege (5)
66
-
67
- - [low] **ssrf** (CWE-918) at `attack-playbooks.js:72` — SSRF: explicit reference to cloud instance-metadata endpoint
68
- - [low] **prototype-pollution** (CWE-1321) at `adversarial-self-test.js:60` — Prototype Pollution: Direct write to __proto__ / constructor.prototype
69
- - [low] **ssrf** (CWE-918) at `defender-agent.js:41` — SSRF: explicit reference to cloud instance-metadata endpoint
70
- - [low] **ssrf** (CWE-918) at `flow-narration.js:24` — SSRF: explicit reference to cloud instance-metadata endpoint
71
- - [low] **ssrf** (CWE-918) at `verifier.js:55` — SSRF: explicit reference to cloud instance-metadata endpoint
72
-
73
- ## Attack trees
@@ -1,80 +0,0 @@
1
- {
2
- "scanId": "aeb3cf41-7bb6-49c6-b4ae-b126e5afd726",
3
- "startedAt": "2026-05-29T21:02:56.188Z",
4
- "durationMs": 15,
5
- "scanned": {
6
- "files": 0,
7
- "lines": 0
8
- },
9
- "findings": [],
10
- "bundles": [],
11
- "routes": [],
12
- "components": [],
13
- "suppressedCount": 0,
14
- "blastRadiusSignals": {
15
- "industry": "generic",
16
- "industryConfidence": "low",
17
- "jurisdictions": [],
18
- "controls": [],
19
- "estimatedUsers": 50,
20
- "revenueIndicator": "pre-revenue",
21
- "hasStripe": false,
22
- "hasAuth": false,
23
- "hasUserTable": false,
24
- "hasPII": false,
25
- "hasPHI": false,
26
- "hasS3": false
27
- },
28
- "_v3": {
29
- "counterfactual": {
30
- "spofControls": [],
31
- "note": "no-controls-detected"
32
- },
33
- "threatModel": {
34
- "summary": {
35
- "assetCount": 0,
36
- "boundaryCount": 0,
37
- "strideCounts": {
38
- "spoofing": 0,
39
- "tampering": 0,
40
- "repudiation": 0,
41
- "informationDisclosure": 0,
42
- "denialOfService": 0,
43
- "elevationOfPrivilege": 0
44
- }
45
- },
46
- "assets": [],
47
- "trustBoundaries": [],
48
- "stride": {
49
- "spoofing": [],
50
- "tampering": [],
51
- "repudiation": [],
52
- "informationDisclosure": [],
53
- "denialOfService": [],
54
- "elevationOfPrivilege": []
55
- }
56
- },
57
- "trustBoundaryDiagram": {
58
- "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;",
59
- "nodes": [
60
- {
61
- "id": "INTERNET",
62
- "kind": "external",
63
- "label": "Internet"
64
- },
65
- {
66
- "id": "APP",
67
- "kind": "app",
68
- "label": "Application"
69
- }
70
- ],
71
- "edges": [],
72
- "decorations": []
73
- },
74
- "calibrationDrift": {
75
- "alarms": [],
76
- "note": "no-feedback-data"
77
- }
78
- },
79
- "annotatorErrors": []
80
- }
@@ -1,80 +0,0 @@
1
- {
2
- "scanId": "aeb3cf41-7bb6-49c6-b4ae-b126e5afd726",
3
- "startedAt": "2026-05-29T21:02:56.188Z",
4
- "durationMs": 15,
5
- "scanned": {
6
- "files": 0,
7
- "lines": 0
8
- },
9
- "findings": [],
10
- "bundles": [],
11
- "routes": [],
12
- "components": [],
13
- "suppressedCount": 0,
14
- "blastRadiusSignals": {
15
- "industry": "generic",
16
- "industryConfidence": "low",
17
- "jurisdictions": [],
18
- "controls": [],
19
- "estimatedUsers": 50,
20
- "revenueIndicator": "pre-revenue",
21
- "hasStripe": false,
22
- "hasAuth": false,
23
- "hasUserTable": false,
24
- "hasPII": false,
25
- "hasPHI": false,
26
- "hasS3": false
27
- },
28
- "_v3": {
29
- "counterfactual": {
30
- "spofControls": [],
31
- "note": "no-controls-detected"
32
- },
33
- "threatModel": {
34
- "summary": {
35
- "assetCount": 0,
36
- "boundaryCount": 0,
37
- "strideCounts": {
38
- "spoofing": 0,
39
- "tampering": 0,
40
- "repudiation": 0,
41
- "informationDisclosure": 0,
42
- "denialOfService": 0,
43
- "elevationOfPrivilege": 0
44
- }
45
- },
46
- "assets": [],
47
- "trustBoundaries": [],
48
- "stride": {
49
- "spoofing": [],
50
- "tampering": [],
51
- "repudiation": [],
52
- "informationDisclosure": [],
53
- "denialOfService": [],
54
- "elevationOfPrivilege": []
55
- }
56
- },
57
- "trustBoundaryDiagram": {
58
- "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;",
59
- "nodes": [
60
- {
61
- "id": "INTERNET",
62
- "kind": "external",
63
- "label": "Internet"
64
- },
65
- {
66
- "id": "APP",
67
- "kind": "app",
68
- "label": "Application"
69
- }
70
- ],
71
- "edges": [],
72
- "decorations": []
73
- },
74
- "calibrationDrift": {
75
- "alarms": [],
76
- "note": "no-feedback-data"
77
- }
78
- },
79
- "annotatorErrors": []
80
- }
@@ -1 +0,0 @@
1
- ccd53b45945cf534ddf095b46bb3a987246676e48f0308cf01946295f9d3e448
@@ -1,90 +0,0 @@
1
- [
2
- {
3
- "timestamp": "2026-05-29T21:01:01.146Z",
4
- "label": "scan",
5
- "total": 0,
6
- "critical": 0,
7
- "high": 0,
8
- "medium": 0,
9
- "low": 0,
10
- "kev": 0,
11
- "ids": []
12
- },
13
- {
14
- "timestamp": "2026-05-29T21:01:20.024Z",
15
- "label": "scan",
16
- "total": 0,
17
- "critical": 0,
18
- "high": 0,
19
- "medium": 0,
20
- "low": 0,
21
- "kev": 0,
22
- "ids": []
23
- },
24
- {
25
- "timestamp": "2026-05-29T21:01:41.003Z",
26
- "label": "scan",
27
- "total": 0,
28
- "critical": 0,
29
- "high": 0,
30
- "medium": 0,
31
- "low": 0,
32
- "kev": 0,
33
- "ids": []
34
- },
35
- {
36
- "timestamp": "2026-05-29T21:01:56.122Z",
37
- "label": "scan",
38
- "total": 0,
39
- "critical": 0,
40
- "high": 0,
41
- "medium": 0,
42
- "low": 0,
43
- "kev": 0,
44
- "ids": []
45
- },
46
- {
47
- "timestamp": "2026-05-29T21:02:10.982Z",
48
- "label": "scan",
49
- "total": 0,
50
- "critical": 0,
51
- "high": 0,
52
- "medium": 0,
53
- "low": 0,
54
- "kev": 0,
55
- "ids": []
56
- },
57
- {
58
- "timestamp": "2026-05-29T21:02:27.759Z",
59
- "label": "scan",
60
- "total": 0,
61
- "critical": 0,
62
- "high": 0,
63
- "medium": 0,
64
- "low": 0,
65
- "kev": 0,
66
- "ids": []
67
- },
68
- {
69
- "timestamp": "2026-05-29T21:02:44.397Z",
70
- "label": "scan",
71
- "total": 0,
72
- "critical": 0,
73
- "high": 0,
74
- "medium": 0,
75
- "low": 0,
76
- "kev": 0,
77
- "ids": []
78
- },
79
- {
80
- "timestamp": "2026-05-29T21:02:56.203Z",
81
- "label": "scan",
82
- "total": 0,
83
- "critical": 0,
84
- "high": 0,
85
- "medium": 0,
86
- "low": 0,
87
- "kev": 0,
88
- "ids": []
89
- }
90
- ]
@@ -1,22 +0,0 @@
1
- {
2
- "firstScanDate": "2026-05-29T21:01:01.152Z",
3
- "lastScanDate": "2026-05-29T21:02:56.210Z",
4
- "totalScans": 8,
5
- "daysCleanCritical": 1,
6
- "lastCleanDate": "2026-05-29",
7
- "lastCriticalDate": null,
8
- "hasEverHadCritical": false,
9
- "bestDaysCleanCritical": 1,
10
- "totalFindingsAtFirstScan": 0,
11
- "totalFindingsAtLastScan": 0,
12
- "totalFixesInferred": 0,
13
- "lastGrade": "A+",
14
- "bestGrade": "A+",
15
- "launchCheckPassedAt": null,
16
- "achievements": [
17
- "first-scan",
18
- "grade-a",
19
- "grade-a-plus"
20
- ],
21
- "previousGrade": "A+"
22
- }
@@ -1,6 +0,0 @@
1
- {
2
- "sha": "7d45b5e03804aac084b4a2b4dc8c6f10107d2005",
3
- "ts": "2026-05-30T05:08:01.641Z",
4
- "componentCount": 0,
5
- "components": []
6
- }
@@ -1,7 +0,0 @@
1
- {
2
- "entities": [],
3
- "boundaries": [],
4
- "assets": [],
5
- "threats": [],
6
- "attackTrees": []
7
- }
@@ -1,22 +0,0 @@
1
- # Threat Model (auto-generated)
2
-
3
- Generated by agentic-security on 2026-05-30.
4
-
5
- This threat model is derived from static analysis of the current codebase and is regenerated on every scan. It is intended as a working artifact, not a finished compliance document.
6
-
7
- ## Entities + boundaries
8
-
9
- ```mermaid
10
- flowchart TB
11
- subgraph External
12
- end
13
- subgraph Application
14
- end
15
- ```
16
-
17
- ## Assets
18
-
19
-
20
- ## STRIDE threats
21
-
22
- ## Attack trees