@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": "1a8e7623-7074-46ec-9fe6-a8a0d25ee3c6",
|
|
3
|
+
"startedAt": "2026-05-27T02:22:41.834Z",
|
|
4
|
+
"durationMs": 363,
|
|
5
5
|
"scanned": {
|
|
6
|
-
"files":
|
|
6
|
+
"files": 15,
|
|
7
7
|
"lines": 0
|
|
8
8
|
},
|
|
9
9
|
"findings": [
|
|
@@ -117,6 +117,7 @@
|
|
|
117
117
|
"unvalidated": true,
|
|
118
118
|
"cross_language": false,
|
|
119
119
|
"family": "mass-assignment",
|
|
120
|
+
"parser": "STRUCTURAL",
|
|
120
121
|
"_unsigned": false,
|
|
121
122
|
"_passThroughSigning": false,
|
|
122
123
|
"signatureStatus": "verified",
|
|
@@ -152,9 +153,493 @@
|
|
|
152
153
|
"shell-execution"
|
|
153
154
|
],
|
|
154
155
|
"cloneClusterId": "a0c829a31c63bf1a",
|
|
155
|
-
"cloneClusterSize":
|
|
156
|
+
"cloneClusterSize": 5,
|
|
157
|
+
"provenance": "human-likely",
|
|
158
|
+
"provenanceScore": 0.08,
|
|
159
|
+
"typeNarrowed": null,
|
|
160
|
+
"strideCategory": null,
|
|
161
|
+
"personaScores": {
|
|
162
|
+
"script-kiddie": {
|
|
163
|
+
"score": 0.65,
|
|
164
|
+
"tier": "high",
|
|
165
|
+
"factors": [
|
|
166
|
+
"sev:high"
|
|
167
|
+
]
|
|
168
|
+
},
|
|
169
|
+
"opportunistic-criminal": {
|
|
170
|
+
"score": 0.85,
|
|
171
|
+
"tier": "critical",
|
|
172
|
+
"factors": [
|
|
173
|
+
"sev:high",
|
|
174
|
+
"bias:mass-assignment+0.20"
|
|
175
|
+
]
|
|
176
|
+
},
|
|
177
|
+
"apt-nation-state": {
|
|
178
|
+
"score": 0.65,
|
|
179
|
+
"tier": "high",
|
|
180
|
+
"factors": [
|
|
181
|
+
"sev:high"
|
|
182
|
+
]
|
|
183
|
+
},
|
|
184
|
+
"supply-chain-attacker": {
|
|
185
|
+
"score": 0.65,
|
|
186
|
+
"tier": "high",
|
|
187
|
+
"factors": [
|
|
188
|
+
"sev:high"
|
|
189
|
+
]
|
|
190
|
+
},
|
|
191
|
+
"malicious-insider": {
|
|
192
|
+
"score": 1,
|
|
193
|
+
"tier": "critical",
|
|
194
|
+
"factors": [
|
|
195
|
+
"sev:high",
|
|
196
|
+
"bias:mass-assignment+0.25",
|
|
197
|
+
"authz-bypass-favored"
|
|
198
|
+
]
|
|
199
|
+
}
|
|
200
|
+
},
|
|
201
|
+
"personaTopTwo": [
|
|
202
|
+
"malicious-insider",
|
|
203
|
+
"opportunistic-criminal"
|
|
204
|
+
],
|
|
205
|
+
"personaMaxName": "malicious-insider",
|
|
206
|
+
"personaMaxScore": 1,
|
|
207
|
+
"reverseExposure": null,
|
|
208
|
+
"specMined": null,
|
|
209
|
+
"whyFired": {
|
|
210
|
+
"detector": "sast/mass-assignment",
|
|
211
|
+
"ruleId": "CWE-915",
|
|
212
|
+
"parser": "STRUCTURAL",
|
|
213
|
+
"evidence": {
|
|
214
|
+
"sinkSnippet": "const sha = crypto.createHash('sha256').update(body).digest('hex').slice(0, 8);",
|
|
215
|
+
"sourceSnippet": "const sha = crypto.createHash('sha256').update(body).digest('hex').slice(0, 8);",
|
|
216
|
+
"pathSteps": [],
|
|
217
|
+
"sanitizers": [],
|
|
218
|
+
"guards": []
|
|
219
|
+
},
|
|
220
|
+
"considered": {
|
|
221
|
+
"suppressionsApplied": [],
|
|
222
|
+
"suppressionsSkipped": [],
|
|
223
|
+
"reachabilityFilter": "unaffected",
|
|
224
|
+
"clusterCollapsed": false,
|
|
225
|
+
"typeNarrowed": false,
|
|
226
|
+
"crownJewelTier": "low-value",
|
|
227
|
+
"mitigationVerdict": "unreachable-in-prod"
|
|
228
|
+
},
|
|
229
|
+
"scanner": {
|
|
230
|
+
"rulesetVersion": null,
|
|
231
|
+
"packHash": null,
|
|
232
|
+
"modelId": null
|
|
233
|
+
}
|
|
234
|
+
},
|
|
235
|
+
"adversaryTranscript": null,
|
|
236
|
+
"predictedBountyUsd": {
|
|
237
|
+
"low": 50,
|
|
238
|
+
"likely": 200,
|
|
239
|
+
"high": 600,
|
|
240
|
+
"program": "web2"
|
|
241
|
+
},
|
|
242
|
+
"bountyConfidence": "medium",
|
|
243
|
+
"attackPlaybook": {
|
|
244
|
+
"cwe": "CWE-915",
|
|
245
|
+
"kind": "curl",
|
|
246
|
+
"title": "Mass assignment — privilege escalation probe",
|
|
247
|
+
"instruction": "Submit an extra field (role) on profile update; verify it sticks.",
|
|
248
|
+
"script": "# AUTHORIZED USE ONLY — run only against systems you own or have explicit permission to test.\n# CWE-915 — Mass assignment\ncurl -s -i -X PATCH \"${TARGET_URL}/api/me\" \\\n -H \"Authorization: Bearer ${TEST_TOKEN}\" -H \"Content-Type: application/json\" \\\n -d '{\"name\":\"x\",\"role\":\"admin\"}'\n# Confirmed when subsequent /api/me returns role=admin.",
|
|
249
|
+
"ethics": "# AUTHORIZED USE ONLY — run only against systems you own or have explicit permission to test."
|
|
250
|
+
}
|
|
251
|
+
},
|
|
252
|
+
{
|
|
253
|
+
"id": "struct:parser-go.js:253:Mass_Assignment_(req.body_Direct_to_Model)",
|
|
254
|
+
"kind": "sast",
|
|
255
|
+
"severity": "high",
|
|
256
|
+
"vuln": "Mass Assignment (req.body Direct to Model)",
|
|
257
|
+
"cwe": "CWE-915",
|
|
258
|
+
"owaspLlm": null,
|
|
259
|
+
"stride": "Tampering",
|
|
260
|
+
"file": "parser-go.js",
|
|
261
|
+
"line": 253,
|
|
262
|
+
"snippet": "const sha = crypto.createHash('sha256').update(body).digest('hex').slice(0, 8);",
|
|
263
|
+
"fix": null,
|
|
264
|
+
"reachable": false,
|
|
265
|
+
"triage": 39,
|
|
266
|
+
"dataClasses": [],
|
|
267
|
+
"chain": null,
|
|
268
|
+
"confidence": 0.314,
|
|
269
|
+
"toxicity": 35,
|
|
270
|
+
"toxicityFactors": [
|
|
271
|
+
"high-severity",
|
|
272
|
+
"http-facing"
|
|
273
|
+
],
|
|
274
|
+
"toxicityLabel": "Medium",
|
|
275
|
+
"sources": null,
|
|
276
|
+
"epssScore": null,
|
|
277
|
+
"epssPercentile": null,
|
|
278
|
+
"epssCve": null,
|
|
279
|
+
"exploitedNow": false,
|
|
280
|
+
"tags": null,
|
|
281
|
+
"blastRadius": {
|
|
282
|
+
"scope": "all-users",
|
|
283
|
+
"dataAtRisk": [
|
|
284
|
+
"config"
|
|
285
|
+
],
|
|
286
|
+
"userCount": 50,
|
|
287
|
+
"industry": "generic",
|
|
288
|
+
"jurisdictions": [],
|
|
289
|
+
"controlsApplied": [],
|
|
290
|
+
"dollarBest": 23250,
|
|
291
|
+
"dollarLikely": 136250,
|
|
292
|
+
"dollarWorst": 775000,
|
|
293
|
+
"dollarLow": 23250,
|
|
294
|
+
"dollarHigh": 775000,
|
|
295
|
+
"components": {
|
|
296
|
+
"incidentResponse": {
|
|
297
|
+
"low": 8000,
|
|
298
|
+
"likely": 50000,
|
|
299
|
+
"high": 250000
|
|
300
|
+
},
|
|
301
|
+
"legal": {
|
|
302
|
+
"low": 10000,
|
|
303
|
+
"likely": 75000,
|
|
304
|
+
"high": 500000
|
|
305
|
+
},
|
|
306
|
+
"crisisPR": {
|
|
307
|
+
"low": 0,
|
|
308
|
+
"likely": 0,
|
|
309
|
+
"high": 0
|
|
310
|
+
},
|
|
311
|
+
"notification": {
|
|
312
|
+
"low": 5000,
|
|
313
|
+
"likely": 10000,
|
|
314
|
+
"high": 15000
|
|
315
|
+
},
|
|
316
|
+
"creditMonitoring": {
|
|
317
|
+
"low": 0,
|
|
318
|
+
"likely": 0,
|
|
319
|
+
"high": 0
|
|
320
|
+
},
|
|
321
|
+
"regulatoryFines": {
|
|
322
|
+
"low": 0,
|
|
323
|
+
"likely": 0,
|
|
324
|
+
"high": 0
|
|
325
|
+
},
|
|
326
|
+
"directDamage": {
|
|
327
|
+
"low": 250,
|
|
328
|
+
"likely": 1250,
|
|
329
|
+
"high": 10000
|
|
330
|
+
},
|
|
331
|
+
"classAction": {
|
|
332
|
+
"low": 0,
|
|
333
|
+
"likely": 0,
|
|
334
|
+
"high": 0
|
|
335
|
+
},
|
|
336
|
+
"lostBusiness": {
|
|
337
|
+
"low": 0,
|
|
338
|
+
"likely": 0,
|
|
339
|
+
"high": 0
|
|
340
|
+
}
|
|
341
|
+
},
|
|
342
|
+
"dominantDriver": "legal counsel",
|
|
343
|
+
"comparable": "GitHub mass-assignment 2012 → public ridicule + emergency rebuild",
|
|
344
|
+
"confidence": "low",
|
|
345
|
+
"narrative": "Mass Assignment (req.body Direct to Model) on `parser-go.js:253` 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: GitHub mass-assignment 2012 → public ridicule + emergency rebuild."
|
|
346
|
+
},
|
|
347
|
+
"stableId": "a28da8de4671367b",
|
|
348
|
+
"confidenceTier": "low",
|
|
349
|
+
"exploitability": 0.45,
|
|
350
|
+
"exploitabilityTier": "medium",
|
|
351
|
+
"exploitabilityFactors": [
|
|
352
|
+
"sev:high",
|
|
353
|
+
"unreachable"
|
|
354
|
+
],
|
|
355
|
+
"clusterSize": null,
|
|
356
|
+
"unreachable": false,
|
|
357
|
+
"validator_verdict": "unvalidated",
|
|
358
|
+
"llm_confidence": null,
|
|
359
|
+
"unvalidated": true,
|
|
360
|
+
"cross_language": false,
|
|
361
|
+
"family": "mass-assignment",
|
|
362
|
+
"parser": "STRUCTURAL",
|
|
363
|
+
"_unsigned": false,
|
|
364
|
+
"_passThroughSigning": false,
|
|
365
|
+
"signatureStatus": "verified",
|
|
366
|
+
"regression_test": null,
|
|
367
|
+
"poc": null,
|
|
368
|
+
"calibrated_confidence": null,
|
|
369
|
+
"calibrated_confidence_ci": null,
|
|
370
|
+
"calibrated_n": 5,
|
|
371
|
+
"calibration_reason": "insufficient-samples",
|
|
372
|
+
"verifier_verdict": "cannot-verify",
|
|
373
|
+
"verifier_reason": "no-poc-no-sanitizer-rule",
|
|
374
|
+
"verifier_runner": null,
|
|
375
|
+
"narration": "A finding of type \"Mass Assignment (req.body Direct to Model)\" at parser-go.js:?. Severity: high. Review the remediation field for class-specific guidance.",
|
|
376
|
+
"mitigationVerdict": "unreachable-in-prod",
|
|
377
|
+
"mitigationsApplied": [],
|
|
378
|
+
"mitigatedByWaf": false,
|
|
379
|
+
"wafRuleId": null,
|
|
380
|
+
"mitigatedByAuth": false,
|
|
381
|
+
"authMechanism": null,
|
|
382
|
+
"mitigatedByNetwork": false,
|
|
383
|
+
"networkExposure": null,
|
|
384
|
+
"featureFlag": null,
|
|
385
|
+
"featureFlagState": null,
|
|
386
|
+
"featureFlagRollout": null,
|
|
387
|
+
"exposedInProd": false,
|
|
388
|
+
"unreachableInProd": true,
|
|
389
|
+
"coldPath": false,
|
|
390
|
+
"hotPath": false,
|
|
391
|
+
"prodRequestCount": null,
|
|
392
|
+
"crownJewelScore": 0.15,
|
|
393
|
+
"crownJewelTier": "low-value",
|
|
394
|
+
"crownJewelFactors": [
|
|
395
|
+
"shell-execution"
|
|
396
|
+
],
|
|
397
|
+
"cloneClusterId": "a0c829a31c63bf1a",
|
|
398
|
+
"cloneClusterSize": 5,
|
|
399
|
+
"provenance": "human-likely",
|
|
400
|
+
"provenanceScore": 0,
|
|
401
|
+
"typeNarrowed": null,
|
|
402
|
+
"strideCategory": null,
|
|
403
|
+
"personaScores": {
|
|
404
|
+
"script-kiddie": {
|
|
405
|
+
"score": 0.65,
|
|
406
|
+
"tier": "high",
|
|
407
|
+
"factors": [
|
|
408
|
+
"sev:high"
|
|
409
|
+
]
|
|
410
|
+
},
|
|
411
|
+
"opportunistic-criminal": {
|
|
412
|
+
"score": 0.85,
|
|
413
|
+
"tier": "critical",
|
|
414
|
+
"factors": [
|
|
415
|
+
"sev:high",
|
|
416
|
+
"bias:mass-assignment+0.20"
|
|
417
|
+
]
|
|
418
|
+
},
|
|
419
|
+
"apt-nation-state": {
|
|
420
|
+
"score": 0.65,
|
|
421
|
+
"tier": "high",
|
|
422
|
+
"factors": [
|
|
423
|
+
"sev:high"
|
|
424
|
+
]
|
|
425
|
+
},
|
|
426
|
+
"supply-chain-attacker": {
|
|
427
|
+
"score": 0.65,
|
|
428
|
+
"tier": "high",
|
|
429
|
+
"factors": [
|
|
430
|
+
"sev:high"
|
|
431
|
+
]
|
|
432
|
+
},
|
|
433
|
+
"malicious-insider": {
|
|
434
|
+
"score": 1,
|
|
435
|
+
"tier": "critical",
|
|
436
|
+
"factors": [
|
|
437
|
+
"sev:high",
|
|
438
|
+
"bias:mass-assignment+0.25",
|
|
439
|
+
"authz-bypass-favored"
|
|
440
|
+
]
|
|
441
|
+
}
|
|
442
|
+
},
|
|
443
|
+
"personaTopTwo": [
|
|
444
|
+
"malicious-insider",
|
|
445
|
+
"opportunistic-criminal"
|
|
446
|
+
],
|
|
447
|
+
"personaMaxName": "malicious-insider",
|
|
448
|
+
"personaMaxScore": 1,
|
|
449
|
+
"reverseExposure": null,
|
|
450
|
+
"specMined": null,
|
|
451
|
+
"whyFired": {
|
|
452
|
+
"detector": "sast/mass-assignment",
|
|
453
|
+
"ruleId": "CWE-915",
|
|
454
|
+
"parser": "STRUCTURAL",
|
|
455
|
+
"evidence": {
|
|
456
|
+
"sinkSnippet": "const sha = crypto.createHash('sha256').update(body).digest('hex').slice(0, 8);",
|
|
457
|
+
"sourceSnippet": "const sha = crypto.createHash('sha256').update(body).digest('hex').slice(0, 8);",
|
|
458
|
+
"pathSteps": [],
|
|
459
|
+
"sanitizers": [],
|
|
460
|
+
"guards": []
|
|
461
|
+
},
|
|
462
|
+
"considered": {
|
|
463
|
+
"suppressionsApplied": [],
|
|
464
|
+
"suppressionsSkipped": [],
|
|
465
|
+
"reachabilityFilter": "unaffected",
|
|
466
|
+
"clusterCollapsed": false,
|
|
467
|
+
"typeNarrowed": false,
|
|
468
|
+
"crownJewelTier": "low-value",
|
|
469
|
+
"mitigationVerdict": "unreachable-in-prod"
|
|
470
|
+
},
|
|
471
|
+
"scanner": {
|
|
472
|
+
"rulesetVersion": null,
|
|
473
|
+
"packHash": null,
|
|
474
|
+
"modelId": null
|
|
475
|
+
}
|
|
476
|
+
},
|
|
477
|
+
"adversaryTranscript": null,
|
|
478
|
+
"predictedBountyUsd": {
|
|
479
|
+
"low": 50,
|
|
480
|
+
"likely": 200,
|
|
481
|
+
"high": 600,
|
|
482
|
+
"program": "web2"
|
|
483
|
+
},
|
|
484
|
+
"bountyConfidence": "medium",
|
|
485
|
+
"attackPlaybook": {
|
|
486
|
+
"cwe": "CWE-915",
|
|
487
|
+
"kind": "curl",
|
|
488
|
+
"title": "Mass assignment — privilege escalation probe",
|
|
489
|
+
"instruction": "Submit an extra field (role) on profile update; verify it sticks.",
|
|
490
|
+
"script": "# AUTHORIZED USE ONLY — run only against systems you own or have explicit permission to test.\n# CWE-915 — Mass assignment\ncurl -s -i -X PATCH \"${TARGET_URL}/api/me\" \\\n -H \"Authorization: Bearer ${TEST_TOKEN}\" -H \"Content-Type: application/json\" \\\n -d '{\"name\":\"x\",\"role\":\"admin\"}'\n# Confirmed when subsequent /api/me returns role=admin.",
|
|
491
|
+
"ethics": "# AUTHORIZED USE ONLY — run only against systems you own or have explicit permission to test."
|
|
492
|
+
}
|
|
493
|
+
},
|
|
494
|
+
{
|
|
495
|
+
"id": "struct:parser-kt.js:207:Mass_Assignment_(req.body_Direct_to_Model)",
|
|
496
|
+
"kind": "sast",
|
|
497
|
+
"severity": "high",
|
|
498
|
+
"vuln": "Mass Assignment (req.body Direct to Model)",
|
|
499
|
+
"cwe": "CWE-915",
|
|
500
|
+
"owaspLlm": null,
|
|
501
|
+
"stride": "Tampering",
|
|
502
|
+
"file": "parser-kt.js",
|
|
503
|
+
"line": 207,
|
|
504
|
+
"snippet": "const sha = crypto.createHash('sha256').update(body).digest('hex').slice(0, 8);",
|
|
505
|
+
"fix": null,
|
|
506
|
+
"reachable": false,
|
|
507
|
+
"triage": 39,
|
|
508
|
+
"dataClasses": [],
|
|
509
|
+
"chain": null,
|
|
510
|
+
"confidence": 0.314,
|
|
511
|
+
"toxicity": 35,
|
|
512
|
+
"toxicityFactors": [
|
|
513
|
+
"high-severity",
|
|
514
|
+
"http-facing"
|
|
515
|
+
],
|
|
516
|
+
"toxicityLabel": "Medium",
|
|
517
|
+
"sources": null,
|
|
518
|
+
"epssScore": null,
|
|
519
|
+
"epssPercentile": null,
|
|
520
|
+
"epssCve": null,
|
|
521
|
+
"exploitedNow": false,
|
|
522
|
+
"tags": null,
|
|
523
|
+
"blastRadius": {
|
|
524
|
+
"scope": "all-users",
|
|
525
|
+
"dataAtRisk": [
|
|
526
|
+
"config"
|
|
527
|
+
],
|
|
528
|
+
"userCount": 50,
|
|
529
|
+
"industry": "generic",
|
|
530
|
+
"jurisdictions": [],
|
|
531
|
+
"controlsApplied": [],
|
|
532
|
+
"dollarBest": 23250,
|
|
533
|
+
"dollarLikely": 136250,
|
|
534
|
+
"dollarWorst": 775000,
|
|
535
|
+
"dollarLow": 23250,
|
|
536
|
+
"dollarHigh": 775000,
|
|
537
|
+
"components": {
|
|
538
|
+
"incidentResponse": {
|
|
539
|
+
"low": 8000,
|
|
540
|
+
"likely": 50000,
|
|
541
|
+
"high": 250000
|
|
542
|
+
},
|
|
543
|
+
"legal": {
|
|
544
|
+
"low": 10000,
|
|
545
|
+
"likely": 75000,
|
|
546
|
+
"high": 500000
|
|
547
|
+
},
|
|
548
|
+
"crisisPR": {
|
|
549
|
+
"low": 0,
|
|
550
|
+
"likely": 0,
|
|
551
|
+
"high": 0
|
|
552
|
+
},
|
|
553
|
+
"notification": {
|
|
554
|
+
"low": 5000,
|
|
555
|
+
"likely": 10000,
|
|
556
|
+
"high": 15000
|
|
557
|
+
},
|
|
558
|
+
"creditMonitoring": {
|
|
559
|
+
"low": 0,
|
|
560
|
+
"likely": 0,
|
|
561
|
+
"high": 0
|
|
562
|
+
},
|
|
563
|
+
"regulatoryFines": {
|
|
564
|
+
"low": 0,
|
|
565
|
+
"likely": 0,
|
|
566
|
+
"high": 0
|
|
567
|
+
},
|
|
568
|
+
"directDamage": {
|
|
569
|
+
"low": 250,
|
|
570
|
+
"likely": 1250,
|
|
571
|
+
"high": 10000
|
|
572
|
+
},
|
|
573
|
+
"classAction": {
|
|
574
|
+
"low": 0,
|
|
575
|
+
"likely": 0,
|
|
576
|
+
"high": 0
|
|
577
|
+
},
|
|
578
|
+
"lostBusiness": {
|
|
579
|
+
"low": 0,
|
|
580
|
+
"likely": 0,
|
|
581
|
+
"high": 0
|
|
582
|
+
}
|
|
583
|
+
},
|
|
584
|
+
"dominantDriver": "legal counsel",
|
|
585
|
+
"comparable": "GitHub mass-assignment 2012 → public ridicule + emergency rebuild",
|
|
586
|
+
"confidence": "low",
|
|
587
|
+
"narrative": "Mass Assignment (req.body Direct to Model) on `parser-kt.js:207` 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: GitHub mass-assignment 2012 → public ridicule + emergency rebuild."
|
|
588
|
+
},
|
|
589
|
+
"stableId": "2fc3bac9558c1472",
|
|
590
|
+
"confidenceTier": "low",
|
|
591
|
+
"exploitability": 0.45,
|
|
592
|
+
"exploitabilityTier": "medium",
|
|
593
|
+
"exploitabilityFactors": [
|
|
594
|
+
"sev:high",
|
|
595
|
+
"unreachable"
|
|
596
|
+
],
|
|
597
|
+
"clusterSize": null,
|
|
598
|
+
"unreachable": false,
|
|
599
|
+
"validator_verdict": "unvalidated",
|
|
600
|
+
"llm_confidence": null,
|
|
601
|
+
"unvalidated": true,
|
|
602
|
+
"cross_language": false,
|
|
603
|
+
"family": "mass-assignment",
|
|
604
|
+
"parser": "STRUCTURAL",
|
|
605
|
+
"_unsigned": false,
|
|
606
|
+
"_passThroughSigning": false,
|
|
607
|
+
"signatureStatus": "verified",
|
|
608
|
+
"regression_test": null,
|
|
609
|
+
"poc": null,
|
|
610
|
+
"calibrated_confidence": null,
|
|
611
|
+
"calibrated_confidence_ci": null,
|
|
612
|
+
"calibrated_n": 5,
|
|
613
|
+
"calibration_reason": "insufficient-samples",
|
|
614
|
+
"verifier_verdict": "cannot-verify",
|
|
615
|
+
"verifier_reason": "no-poc-no-sanitizer-rule",
|
|
616
|
+
"verifier_runner": null,
|
|
617
|
+
"narration": "A finding of type \"Mass Assignment (req.body Direct to Model)\" at parser-kt.js:?. Severity: high. Review the remediation field for class-specific guidance.",
|
|
618
|
+
"mitigationVerdict": "unreachable-in-prod",
|
|
619
|
+
"mitigationsApplied": [],
|
|
620
|
+
"mitigatedByWaf": false,
|
|
621
|
+
"wafRuleId": null,
|
|
622
|
+
"mitigatedByAuth": false,
|
|
623
|
+
"authMechanism": null,
|
|
624
|
+
"mitigatedByNetwork": false,
|
|
625
|
+
"networkExposure": null,
|
|
626
|
+
"featureFlag": null,
|
|
627
|
+
"featureFlagState": null,
|
|
628
|
+
"featureFlagRollout": null,
|
|
629
|
+
"exposedInProd": false,
|
|
630
|
+
"unreachableInProd": true,
|
|
631
|
+
"coldPath": false,
|
|
632
|
+
"hotPath": false,
|
|
633
|
+
"prodRequestCount": null,
|
|
634
|
+
"crownJewelScore": 0.15,
|
|
635
|
+
"crownJewelTier": "low-value",
|
|
636
|
+
"crownJewelFactors": [
|
|
637
|
+
"shell-execution"
|
|
638
|
+
],
|
|
639
|
+
"cloneClusterId": "a0c829a31c63bf1a",
|
|
640
|
+
"cloneClusterSize": 5,
|
|
156
641
|
"provenance": "human-likely",
|
|
157
|
-
"provenanceScore": 0
|
|
642
|
+
"provenanceScore": 0,
|
|
158
643
|
"typeNarrowed": null,
|
|
159
644
|
"strideCategory": null,
|
|
160
645
|
"personaScores": {
|
|
@@ -249,15 +734,15 @@
|
|
|
249
734
|
}
|
|
250
735
|
},
|
|
251
736
|
{
|
|
252
|
-
"id": "struct:parser-
|
|
737
|
+
"id": "struct:parser-php.js:209:Mass_Assignment_(req.body_Direct_to_Model)",
|
|
253
738
|
"kind": "sast",
|
|
254
739
|
"severity": "high",
|
|
255
740
|
"vuln": "Mass Assignment (req.body Direct to Model)",
|
|
256
741
|
"cwe": "CWE-915",
|
|
257
742
|
"owaspLlm": null,
|
|
258
743
|
"stride": "Tampering",
|
|
259
|
-
"file": "parser-
|
|
260
|
-
"line":
|
|
744
|
+
"file": "parser-php.js",
|
|
745
|
+
"line": 209,
|
|
261
746
|
"snippet": "const sha = crypto.createHash('sha256').update(body).digest('hex').slice(0, 8);",
|
|
262
747
|
"fix": null,
|
|
263
748
|
"reachable": false,
|
|
@@ -341,9 +826,9 @@
|
|
|
341
826
|
"dominantDriver": "legal counsel",
|
|
342
827
|
"comparable": "GitHub mass-assignment 2012 → public ridicule + emergency rebuild",
|
|
343
828
|
"confidence": "low",
|
|
344
|
-
"narrative": "Mass Assignment (req.body Direct to Model) on `parser-
|
|
829
|
+
"narrative": "Mass Assignment (req.body Direct to Model) on `parser-php.js:209` 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: GitHub mass-assignment 2012 → public ridicule + emergency rebuild."
|
|
345
830
|
},
|
|
346
|
-
"stableId": "
|
|
831
|
+
"stableId": "b73364b3c23bcce8",
|
|
347
832
|
"confidenceTier": "low",
|
|
348
833
|
"exploitability": 0.45,
|
|
349
834
|
"exploitabilityTier": "medium",
|
|
@@ -358,6 +843,7 @@
|
|
|
358
843
|
"unvalidated": true,
|
|
359
844
|
"cross_language": false,
|
|
360
845
|
"family": "mass-assignment",
|
|
846
|
+
"parser": "STRUCTURAL",
|
|
361
847
|
"_unsigned": false,
|
|
362
848
|
"_passThroughSigning": false,
|
|
363
849
|
"signatureStatus": "verified",
|
|
@@ -370,7 +856,7 @@
|
|
|
370
856
|
"verifier_verdict": "cannot-verify",
|
|
371
857
|
"verifier_reason": "no-poc-no-sanitizer-rule",
|
|
372
858
|
"verifier_runner": null,
|
|
373
|
-
"narration": "A finding of type \"Mass Assignment (req.body Direct to Model)\" at parser-
|
|
859
|
+
"narration": "A finding of type \"Mass Assignment (req.body Direct to Model)\" at parser-php.js:?. Severity: high. Review the remediation field for class-specific guidance.",
|
|
374
860
|
"mitigationVerdict": "unreachable-in-prod",
|
|
375
861
|
"mitigationsApplied": [],
|
|
376
862
|
"mitigatedByWaf": false,
|
|
@@ -393,7 +879,249 @@
|
|
|
393
879
|
"shell-execution"
|
|
394
880
|
],
|
|
395
881
|
"cloneClusterId": "a0c829a31c63bf1a",
|
|
396
|
-
"cloneClusterSize":
|
|
882
|
+
"cloneClusterSize": 5,
|
|
883
|
+
"provenance": "human-likely",
|
|
884
|
+
"provenanceScore": 0,
|
|
885
|
+
"typeNarrowed": null,
|
|
886
|
+
"strideCategory": null,
|
|
887
|
+
"personaScores": {
|
|
888
|
+
"script-kiddie": {
|
|
889
|
+
"score": 0.65,
|
|
890
|
+
"tier": "high",
|
|
891
|
+
"factors": [
|
|
892
|
+
"sev:high"
|
|
893
|
+
]
|
|
894
|
+
},
|
|
895
|
+
"opportunistic-criminal": {
|
|
896
|
+
"score": 0.85,
|
|
897
|
+
"tier": "critical",
|
|
898
|
+
"factors": [
|
|
899
|
+
"sev:high",
|
|
900
|
+
"bias:mass-assignment+0.20"
|
|
901
|
+
]
|
|
902
|
+
},
|
|
903
|
+
"apt-nation-state": {
|
|
904
|
+
"score": 0.65,
|
|
905
|
+
"tier": "high",
|
|
906
|
+
"factors": [
|
|
907
|
+
"sev:high"
|
|
908
|
+
]
|
|
909
|
+
},
|
|
910
|
+
"supply-chain-attacker": {
|
|
911
|
+
"score": 0.65,
|
|
912
|
+
"tier": "high",
|
|
913
|
+
"factors": [
|
|
914
|
+
"sev:high"
|
|
915
|
+
]
|
|
916
|
+
},
|
|
917
|
+
"malicious-insider": {
|
|
918
|
+
"score": 1,
|
|
919
|
+
"tier": "critical",
|
|
920
|
+
"factors": [
|
|
921
|
+
"sev:high",
|
|
922
|
+
"bias:mass-assignment+0.25",
|
|
923
|
+
"authz-bypass-favored"
|
|
924
|
+
]
|
|
925
|
+
}
|
|
926
|
+
},
|
|
927
|
+
"personaTopTwo": [
|
|
928
|
+
"malicious-insider",
|
|
929
|
+
"opportunistic-criminal"
|
|
930
|
+
],
|
|
931
|
+
"personaMaxName": "malicious-insider",
|
|
932
|
+
"personaMaxScore": 1,
|
|
933
|
+
"reverseExposure": null,
|
|
934
|
+
"specMined": null,
|
|
935
|
+
"whyFired": {
|
|
936
|
+
"detector": "sast/mass-assignment",
|
|
937
|
+
"ruleId": "CWE-915",
|
|
938
|
+
"parser": "STRUCTURAL",
|
|
939
|
+
"evidence": {
|
|
940
|
+
"sinkSnippet": "const sha = crypto.createHash('sha256').update(body).digest('hex').slice(0, 8);",
|
|
941
|
+
"sourceSnippet": "const sha = crypto.createHash('sha256').update(body).digest('hex').slice(0, 8);",
|
|
942
|
+
"pathSteps": [],
|
|
943
|
+
"sanitizers": [],
|
|
944
|
+
"guards": []
|
|
945
|
+
},
|
|
946
|
+
"considered": {
|
|
947
|
+
"suppressionsApplied": [],
|
|
948
|
+
"suppressionsSkipped": [],
|
|
949
|
+
"reachabilityFilter": "unaffected",
|
|
950
|
+
"clusterCollapsed": false,
|
|
951
|
+
"typeNarrowed": false,
|
|
952
|
+
"crownJewelTier": "low-value",
|
|
953
|
+
"mitigationVerdict": "unreachable-in-prod"
|
|
954
|
+
},
|
|
955
|
+
"scanner": {
|
|
956
|
+
"rulesetVersion": null,
|
|
957
|
+
"packHash": null,
|
|
958
|
+
"modelId": null
|
|
959
|
+
}
|
|
960
|
+
},
|
|
961
|
+
"adversaryTranscript": null,
|
|
962
|
+
"predictedBountyUsd": {
|
|
963
|
+
"low": 50,
|
|
964
|
+
"likely": 200,
|
|
965
|
+
"high": 600,
|
|
966
|
+
"program": "web2"
|
|
967
|
+
},
|
|
968
|
+
"bountyConfidence": "medium",
|
|
969
|
+
"attackPlaybook": {
|
|
970
|
+
"cwe": "CWE-915",
|
|
971
|
+
"kind": "curl",
|
|
972
|
+
"title": "Mass assignment — privilege escalation probe",
|
|
973
|
+
"instruction": "Submit an extra field (role) on profile update; verify it sticks.",
|
|
974
|
+
"script": "# AUTHORIZED USE ONLY — run only against systems you own or have explicit permission to test.\n# CWE-915 — Mass assignment\ncurl -s -i -X PATCH \"${TARGET_URL}/api/me\" \\\n -H \"Authorization: Bearer ${TEST_TOKEN}\" -H \"Content-Type: application/json\" \\\n -d '{\"name\":\"x\",\"role\":\"admin\"}'\n# Confirmed when subsequent /api/me returns role=admin.",
|
|
975
|
+
"ethics": "# AUTHORIZED USE ONLY — run only against systems you own or have explicit permission to test."
|
|
976
|
+
}
|
|
977
|
+
},
|
|
978
|
+
{
|
|
979
|
+
"id": "struct:parser-rb.js:201:Mass_Assignment_(req.body_Direct_to_Model)",
|
|
980
|
+
"kind": "sast",
|
|
981
|
+
"severity": "high",
|
|
982
|
+
"vuln": "Mass Assignment (req.body Direct to Model)",
|
|
983
|
+
"cwe": "CWE-915",
|
|
984
|
+
"owaspLlm": null,
|
|
985
|
+
"stride": "Tampering",
|
|
986
|
+
"file": "parser-rb.js",
|
|
987
|
+
"line": 201,
|
|
988
|
+
"snippet": "const sha = crypto.createHash('sha256').update(body).digest('hex').slice(0, 8);",
|
|
989
|
+
"fix": null,
|
|
990
|
+
"reachable": false,
|
|
991
|
+
"triage": 39,
|
|
992
|
+
"dataClasses": [],
|
|
993
|
+
"chain": null,
|
|
994
|
+
"confidence": 0.314,
|
|
995
|
+
"toxicity": 35,
|
|
996
|
+
"toxicityFactors": [
|
|
997
|
+
"high-severity",
|
|
998
|
+
"http-facing"
|
|
999
|
+
],
|
|
1000
|
+
"toxicityLabel": "Medium",
|
|
1001
|
+
"sources": null,
|
|
1002
|
+
"epssScore": null,
|
|
1003
|
+
"epssPercentile": null,
|
|
1004
|
+
"epssCve": null,
|
|
1005
|
+
"exploitedNow": false,
|
|
1006
|
+
"tags": null,
|
|
1007
|
+
"blastRadius": {
|
|
1008
|
+
"scope": "all-users",
|
|
1009
|
+
"dataAtRisk": [
|
|
1010
|
+
"config"
|
|
1011
|
+
],
|
|
1012
|
+
"userCount": 50,
|
|
1013
|
+
"industry": "generic",
|
|
1014
|
+
"jurisdictions": [],
|
|
1015
|
+
"controlsApplied": [],
|
|
1016
|
+
"dollarBest": 23250,
|
|
1017
|
+
"dollarLikely": 136250,
|
|
1018
|
+
"dollarWorst": 775000,
|
|
1019
|
+
"dollarLow": 23250,
|
|
1020
|
+
"dollarHigh": 775000,
|
|
1021
|
+
"components": {
|
|
1022
|
+
"incidentResponse": {
|
|
1023
|
+
"low": 8000,
|
|
1024
|
+
"likely": 50000,
|
|
1025
|
+
"high": 250000
|
|
1026
|
+
},
|
|
1027
|
+
"legal": {
|
|
1028
|
+
"low": 10000,
|
|
1029
|
+
"likely": 75000,
|
|
1030
|
+
"high": 500000
|
|
1031
|
+
},
|
|
1032
|
+
"crisisPR": {
|
|
1033
|
+
"low": 0,
|
|
1034
|
+
"likely": 0,
|
|
1035
|
+
"high": 0
|
|
1036
|
+
},
|
|
1037
|
+
"notification": {
|
|
1038
|
+
"low": 5000,
|
|
1039
|
+
"likely": 10000,
|
|
1040
|
+
"high": 15000
|
|
1041
|
+
},
|
|
1042
|
+
"creditMonitoring": {
|
|
1043
|
+
"low": 0,
|
|
1044
|
+
"likely": 0,
|
|
1045
|
+
"high": 0
|
|
1046
|
+
},
|
|
1047
|
+
"regulatoryFines": {
|
|
1048
|
+
"low": 0,
|
|
1049
|
+
"likely": 0,
|
|
1050
|
+
"high": 0
|
|
1051
|
+
},
|
|
1052
|
+
"directDamage": {
|
|
1053
|
+
"low": 250,
|
|
1054
|
+
"likely": 1250,
|
|
1055
|
+
"high": 10000
|
|
1056
|
+
},
|
|
1057
|
+
"classAction": {
|
|
1058
|
+
"low": 0,
|
|
1059
|
+
"likely": 0,
|
|
1060
|
+
"high": 0
|
|
1061
|
+
},
|
|
1062
|
+
"lostBusiness": {
|
|
1063
|
+
"low": 0,
|
|
1064
|
+
"likely": 0,
|
|
1065
|
+
"high": 0
|
|
1066
|
+
}
|
|
1067
|
+
},
|
|
1068
|
+
"dominantDriver": "legal counsel",
|
|
1069
|
+
"comparable": "GitHub mass-assignment 2012 → public ridicule + emergency rebuild",
|
|
1070
|
+
"confidence": "low",
|
|
1071
|
+
"narrative": "Mass Assignment (req.body Direct to Model) on `parser-rb.js:201` 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: GitHub mass-assignment 2012 → public ridicule + emergency rebuild."
|
|
1072
|
+
},
|
|
1073
|
+
"stableId": "1889976dc0f1120c",
|
|
1074
|
+
"confidenceTier": "low",
|
|
1075
|
+
"exploitability": 0.45,
|
|
1076
|
+
"exploitabilityTier": "medium",
|
|
1077
|
+
"exploitabilityFactors": [
|
|
1078
|
+
"sev:high",
|
|
1079
|
+
"unreachable"
|
|
1080
|
+
],
|
|
1081
|
+
"clusterSize": null,
|
|
1082
|
+
"unreachable": false,
|
|
1083
|
+
"validator_verdict": "unvalidated",
|
|
1084
|
+
"llm_confidence": null,
|
|
1085
|
+
"unvalidated": true,
|
|
1086
|
+
"cross_language": false,
|
|
1087
|
+
"family": "mass-assignment",
|
|
1088
|
+
"parser": "STRUCTURAL",
|
|
1089
|
+
"_unsigned": false,
|
|
1090
|
+
"_passThroughSigning": false,
|
|
1091
|
+
"signatureStatus": "verified",
|
|
1092
|
+
"regression_test": null,
|
|
1093
|
+
"poc": null,
|
|
1094
|
+
"calibrated_confidence": null,
|
|
1095
|
+
"calibrated_confidence_ci": null,
|
|
1096
|
+
"calibrated_n": 5,
|
|
1097
|
+
"calibration_reason": "insufficient-samples",
|
|
1098
|
+
"verifier_verdict": "cannot-verify",
|
|
1099
|
+
"verifier_reason": "no-poc-no-sanitizer-rule",
|
|
1100
|
+
"verifier_runner": null,
|
|
1101
|
+
"narration": "A finding of type \"Mass Assignment (req.body Direct to Model)\" at parser-rb.js:?. Severity: high. Review the remediation field for class-specific guidance.",
|
|
1102
|
+
"mitigationVerdict": "unreachable-in-prod",
|
|
1103
|
+
"mitigationsApplied": [],
|
|
1104
|
+
"mitigatedByWaf": false,
|
|
1105
|
+
"wafRuleId": null,
|
|
1106
|
+
"mitigatedByAuth": false,
|
|
1107
|
+
"authMechanism": null,
|
|
1108
|
+
"mitigatedByNetwork": false,
|
|
1109
|
+
"networkExposure": null,
|
|
1110
|
+
"featureFlag": null,
|
|
1111
|
+
"featureFlagState": null,
|
|
1112
|
+
"featureFlagRollout": null,
|
|
1113
|
+
"exposedInProd": false,
|
|
1114
|
+
"unreachableInProd": true,
|
|
1115
|
+
"coldPath": false,
|
|
1116
|
+
"hotPath": false,
|
|
1117
|
+
"prodRequestCount": null,
|
|
1118
|
+
"crownJewelScore": 0.15,
|
|
1119
|
+
"crownJewelTier": "low-value",
|
|
1120
|
+
"crownJewelFactors": [
|
|
1121
|
+
"shell-execution"
|
|
1122
|
+
],
|
|
1123
|
+
"cloneClusterId": "a0c829a31c63bf1a",
|
|
1124
|
+
"cloneClusterSize": 5,
|
|
397
1125
|
"provenance": "human-likely",
|
|
398
1126
|
"provenanceScore": 0,
|
|
399
1127
|
"typeNarrowed": null,
|
|
@@ -598,6 +1326,7 @@
|
|
|
598
1326
|
"unvalidated": true,
|
|
599
1327
|
"cross_language": false,
|
|
600
1328
|
"family": "dos-sync-io",
|
|
1329
|
+
"parser": "STRUCTURAL",
|
|
601
1330
|
"_unsigned": false,
|
|
602
1331
|
"_passThroughSigning": false,
|
|
603
1332
|
"signatureStatus": "verified",
|
|
@@ -828,6 +1557,7 @@
|
|
|
828
1557
|
"unvalidated": true,
|
|
829
1558
|
"cross_language": false,
|
|
830
1559
|
"family": "dos-sync-io",
|
|
1560
|
+
"parser": "STRUCTURAL",
|
|
831
1561
|
"_unsigned": false,
|
|
832
1562
|
"_passThroughSigning": false,
|
|
833
1563
|
"signatureStatus": "verified",
|
|
@@ -1058,6 +1788,7 @@
|
|
|
1058
1788
|
"unvalidated": true,
|
|
1059
1789
|
"cross_language": false,
|
|
1060
1790
|
"family": "dos-sync-io",
|
|
1791
|
+
"parser": "STRUCTURAL",
|
|
1061
1792
|
"_unsigned": false,
|
|
1062
1793
|
"_passThroughSigning": false,
|
|
1063
1794
|
"signatureStatus": "verified",
|
|
@@ -1288,6 +2019,7 @@
|
|
|
1288
2019
|
"unvalidated": true,
|
|
1289
2020
|
"cross_language": false,
|
|
1290
2021
|
"family": "dos-sync-io",
|
|
2022
|
+
"parser": "STRUCTURAL",
|
|
1291
2023
|
"_unsigned": false,
|
|
1292
2024
|
"_passThroughSigning": false,
|
|
1293
2025
|
"signatureStatus": "verified",
|
|
@@ -1518,6 +2250,7 @@
|
|
|
1518
2250
|
"unvalidated": true,
|
|
1519
2251
|
"cross_language": false,
|
|
1520
2252
|
"family": "dos-sync-io",
|
|
2253
|
+
"parser": "STRUCTURAL",
|
|
1521
2254
|
"_unsigned": false,
|
|
1522
2255
|
"_passThroughSigning": false,
|
|
1523
2256
|
"signatureStatus": "verified",
|
|
@@ -1748,6 +2481,7 @@
|
|
|
1748
2481
|
"unvalidated": true,
|
|
1749
2482
|
"cross_language": false,
|
|
1750
2483
|
"family": "dos-sync-io",
|
|
2484
|
+
"parser": "STRUCTURAL",
|
|
1751
2485
|
"_unsigned": false,
|
|
1752
2486
|
"_passThroughSigning": false,
|
|
1753
2487
|
"signatureStatus": "verified",
|
|
@@ -1978,6 +2712,7 @@
|
|
|
1978
2712
|
"unvalidated": true,
|
|
1979
2713
|
"cross_language": false,
|
|
1980
2714
|
"family": "dos-sync-io",
|
|
2715
|
+
"parser": "STRUCTURAL",
|
|
1981
2716
|
"_unsigned": false,
|
|
1982
2717
|
"_passThroughSigning": false,
|
|
1983
2718
|
"signatureStatus": "verified",
|
|
@@ -2208,6 +2943,7 @@
|
|
|
2208
2943
|
"unvalidated": true,
|
|
2209
2944
|
"cross_language": false,
|
|
2210
2945
|
"family": "dos-sync-io",
|
|
2946
|
+
"parser": "STRUCTURAL",
|
|
2211
2947
|
"_unsigned": false,
|
|
2212
2948
|
"_passThroughSigning": false,
|
|
2213
2949
|
"signatureStatus": "verified",
|
|
@@ -2439,6 +3175,7 @@
|
|
|
2439
3175
|
"unvalidated": true,
|
|
2440
3176
|
"cross_language": false,
|
|
2441
3177
|
"family": "dos-sync-io",
|
|
3178
|
+
"parser": "STRUCTURAL",
|
|
2442
3179
|
"_unsigned": false,
|
|
2443
3180
|
"_passThroughSigning": false,
|
|
2444
3181
|
"signatureStatus": "verified",
|
|
@@ -2672,6 +3409,7 @@
|
|
|
2672
3409
|
"unvalidated": true,
|
|
2673
3410
|
"cross_language": false,
|
|
2674
3411
|
"family": "toctou-file-existence-permission-check-b",
|
|
3412
|
+
"parser": "TOCTOU",
|
|
2675
3413
|
"_unsigned": false,
|
|
2676
3414
|
"_passThroughSigning": false,
|
|
2677
3415
|
"signatureStatus": "verified",
|
|
@@ -2867,7 +3605,9 @@
|
|
|
2867
3605
|
"comparable": "Generic finding — likely cost driven by user count + jurisdiction stack",
|
|
2868
3606
|
"confidence": "low",
|
|
2869
3607
|
"narrative": "TOCTOU: existsSync followed by file op on `type-stubs.js:57` 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: Generic finding — likely cost driven by user count + jurisdiction stack."
|
|
2870
|
-
}
|
|
3608
|
+
},
|
|
3609
|
+
"parser": "LOGIC",
|
|
3610
|
+
"family": null
|
|
2871
3611
|
}
|
|
2872
3612
|
],
|
|
2873
3613
|
"bundles": [],
|
|
@@ -2891,7 +3631,7 @@
|
|
|
2891
3631
|
"_v3": {
|
|
2892
3632
|
"counterfactual": {
|
|
2893
3633
|
"spofControls": [],
|
|
2894
|
-
"controlsDetected":
|
|
3634
|
+
"controlsDetected": 307
|
|
2895
3635
|
},
|
|
2896
3636
|
"threatModel": {
|
|
2897
3637
|
"summary": {
|
|
@@ -3032,5 +3772,6 @@
|
|
|
3032
3772
|
"alarms": [],
|
|
3033
3773
|
"note": "no-feedback-data"
|
|
3034
3774
|
}
|
|
3035
|
-
}
|
|
3775
|
+
},
|
|
3776
|
+
"annotatorErrors": []
|
|
3036
3777
|
}
|