@clear-capabilities/agentic-security-scanner 0.84.1 → 0.118.2

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 (125) hide show
  1. package/CHANGELOG.md +404 -0
  2. package/dist/178.index.js +1 -1
  3. package/dist/384.index.js +1 -1
  4. package/dist/637.index.js +1 -1
  5. package/dist/838.index.js +1 -1
  6. package/dist/agentic-security.mjs +84 -84
  7. package/dist/agentic-security.mjs.sha256 +1 -1
  8. package/package.json +12 -6
  9. package/src/.agentic-security/dpia.md +26 -0
  10. package/src/.agentic-security/pqc-migration-plan.json +80 -0
  11. package/src/.agentic-security/pqc-migration-plan.md +32 -0
  12. package/src/.agentic-security/sbom-history/0775d96ba4cf814520d02760cfb3010760c7684f.json +6 -0
  13. package/src/.agentic-security/sbom-history/29300441d3460832137a8e51a92b74068cad2f15.json +6 -0
  14. package/src/.agentic-security/sbom-history/3852ad2aa0e50951bed0c930c29d1861aa13d048.json +6 -0
  15. package/src/.agentic-security/sbom-history/3d96e2daec97e3226c9679bac6e64a89ca10bfe9.json +6 -0
  16. package/src/.agentic-security/sbom-history/5f0b136622fce09b469a1a6137c04d5b18652ea4.json +6 -0
  17. package/src/.agentic-security/sbom-history/64e30595d447b62344d0d9200760269df2095332.json +6 -0
  18. package/src/.agentic-security/sbom-history/71f3241902c9e7437764e3caa046ba8a3bcdd32a.json +6 -0
  19. package/src/.agentic-security/sbom-history/99c372cdc33ecc9dde92960b4ffadf7775860e61.json +6 -0
  20. package/src/.agentic-security/sbom-history/9c93b15e8cf3ff2ddb8cdae92371b82e178b463c.json +6 -0
  21. package/src/.agentic-security/sbom-history/a3544abf1863d71776b61302ca74d9ead2b26a9f.json +6 -0
  22. package/src/.agentic-security/sbom-history/dca15abdec43c508aa342db86dc5db8d7f01fbbe.json +6 -0
  23. package/src/.agentic-security/threat-model.json +3702 -0
  24. package/src/.agentic-security/threat-model.md +118 -0
  25. package/src/dataflow/.agentic-security/dpia.md +26 -0
  26. package/src/dataflow/.agentic-security/sbom-history/15d7c4d20f9d968ebec29445c9e9b3fc6f74e6a1.json +6 -0
  27. package/src/dataflow/.agentic-security/sbom-history/3852ad2aa0e50951bed0c930c29d1861aa13d048.json +6 -0
  28. package/src/dataflow/.agentic-security/sbom-history/73166872888d9ddcbe98645af818ecc7d8917b07.json +6 -0
  29. package/src/dataflow/.agentic-security/sbom-history/8869fe64035bec0152d92ece961e9369d8637076.json +6 -0
  30. package/src/dataflow/.agentic-security/sbom-history/9c93b15e8cf3ff2ddb8cdae92371b82e178b463c.json +6 -0
  31. package/src/dataflow/.agentic-security/sbom-history/b7ac2dada4a9216ccfe8969fc57f988c83f46975.json +6 -0
  32. package/src/dataflow/.agentic-security/threat-model.json +161 -0
  33. package/src/dataflow/.agentic-security/threat-model.md +43 -0
  34. package/src/dataflow/CLAUDE.md +17 -5
  35. package/src/dataflow/catalog.js +9 -0
  36. package/src/dataflow/engine.js +30 -4
  37. package/src/dataflow/index.js +8 -0
  38. package/src/dataflow/proof-gate.js +95 -0
  39. package/src/dataflow/summaries.js +44 -5
  40. package/src/engine.js +199 -5
  41. package/src/ir/.agentic-security/dpia.md +26 -0
  42. package/src/ir/.agentic-security/exploit-bundles.json +77 -0
  43. package/src/ir/.agentic-security/sbom-history/73166872888d9ddcbe98645af818ecc7d8917b07.json +6 -0
  44. package/src/ir/.agentic-security/sbom-history/b5f468a158f6a145aedd8680841c106b9809f16b.json +6 -0
  45. package/src/ir/.agentic-security/threat-model.json +143 -0
  46. package/src/ir/.agentic-security/threat-model.md +39 -0
  47. package/src/ir/CLAUDE.md +1 -0
  48. package/src/ir/callgraph.js +12 -1
  49. package/src/ir/tree-sitter-loader.js +108 -0
  50. package/src/posture/.agentic-security/dpia.md +26 -0
  51. package/src/posture/.agentic-security/pqc-migration-plan.json +65 -0
  52. package/src/posture/.agentic-security/pqc-migration-plan.md +30 -0
  53. package/src/posture/.agentic-security/sbom-history/0724c133d2943c87555695b5b2adcfcfc3373a2d.json +6 -0
  54. package/src/posture/.agentic-security/sbom-history/7d45b5e03804aac084b4a2b4dc8c6f10107d2005.json +6 -0
  55. package/src/posture/.agentic-security/sbom-history/99c372cdc33ecc9dde92960b4ffadf7775860e61.json +6 -0
  56. package/src/posture/.agentic-security/sbom-history/b7ac2dada4a9216ccfe8969fc57f988c83f46975.json +6 -0
  57. package/src/posture/.agentic-security/threat-model.json +2038 -0
  58. package/src/posture/.agentic-security/threat-model.md +73 -0
  59. package/src/posture/auditor-walkthrough.js +1 -1
  60. package/src/posture/corpus-status.js +74 -0
  61. package/src/posture/coverage-report.js +113 -0
  62. package/src/posture/holdout-eval.js +57 -0
  63. package/src/posture/pr-augment.js +1 -1
  64. package/src/posture/router.js +37 -7
  65. package/src/report/.agentic-security/dpia.md +26 -0
  66. package/src/report/.agentic-security/sbom-history/7d45b5e03804aac084b4a2b4dc8c6f10107d2005.json +6 -0
  67. package/src/report/.agentic-security/sbom-history/f94be839aa6a1011f53da016416a561698b8f338.json +6 -0
  68. package/src/report/.agentic-security/threat-model.json +7 -0
  69. package/src/report/.agentic-security/threat-model.md +22 -0
  70. package/src/report/index.js +18 -1
  71. package/src/sast/.agentic-security/dpia.md +26 -0
  72. package/src/sast/.agentic-security/pqc-migration-plan.json +65 -0
  73. package/src/sast/.agentic-security/pqc-migration-plan.md +30 -0
  74. package/src/sast/.agentic-security/sbom-history/043a7b401c68f5a298c83d4c42e94f118ff2a89a.json +6 -0
  75. package/src/sast/.agentic-security/sbom-history/0775d96ba4cf814520d02760cfb3010760c7684f.json +6 -0
  76. package/src/sast/.agentic-security/sbom-history/20d77ad7363a82777d506dedbbb1ecfed52f094a.json +6 -0
  77. package/src/sast/.agentic-security/sbom-history/29300441d3460832137a8e51a92b74068cad2f15.json +6 -0
  78. package/src/sast/.agentic-security/sbom-history/3852ad2aa0e50951bed0c930c29d1861aa13d048.json +6 -0
  79. package/src/sast/.agentic-security/sbom-history/3c6b3205f04e26f7654943d465281d00e0fa395e.json +6 -0
  80. package/src/sast/.agentic-security/sbom-history/3d96e2daec97e3226c9679bac6e64a89ca10bfe9.json +6 -0
  81. package/src/sast/.agentic-security/sbom-history/5282502e090013219eb006f7e02d8c983bc29c8e.json +6 -0
  82. package/src/sast/.agentic-security/sbom-history/5f0b136622fce09b469a1a6137c04d5b18652ea4.json +6 -0
  83. package/src/sast/.agentic-security/sbom-history/64e30595d447b62344d0d9200760269df2095332.json +6 -0
  84. package/src/sast/.agentic-security/sbom-history/71f3241902c9e7437764e3caa046ba8a3bcdd32a.json +6 -0
  85. package/src/sast/.agentic-security/sbom-history/73514b485d4770f3c5ee57d87338bccd1c61d8b7.json +6 -0
  86. package/src/sast/.agentic-security/sbom-history/96fa584fc3134512237d58aac63d6f3778b0cbcb.json +6 -0
  87. package/src/sast/.agentic-security/sbom-history/99c372cdc33ecc9dde92960b4ffadf7775860e61.json +6 -0
  88. package/src/sast/.agentic-security/sbom-history/a3544abf1863d71776b61302ca74d9ead2b26a9f.json +6 -0
  89. package/src/sast/.agentic-security/sbom-history/a4a34ab8b3d758de2adc8c3dc3e42d4cb0db00a3.json +6 -0
  90. package/src/sast/.agentic-security/sbom-history/ac236ec3602cfc8fb133f389ec3687e409084673.json +6 -0
  91. package/src/sast/.agentic-security/sbom-history/b57b3e1292f1f9f0de6c5a34a436e330c78008a3.json +6 -0
  92. package/src/sast/.agentic-security/sbom-history/dca15abdec43c508aa342db86dc5db8d7f01fbbe.json +6 -0
  93. package/src/sast/.agentic-security/sbom-history/dcbfd4935922dd165093c08a1003c338eed937c5.json +6 -0
  94. package/src/sast/.agentic-security/sbom-history/fa017f725615b0293814344c8ef7dfeb06775ca0.json +6 -0
  95. package/src/sast/.agentic-security/threat-model.json +816 -0
  96. package/src/sast/.agentic-security/threat-model.md +91 -0
  97. package/src/sast/CLAUDE.md +9 -3
  98. package/src/sast/code-injection-multilang.js +117 -0
  99. package/src/sast/crypto-protocol.js +43 -1
  100. package/src/sast/csharp-structural.js +65 -0
  101. package/src/sast/csharp.js +3 -0
  102. package/src/sast/csrf.js +24 -3
  103. package/src/sast/csv-injection.js +84 -0
  104. package/src/sast/frontend-hygiene.js +106 -0
  105. package/src/sast/go-structural.js +60 -0
  106. package/src/sast/java-structural.js +81 -0
  107. package/src/sast/js-framework-structural.js +115 -0
  108. package/src/sast/kotlin.js +72 -0
  109. package/src/sast/ldap-injection.js +73 -17
  110. package/src/sast/open-redirect.js +47 -5
  111. package/src/sast/php.js +35 -0
  112. package/src/sast/python-structural.js +83 -0
  113. package/src/sast/redos-nfa.js +75 -0
  114. package/src/sast/response-splitting.js +48 -19
  115. package/src/sast/ruby.js +38 -0
  116. package/src/sast/secret-concat.js +60 -0
  117. package/src/sast/ssrf-cloud-metadata.js +13 -0
  118. package/src/sast/stored-taint.js +88 -0
  119. package/src/sast/tree-sitter-sinks.js +62 -0
  120. package/src/sast/weak-password-hash.js +28 -0
  121. package/src/sast/weak-randomness.js +46 -5
  122. package/src/sast/wrong-context-sanitizer.js +94 -0
  123. package/src/sast/xpath-injection.js +30 -6
  124. package/src/sast/xss-reflected-multilang.js +116 -0
  125. package/src/sast/xxe.js +67 -0
@@ -0,0 +1,816 @@
1
+ {
2
+ "entities": [
3
+ {
4
+ "kind": "http-route",
5
+ "id": "route:GET: \n parser: ",
6
+ "method": "GET",
7
+ "path": " \n parser: ",
8
+ "file": "xpath-injection.js",
9
+ "line": 69,
10
+ "requiresAuth": false
11
+ },
12
+ {
13
+ "kind": "queue-consumer",
14
+ "id": "queue:sensitive-data-logging.js:67",
15
+ "file": "sensitive-data-logging.js",
16
+ "line": 67
17
+ }
18
+ ],
19
+ "boundaries": [
20
+ {
21
+ "from": "external",
22
+ "to": "route:GET: \n parser: ",
23
+ "kind": "trust-boundary",
24
+ "requiresAuth": false
25
+ },
26
+ {
27
+ "from": "external",
28
+ "to": "queue:sensitive-data-logging.js:67",
29
+ "kind": "trust-boundary"
30
+ }
31
+ ],
32
+ "assets": [],
33
+ "threats": [
34
+ {
35
+ "stride": "T",
36
+ "strideLabel": "Tampering",
37
+ "cwe": "CWE-295",
38
+ "family": "crypto-tls-no-verify",
39
+ "severity": "medium",
40
+ "file": "crypto-protocol.js",
41
+ "line": 105,
42
+ "vuln": "TLS certificate verification disabled — MITM-vulnerable",
43
+ "finding_id": "crypto-tls-no-verify:crypto-protocol.js:105",
44
+ "affectsAsset": null,
45
+ "atEntity": null
46
+ },
47
+ {
48
+ "stride": "T",
49
+ "strideLabel": "Tampering",
50
+ "cwe": "CWE-295",
51
+ "family": "crypto-tls-no-verify",
52
+ "severity": "medium",
53
+ "file": "crypto-protocol.js",
54
+ "line": 108,
55
+ "vuln": "TLS certificate verification disabled — MITM-vulnerable",
56
+ "finding_id": "crypto-tls-no-verify:crypto-protocol.js:108",
57
+ "affectsAsset": null,
58
+ "atEntity": null
59
+ },
60
+ {
61
+ "stride": "T",
62
+ "strideLabel": "Tampering",
63
+ "cwe": "CWE-295",
64
+ "family": "crypto-tls-no-verify",
65
+ "severity": "medium",
66
+ "file": "crypto-protocol.js",
67
+ "line": 114,
68
+ "vuln": "TLS certificate verification disabled — MITM-vulnerable",
69
+ "finding_id": "crypto-tls-no-verify:crypto-protocol.js:114",
70
+ "affectsAsset": null,
71
+ "atEntity": null
72
+ },
73
+ {
74
+ "stride": "T",
75
+ "strideLabel": "Tampering",
76
+ "cwe": "CWE-295",
77
+ "family": "crypto-tls-no-verify",
78
+ "severity": "medium",
79
+ "file": "crypto-protocol.js",
80
+ "line": 116,
81
+ "vuln": "TLS certificate verification disabled — MITM-vulnerable",
82
+ "finding_id": "crypto-tls-no-verify:crypto-protocol.js:116",
83
+ "affectsAsset": null,
84
+ "atEntity": null
85
+ },
86
+ {
87
+ "stride": "T",
88
+ "strideLabel": "Tampering",
89
+ "cwe": "CWE-295",
90
+ "family": "crypto-tls-no-verify",
91
+ "severity": "medium",
92
+ "file": "crypto-protocol.js",
93
+ "line": 118,
94
+ "vuln": "TLS certificate verification disabled — MITM-vulnerable",
95
+ "finding_id": "crypto-tls-no-verify:crypto-protocol.js:118",
96
+ "affectsAsset": null,
97
+ "atEntity": null
98
+ },
99
+ {
100
+ "stride": "T",
101
+ "strideLabel": "Tampering",
102
+ "cwe": "CWE-345",
103
+ "family": "eth-sign-used",
104
+ "severity": "medium",
105
+ "file": "dapp-frontend.js",
106
+ "line": 74,
107
+ "vuln": "eth_sign — signs arbitrary 32-byte hash with no prefix (the \"death sign\")",
108
+ "finding_id": "dapp-eth-sign:dapp-frontend.js:74",
109
+ "affectsAsset": null,
110
+ "atEntity": null
111
+ },
112
+ {
113
+ "stride": "T",
114
+ "strideLabel": "Tampering",
115
+ "cwe": "CWE-770",
116
+ "family": "spec-drift",
117
+ "severity": "medium",
118
+ "file": "rate-limit.js",
119
+ "line": 34,
120
+ "vuln": "Spec drift — _hasRateLimit() claims rate-limit-impl but body lacks expected evidence",
121
+ "finding_id": "spec-drift:rate-limit-impl:rate-limit.js:34",
122
+ "affectsAsset": null,
123
+ "atEntity": null
124
+ },
125
+ {
126
+ "stride": "T",
127
+ "strideLabel": "Tampering",
128
+ "cwe": "CWE-770",
129
+ "family": "spec-drift",
130
+ "severity": "medium",
131
+ "file": "rate-limit.js",
132
+ "line": 77,
133
+ "vuln": "Spec drift — scanRateLimit() claims rate-limit-impl but body lacks expected evidence",
134
+ "finding_id": "spec-drift:rate-limit-impl:rate-limit.js:77",
135
+ "affectsAsset": null,
136
+ "atEntity": null
137
+ },
138
+ {
139
+ "stride": "T",
140
+ "strideLabel": "Tampering",
141
+ "cwe": "CWE-347",
142
+ "family": "idor",
143
+ "severity": "low",
144
+ "file": "authz.js",
145
+ "line": 33,
146
+ "vuln": "AuthZ: jwt.verify called without algorithms allow-list",
147
+ "finding_id": "authz:authz.js:33:AuthZ__jwt_verify_called_without_algorithms_allow_list",
148
+ "affectsAsset": null,
149
+ "atEntity": null
150
+ },
151
+ {
152
+ "stride": "T",
153
+ "strideLabel": "Tampering",
154
+ "cwe": "CWE-349",
155
+ "family": "cache-poisoning",
156
+ "severity": "low",
157
+ "file": "cache-poisoning.js",
158
+ "line": 20,
159
+ "vuln": "Cache Poisoning — X-Forwarded-Host reflected from request to response",
160
+ "finding_id": "cache-poison-reflect:cache-poisoning.js:20",
161
+ "affectsAsset": null,
162
+ "atEntity": null
163
+ },
164
+ {
165
+ "stride": "T",
166
+ "strideLabel": "Tampering",
167
+ "cwe": "CWE-95",
168
+ "family": "client-side-eval-with-dynamic-input",
169
+ "severity": "low",
170
+ "file": "client-side.js",
171
+ "line": 135,
172
+ "vuln": "Client-Side — eval with Dynamic Input",
173
+ "finding_id": "client-side:CLIENT_EVAL:client-side.js:135",
174
+ "affectsAsset": null,
175
+ "atEntity": null
176
+ },
177
+ {
178
+ "stride": "T",
179
+ "strideLabel": "Tampering",
180
+ "cwe": "CWE-95",
181
+ "family": "client-side-eval-with-dynamic-input",
182
+ "severity": "low",
183
+ "file": "client-side.js",
184
+ "line": 139,
185
+ "vuln": "Client-Side — eval with Dynamic Input",
186
+ "finding_id": "client-side:CLIENT_EVAL:client-side.js:139",
187
+ "affectsAsset": null,
188
+ "atEntity": null
189
+ },
190
+ {
191
+ "stride": "T",
192
+ "strideLabel": "Tampering",
193
+ "cwe": "CWE-95",
194
+ "family": "client-side-eval-with-dynamic-input",
195
+ "severity": "low",
196
+ "file": "client-side.js",
197
+ "line": 140,
198
+ "vuln": "Client-Side — eval with Dynamic Input",
199
+ "finding_id": "client-side:CLIENT_EVAL:client-side.js:140",
200
+ "affectsAsset": null,
201
+ "atEntity": null
202
+ },
203
+ {
204
+ "stride": "T",
205
+ "strideLabel": "Tampering",
206
+ "cwe": "CWE-347",
207
+ "family": "idor",
208
+ "severity": "low",
209
+ "file": "crypto-protocol.js",
210
+ "line": 374,
211
+ "vuln": "AuthZ: jwt.verify called without algorithms allow-list",
212
+ "finding_id": "authz:crypto-protocol.js:374:AuthZ__jwt_verify_called_without_algorithms_allow_list",
213
+ "affectsAsset": null,
214
+ "atEntity": null
215
+ },
216
+ {
217
+ "stride": "T",
218
+ "strideLabel": "Tampering",
219
+ "cwe": "CWE-347",
220
+ "family": "idor",
221
+ "severity": "low",
222
+ "file": "crypto-protocol.js",
223
+ "line": 375,
224
+ "vuln": "AuthZ: jwt.verify called without algorithms allow-list",
225
+ "finding_id": "authz:crypto-protocol.js:375:AuthZ__jwt_verify_called_without_algorithms_allow_list",
226
+ "affectsAsset": null,
227
+ "atEntity": null
228
+ },
229
+ {
230
+ "stride": "T",
231
+ "strideLabel": "Tampering",
232
+ "cwe": "CWE-326",
233
+ "family": "crypto-tls-version",
234
+ "severity": "low",
235
+ "file": "crypto-protocol.js",
236
+ "line": 67,
237
+ "vuln": "TLS configured to accept versions below TLS 1.2",
238
+ "finding_id": "crypto-tls-min-version:crypto-protocol.js:67",
239
+ "affectsAsset": null,
240
+ "atEntity": null
241
+ },
242
+ {
243
+ "stride": "T",
244
+ "strideLabel": "Tampering",
245
+ "cwe": "CWE-326",
246
+ "family": "crypto-tls-version",
247
+ "severity": "low",
248
+ "file": "crypto-protocol.js",
249
+ "line": 69,
250
+ "vuln": "TLS configured to accept versions below TLS 1.2",
251
+ "finding_id": "crypto-tls-min-version:crypto-protocol.js:69",
252
+ "affectsAsset": null,
253
+ "atEntity": null
254
+ },
255
+ {
256
+ "stride": "I",
257
+ "strideLabel": "Information Disclosure",
258
+ "cwe": "CWE-327",
259
+ "family": "crypto-weak-cipher",
260
+ "severity": "low",
261
+ "file": "crypto-protocol.js",
262
+ "line": 141,
263
+ "vuln": "Weak symmetric cipher in use (DES / 3DES / RC4 / Blowfish / NULL / EXPORT)",
264
+ "finding_id": "crypto-weak-cipher:crypto-protocol.js:141",
265
+ "affectsAsset": null,
266
+ "atEntity": null
267
+ },
268
+ {
269
+ "stride": "I",
270
+ "strideLabel": "Information Disclosure",
271
+ "cwe": "CWE-327",
272
+ "family": "crypto-weak-cipher",
273
+ "severity": "low",
274
+ "file": "crypto-protocol.js",
275
+ "line": 143,
276
+ "vuln": "Weak symmetric cipher in use (DES / 3DES / RC4 / Blowfish / NULL / EXPORT)",
277
+ "finding_id": "crypto-weak-cipher:crypto-protocol.js:143",
278
+ "affectsAsset": null,
279
+ "atEntity": null
280
+ },
281
+ {
282
+ "stride": "I",
283
+ "strideLabel": "Information Disclosure",
284
+ "cwe": "CWE-327",
285
+ "family": "crypto-weak-cipher",
286
+ "severity": "low",
287
+ "file": "crypto-protocol.js",
288
+ "line": 145,
289
+ "vuln": "Weak symmetric cipher in use (DES / 3DES / RC4 / Blowfish / NULL / EXPORT)",
290
+ "finding_id": "crypto-weak-cipher:crypto-protocol.js:145",
291
+ "affectsAsset": null,
292
+ "atEntity": null
293
+ },
294
+ {
295
+ "stride": "I",
296
+ "strideLabel": "Information Disclosure",
297
+ "cwe": "CWE-327",
298
+ "family": "crypto-weak-cipher",
299
+ "severity": "low",
300
+ "file": "crypto-protocol.js",
301
+ "line": 149,
302
+ "vuln": "Weak symmetric cipher in use (DES / 3DES / RC4 / Blowfish / NULL / EXPORT)",
303
+ "finding_id": "crypto-weak-cipher:crypto-protocol.js:149",
304
+ "affectsAsset": null,
305
+ "atEntity": null
306
+ },
307
+ {
308
+ "stride": "T",
309
+ "strideLabel": "Tampering",
310
+ "cwe": "CWE-345",
311
+ "family": "crypto-jwt-key-confusion",
312
+ "severity": "low",
313
+ "file": "crypto-protocol.js",
314
+ "line": 374,
315
+ "vuln": "jwt.verify called without algorithms allowlist — algorithm-confusion attack",
316
+ "finding_id": "crypto-jwt-no-algs-allowlist:crypto-protocol.js:374",
317
+ "affectsAsset": null,
318
+ "atEntity": null
319
+ },
320
+ {
321
+ "stride": "T",
322
+ "strideLabel": "Tampering",
323
+ "cwe": "CWE-1336",
324
+ "family": "prompt-template-user-input-interpolated-",
325
+ "severity": "low",
326
+ "file": "k8s-admission.js",
327
+ "line": 139,
328
+ "vuln": "Prompt Template: user input interpolated into prompt string without isolation",
329
+ "finding_id": "prompt-tpl:k8s-admission.js:139:Prompt_Template__user_input_interpolated_into_prompt_string_",
330
+ "affectsAsset": null,
331
+ "atEntity": null
332
+ },
333
+ {
334
+ "stride": "T",
335
+ "strideLabel": "Tampering",
336
+ "cwe": "CWE-1427",
337
+ "family": "llm-app-security",
338
+ "severity": "low",
339
+ "file": "llm-app.js",
340
+ "line": 93,
341
+ "vuln": "Prompt Injection — system prompt concatenated with user input",
342
+ "finding_id": "llm-prompt-injection-mix:93",
343
+ "affectsAsset": null,
344
+ "atEntity": null
345
+ },
346
+ {
347
+ "stride": "T",
348
+ "strideLabel": "Tampering",
349
+ "cwe": "CWE-1427",
350
+ "family": "llm-app-security",
351
+ "severity": "low",
352
+ "file": "llm-app.js",
353
+ "line": 136,
354
+ "vuln": "RAG Injection — vector-store result flows into LLM prompt without sanitization",
355
+ "finding_id": "llm-rag-injection:136",
356
+ "affectsAsset": null,
357
+ "atEntity": null
358
+ },
359
+ {
360
+ "stride": "T",
361
+ "strideLabel": "Tampering",
362
+ "cwe": "CWE-1427",
363
+ "family": "llm-app-security",
364
+ "severity": "low",
365
+ "file": "llm-app.js",
366
+ "line": 137,
367
+ "vuln": "RAG Injection — vector-store result flows into LLM prompt without sanitization",
368
+ "finding_id": "llm-rag-injection:137",
369
+ "affectsAsset": null,
370
+ "atEntity": null
371
+ },
372
+ {
373
+ "stride": "E",
374
+ "strideLabel": "Elevation of Privilege",
375
+ "cwe": "CWE-502",
376
+ "family": "llm-app-security",
377
+ "severity": "low",
378
+ "file": "llm-app.js",
379
+ "line": 163,
380
+ "vuln": "Untrusted Model Load — model file loaded from a non-literal path",
381
+ "finding_id": "llm-model-load-untrusted:163",
382
+ "affectsAsset": null,
383
+ "atEntity": null
384
+ },
385
+ {
386
+ "stride": "T",
387
+ "strideLabel": "Tampering",
388
+ "cwe": "CWE-1427",
389
+ "family": "prompt-injection-system-prompt-built-fro",
390
+ "severity": "low",
391
+ "file": "llm-owasp.js",
392
+ "line": 180,
393
+ "vuln": "Prompt Injection — system prompt built from concatenated/interpolated content (LLM01)",
394
+ "finding_id": "llm-owasp:llm-owasp.js:180:llm01-dynamic-system:concat",
395
+ "affectsAsset": null,
396
+ "atEntity": null
397
+ },
398
+ {
399
+ "stride": "T",
400
+ "strideLabel": "Tampering",
401
+ "cwe": "CWE-1427",
402
+ "family": "prompt-injection-system-prompt-built-fro",
403
+ "severity": "low",
404
+ "file": "llm-owasp.js",
405
+ "line": 181,
406
+ "vuln": "Prompt Injection — system prompt built from concatenated/interpolated content (LLM01)",
407
+ "finding_id": "llm-owasp:llm-owasp.js:181:llm01-dynamic-system:fstring",
408
+ "affectsAsset": null,
409
+ "atEntity": null
410
+ },
411
+ {
412
+ "stride": "T",
413
+ "strideLabel": "Tampering",
414
+ "cwe": "CWE-1427",
415
+ "family": "prompt-injection-system-prompt-built-fro",
416
+ "severity": "low",
417
+ "file": "llm-owasp.js",
418
+ "line": 182,
419
+ "vuln": "Prompt Injection — system prompt built from concatenated/interpolated content (LLM01)",
420
+ "finding_id": "llm-owasp:llm-owasp.js:182:llm01-dynamic-system:template",
421
+ "affectsAsset": null,
422
+ "atEntity": null
423
+ },
424
+ {
425
+ "stride": "T",
426
+ "strideLabel": "Tampering",
427
+ "cwe": "CWE-1336",
428
+ "family": "prompt-template-user-input-interpolated-",
429
+ "severity": "low",
430
+ "file": "llm-owasp.js",
431
+ "line": 125,
432
+ "vuln": "Prompt Template: user input interpolated into prompt string without isolation",
433
+ "finding_id": "prompt-tpl:llm-owasp.js:125:Prompt_Template__user_input_interpolated_into_prompt_string_",
434
+ "affectsAsset": null,
435
+ "atEntity": null
436
+ },
437
+ {
438
+ "stride": "E",
439
+ "strideLabel": "Elevation of Privilege",
440
+ "cwe": "CWE-502",
441
+ "family": "llm-app-security",
442
+ "severity": "low",
443
+ "file": "model-load.js",
444
+ "line": 45,
445
+ "vuln": "Untrusted Model Load — model file loaded from a non-literal path",
446
+ "finding_id": "llm-model-load-untrusted:45",
447
+ "affectsAsset": null,
448
+ "atEntity": null
449
+ },
450
+ {
451
+ "stride": "T",
452
+ "strideLabel": "Tampering",
453
+ "cwe": "CWE-79",
454
+ "family": "xss",
455
+ "severity": "low",
456
+ "file": "mutation-xss.js",
457
+ "line": 123,
458
+ "vuln": "Markdown→HTML XSS — user-supplied Markdown rendered to HTML without sanitization",
459
+ "finding_id": "markdown-xss:mutation-xss.js:123",
460
+ "affectsAsset": null,
461
+ "atEntity": null
462
+ },
463
+ {
464
+ "stride": "I",
465
+ "strideLabel": "Information Disclosure",
466
+ "cwe": "CWE-327",
467
+ "family": "pqc-migration",
468
+ "severity": "low",
469
+ "file": "post-quantum-crypto.js",
470
+ "line": 136,
471
+ "vuln": "Pre-quantum RSA (rsa-encrypt) — replace with ML-KEM-768 before CRQC arrives",
472
+ "finding_id": "pqc-rsa-encrypt:post-quantum-crypto.js:136",
473
+ "affectsAsset": null,
474
+ "atEntity": null
475
+ },
476
+ {
477
+ "stride": "I",
478
+ "strideLabel": "Information Disclosure",
479
+ "cwe": "CWE-22",
480
+ "family": "zip-slip",
481
+ "severity": "low",
482
+ "file": "zip-slip.js",
483
+ "line": 192,
484
+ "vuln": "Zip Slip: archive entry.path written to filesystem without sanitization",
485
+ "finding_id": "zip-slip:zip-slip.js:192:node-entry",
486
+ "affectsAsset": null,
487
+ "atEntity": null
488
+ },
489
+ {
490
+ "stride": "I",
491
+ "strideLabel": "Information Disclosure",
492
+ "cwe": "CWE-918",
493
+ "family": "ssrf",
494
+ "severity": "low",
495
+ "file": "csharp-structural.js",
496
+ "line": 60,
497
+ "vuln": "SSRF: explicit reference to cloud instance-metadata endpoint",
498
+ "finding_id": "ssrf-meta-hardcoded:csharp-structural.js:60",
499
+ "affectsAsset": null,
500
+ "atEntity": null
501
+ },
502
+ {
503
+ "stride": "E",
504
+ "strideLabel": "Elevation of Privilege",
505
+ "cwe": "CWE-918",
506
+ "family": "ssrf",
507
+ "severity": "low",
508
+ "file": "csharp-structural.js",
509
+ "line": 60,
510
+ "vuln": "SSRF: explicit reference to cloud instance-metadata endpoint",
511
+ "finding_id": "ssrf-meta-hardcoded:csharp-structural.js:60",
512
+ "affectsAsset": null,
513
+ "atEntity": null
514
+ },
515
+ {
516
+ "stride": "I",
517
+ "strideLabel": "Information Disclosure",
518
+ "cwe": "CWE-918",
519
+ "family": "ssrf",
520
+ "severity": "low",
521
+ "file": "go-extended.js",
522
+ "line": 39,
523
+ "vuln": "SSRF: explicit reference to cloud instance-metadata endpoint",
524
+ "finding_id": "ssrf-meta-hardcoded:go-extended.js:39",
525
+ "affectsAsset": null,
526
+ "atEntity": null
527
+ },
528
+ {
529
+ "stride": "E",
530
+ "strideLabel": "Elevation of Privilege",
531
+ "cwe": "CWE-918",
532
+ "family": "ssrf",
533
+ "severity": "low",
534
+ "file": "go-extended.js",
535
+ "line": 39,
536
+ "vuln": "SSRF: explicit reference to cloud instance-metadata endpoint",
537
+ "finding_id": "ssrf-meta-hardcoded:go-extended.js:39",
538
+ "affectsAsset": null,
539
+ "atEntity": null
540
+ },
541
+ {
542
+ "stride": "T",
543
+ "strideLabel": "Tampering",
544
+ "cwe": "CWE-644",
545
+ "family": "cache-poisoning",
546
+ "severity": "low",
547
+ "file": "host-header.js",
548
+ "line": 99,
549
+ "vuln": "Cache Poisoning — Host header used in URL/redirect generation",
550
+ "finding_id": "cache-poison-host:host-header.js:99",
551
+ "affectsAsset": null,
552
+ "atEntity": null
553
+ },
554
+ {
555
+ "stride": "I",
556
+ "strideLabel": "Information Disclosure",
557
+ "cwe": "CWE-918",
558
+ "family": "ssrf",
559
+ "severity": "low",
560
+ "file": "java-structural.js",
561
+ "line": 76,
562
+ "vuln": "SSRF: explicit reference to cloud instance-metadata endpoint",
563
+ "finding_id": "ssrf-meta-hardcoded:java-structural.js:76",
564
+ "affectsAsset": null,
565
+ "atEntity": null
566
+ },
567
+ {
568
+ "stride": "E",
569
+ "strideLabel": "Elevation of Privilege",
570
+ "cwe": "CWE-918",
571
+ "family": "ssrf",
572
+ "severity": "low",
573
+ "file": "java-structural.js",
574
+ "line": 76,
575
+ "vuln": "SSRF: explicit reference to cloud instance-metadata endpoint",
576
+ "finding_id": "ssrf-meta-hardcoded:java-structural.js:76",
577
+ "affectsAsset": null,
578
+ "atEntity": null
579
+ },
580
+ {
581
+ "stride": "I",
582
+ "strideLabel": "Information Disclosure",
583
+ "cwe": "CWE-918",
584
+ "family": "ssrf",
585
+ "severity": "low",
586
+ "file": "js-framework-structural.js",
587
+ "line": 69,
588
+ "vuln": "SSRF: explicit reference to cloud instance-metadata endpoint",
589
+ "finding_id": "ssrf-meta-hardcoded:js-framework-structural.js:69",
590
+ "affectsAsset": null,
591
+ "atEntity": null
592
+ },
593
+ {
594
+ "stride": "E",
595
+ "strideLabel": "Elevation of Privilege",
596
+ "cwe": "CWE-918",
597
+ "family": "ssrf",
598
+ "severity": "low",
599
+ "file": "js-framework-structural.js",
600
+ "line": 69,
601
+ "vuln": "SSRF: explicit reference to cloud instance-metadata endpoint",
602
+ "finding_id": "ssrf-meta-hardcoded:js-framework-structural.js:69",
603
+ "affectsAsset": null,
604
+ "atEntity": null
605
+ },
606
+ {
607
+ "stride": "I",
608
+ "strideLabel": "Information Disclosure",
609
+ "cwe": "CWE-918",
610
+ "family": "ssrf",
611
+ "severity": "low",
612
+ "file": "kotlin.js",
613
+ "line": 136,
614
+ "vuln": "SSRF: explicit reference to cloud instance-metadata endpoint",
615
+ "finding_id": "ssrf-meta-hardcoded:kotlin.js:136",
616
+ "affectsAsset": null,
617
+ "atEntity": null
618
+ },
619
+ {
620
+ "stride": "E",
621
+ "strideLabel": "Elevation of Privilege",
622
+ "cwe": "CWE-918",
623
+ "family": "ssrf",
624
+ "severity": "low",
625
+ "file": "kotlin.js",
626
+ "line": 136,
627
+ "vuln": "SSRF: explicit reference to cloud instance-metadata endpoint",
628
+ "finding_id": "ssrf-meta-hardcoded:kotlin.js:136",
629
+ "affectsAsset": null,
630
+ "atEntity": null
631
+ },
632
+ {
633
+ "stride": "T",
634
+ "strideLabel": "Tampering",
635
+ "cwe": "CWE-77",
636
+ "family": "system-prompt-missing-explicit-anti-inje",
637
+ "severity": "low",
638
+ "file": "llm-app.js",
639
+ "line": 104,
640
+ "vuln": "System prompt missing explicit anti-injection guidance — model may follow user-supplied \"ignore previous\" attacks",
641
+ "finding_id": "llm-redteam:noPromptInjectionDefense:llm-app.js:104",
642
+ "affectsAsset": null,
643
+ "atEntity": null
644
+ },
645
+ {
646
+ "stride": "T",
647
+ "strideLabel": "Tampering",
648
+ "cwe": "CWE-400",
649
+ "family": "unbounded-consumption-llm-call-has-no-to",
650
+ "severity": "low",
651
+ "file": "llm-owasp.js",
652
+ "line": 183,
653
+ "vuln": "Unbounded Consumption — LLM call has no token budget (LLM10)",
654
+ "finding_id": "llm-owasp:llm-owasp.js:183:llm10-no-token-budget",
655
+ "affectsAsset": null,
656
+ "atEntity": null
657
+ },
658
+ {
659
+ "stride": "I",
660
+ "strideLabel": "Information Disclosure",
661
+ "cwe": "CWE-918",
662
+ "family": "ssrf",
663
+ "severity": "low",
664
+ "file": "php.js",
665
+ "line": 111,
666
+ "vuln": "SSRF: explicit reference to cloud instance-metadata endpoint",
667
+ "finding_id": "ssrf-meta-hardcoded:php.js:111",
668
+ "affectsAsset": null,
669
+ "atEntity": null
670
+ },
671
+ {
672
+ "stride": "E",
673
+ "strideLabel": "Elevation of Privilege",
674
+ "cwe": "CWE-918",
675
+ "family": "ssrf",
676
+ "severity": "low",
677
+ "file": "php.js",
678
+ "line": 111,
679
+ "vuln": "SSRF: explicit reference to cloud instance-metadata endpoint",
680
+ "finding_id": "ssrf-meta-hardcoded:php.js:111",
681
+ "affectsAsset": null,
682
+ "atEntity": null
683
+ },
684
+ {
685
+ "stride": "I",
686
+ "strideLabel": "Information Disclosure",
687
+ "cwe": "CWE-918",
688
+ "family": "ssrf",
689
+ "severity": "low",
690
+ "file": "python-sinks.js",
691
+ "line": 186,
692
+ "vuln": "SSRF: explicit reference to cloud instance-metadata endpoint",
693
+ "finding_id": "ssrf-meta-hardcoded:python-sinks.js:186",
694
+ "affectsAsset": null,
695
+ "atEntity": null
696
+ },
697
+ {
698
+ "stride": "E",
699
+ "strideLabel": "Elevation of Privilege",
700
+ "cwe": "CWE-918",
701
+ "family": "ssrf",
702
+ "severity": "low",
703
+ "file": "python-sinks.js",
704
+ "line": 186,
705
+ "vuln": "SSRF: explicit reference to cloud instance-metadata endpoint",
706
+ "finding_id": "ssrf-meta-hardcoded:python-sinks.js:186",
707
+ "affectsAsset": null,
708
+ "atEntity": null
709
+ },
710
+ {
711
+ "stride": "T",
712
+ "strideLabel": "Tampering",
713
+ "cwe": "CWE-532",
714
+ "family": "sensitive-data-logging",
715
+ "severity": "low",
716
+ "file": "sensitive-data-logging.js",
717
+ "line": 67,
718
+ "vuln": "Sensitive Data Logged — PII-named variable sent to logger without sanitization",
719
+ "finding_id": "sensitive-log:sensitive-data-logging.js:67",
720
+ "affectsAsset": null,
721
+ "atEntity": "queue:sensitive-data-logging.js:67"
722
+ },
723
+ {
724
+ "stride": "I",
725
+ "strideLabel": "Information Disclosure",
726
+ "cwe": "CWE-918",
727
+ "family": "ssrf",
728
+ "severity": "low",
729
+ "file": "ssrf-cloud-metadata.js",
730
+ "line": 61,
731
+ "vuln": "SSRF: explicit reference to cloud instance-metadata endpoint",
732
+ "finding_id": "ssrf-meta-hardcoded:ssrf-cloud-metadata.js:61",
733
+ "affectsAsset": null,
734
+ "atEntity": null
735
+ },
736
+ {
737
+ "stride": "E",
738
+ "strideLabel": "Elevation of Privilege",
739
+ "cwe": "CWE-918",
740
+ "family": "ssrf",
741
+ "severity": "low",
742
+ "file": "ssrf-cloud-metadata.js",
743
+ "line": 61,
744
+ "vuln": "SSRF: explicit reference to cloud instance-metadata endpoint",
745
+ "finding_id": "ssrf-meta-hardcoded:ssrf-cloud-metadata.js:61",
746
+ "affectsAsset": null,
747
+ "atEntity": null
748
+ },
749
+ {
750
+ "stride": "I",
751
+ "strideLabel": "Information Disclosure",
752
+ "cwe": "CWE-918",
753
+ "family": "ssrf",
754
+ "severity": "low",
755
+ "file": "ssrf-cloud-metadata.js",
756
+ "line": 86,
757
+ "vuln": "SSRF: explicit reference to cloud instance-metadata endpoint",
758
+ "finding_id": "ssrf-meta-hardcoded:ssrf-cloud-metadata.js:86",
759
+ "affectsAsset": null,
760
+ "atEntity": null
761
+ },
762
+ {
763
+ "stride": "E",
764
+ "strideLabel": "Elevation of Privilege",
765
+ "cwe": "CWE-918",
766
+ "family": "ssrf",
767
+ "severity": "low",
768
+ "file": "ssrf-cloud-metadata.js",
769
+ "line": 86,
770
+ "vuln": "SSRF: explicit reference to cloud instance-metadata endpoint",
771
+ "finding_id": "ssrf-meta-hardcoded:ssrf-cloud-metadata.js:86",
772
+ "affectsAsset": null,
773
+ "atEntity": null
774
+ },
775
+ {
776
+ "stride": "I",
777
+ "strideLabel": "Information Disclosure",
778
+ "cwe": "CWE-918",
779
+ "family": "ssrf",
780
+ "severity": "low",
781
+ "file": "ssrf-cloud-metadata.js",
782
+ "line": 15,
783
+ "vuln": "SSRF: explicit reference to cloud instance-metadata endpoint",
784
+ "finding_id": "ssrf-meta-hardcoded:ssrf-cloud-metadata.js:15",
785
+ "affectsAsset": null,
786
+ "atEntity": null
787
+ },
788
+ {
789
+ "stride": "E",
790
+ "strideLabel": "Elevation of Privilege",
791
+ "cwe": "CWE-918",
792
+ "family": "ssrf",
793
+ "severity": "low",
794
+ "file": "ssrf-cloud-metadata.js",
795
+ "line": 15,
796
+ "vuln": "SSRF: explicit reference to cloud instance-metadata endpoint",
797
+ "finding_id": "ssrf-meta-hardcoded:ssrf-cloud-metadata.js:15",
798
+ "affectsAsset": null,
799
+ "atEntity": null
800
+ },
801
+ {
802
+ "stride": "I",
803
+ "strideLabel": "Information Disclosure",
804
+ "cwe": "CWE-327",
805
+ "family": "crypto-weak-hash",
806
+ "severity": "low",
807
+ "file": "weak-password-hash.js",
808
+ "line": 45,
809
+ "vuln": "Weak hash algorithm (MD5 / SHA-1 / MD2 / MD4) used",
810
+ "finding_id": "crypto-weak-hash:weak-password-hash.js:45",
811
+ "affectsAsset": null,
812
+ "atEntity": null
813
+ }
814
+ ],
815
+ "attackTrees": []
816
+ }