@hoanghainh/komagu 2.5.0 → 2.6.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/CHANGELOG.md +17 -0
- package/assess/lsa/examples/eval-run-6/gptoss-a/ai-run-stats.json +87 -0
- package/assess/lsa/examples/eval-run-6/gptoss-a/auth-model.md +120 -0
- package/assess/lsa/examples/eval-run-6/gptoss-a/batches/index.json +60 -0
- package/assess/lsa/examples/eval-run-6/gptoss-a/batches/injection-001.json +383 -0
- package/assess/lsa/examples/eval-run-6/gptoss-a/batches/injection-002.json +205 -0
- package/assess/lsa/examples/eval-run-6/gptoss-a/batches/privilege-001.json +838 -0
- package/assess/lsa/examples/eval-run-6/gptoss-a/batches/privilege-002.json +124 -0
- package/assess/lsa/examples/eval-run-6/gptoss-a/batches/routes-001.json +778 -0
- package/assess/lsa/examples/eval-run-6/gptoss-a/batches/routes-002.json +546 -0
- package/assess/lsa/examples/eval-run-6/gptoss-a/batches/routes-003.json +661 -0
- package/assess/lsa/examples/eval-run-6/gptoss-a/batches/routes-004.json +659 -0
- package/assess/lsa/examples/eval-run-6/gptoss-a/batches/routes-005.json +612 -0
- package/assess/lsa/examples/eval-run-6/gptoss-a/batches/routes-006.json +106 -0
- package/assess/lsa/examples/eval-run-6/gptoss-a/coverage.json +19 -0
- package/assess/lsa/examples/eval-run-6/gptoss-a/findings/bola-routes-001.json +516 -0
- package/assess/lsa/examples/eval-run-6/gptoss-a/findings/bola-routes-002.json +332 -0
- package/assess/lsa/examples/eval-run-6/gptoss-a/findings/bola-routes-003.json +218 -0
- package/assess/lsa/examples/eval-run-6/gptoss-a/findings/bola-routes-004.json +561 -0
- package/assess/lsa/examples/eval-run-6/gptoss-a/findings/bola-routes-005.json +316 -0
- package/assess/lsa/examples/eval-run-6/gptoss-a/findings/bola-routes-006.json +14 -0
- package/assess/lsa/examples/eval-run-6/gptoss-a/findings/inj-injection-001.json +782 -0
- package/assess/lsa/examples/eval-run-6/gptoss-a/findings/inj-injection-002.json +418 -0
- package/assess/lsa/examples/eval-run-6/gptoss-a/findings/priv-privilege-001.json +627 -0
- package/assess/lsa/examples/eval-run-6/gptoss-a/findings/priv-privilege-002.json +253 -0
- package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-1.json +68 -0
- package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-10.json +68 -0
- package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-11.json +61 -0
- package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-12.json +60 -0
- package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-13.json +60 -0
- package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-14.json +66 -0
- package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-15.json +69 -0
- package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-16.json +60 -0
- package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-17.json +61 -0
- package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-18.json +69 -0
- package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-19.json +64 -0
- package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-2.json +60 -0
- package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-20.json +60 -0
- package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-21.json +61 -0
- package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-22.json +50 -0
- package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-3.json +60 -0
- package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-4.json +60 -0
- package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-5.json +60 -0
- package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-6.json +70 -0
- package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-7.json +60 -0
- package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-8.json +60 -0
- package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-9.json +60 -0
- package/assess/lsa/examples/eval-run-6/gptoss-a/findings.json +4857 -0
- package/assess/lsa/examples/eval-run-6/gptoss-a/mass-assignment.candidates.json +232 -0
- package/assess/lsa/examples/eval-run-6/gptoss-a/report.ja.md +2112 -0
- package/assess/lsa/examples/eval-run-6/gptoss-a/report.md +2112 -0
- package/assess/lsa/examples/eval-run-6/gptoss-a/routes/routes-001.json +425 -0
- package/assess/lsa/examples/eval-run-6/gptoss-a/routes/routes-002.json +333 -0
- package/assess/lsa/examples/eval-run-6/gptoss-a/routes/routes-003.json +400 -0
- package/assess/lsa/examples/eval-run-6/gptoss-a/routes/routes-004.json +403 -0
- package/assess/lsa/examples/eval-run-6/gptoss-a/routes/routes-005.json +398 -0
- package/assess/lsa/examples/eval-run-6/gptoss-a/routes/routes-006.json +63 -0
- package/assess/lsa/examples/eval-run-6/gptoss-a/score.json +82 -0
- package/assess/lsa/examples/eval-run-6/gptoss-a/stack-profile.json +225 -0
- package/assess/lsa/examples/eval-run-6/gptoss-b/ai-run-stats.json +91 -0
- package/assess/lsa/examples/eval-run-6/gptoss-b/auth-model.md +120 -0
- package/assess/lsa/examples/eval-run-6/gptoss-b/batches/index.json +60 -0
- package/assess/lsa/examples/eval-run-6/gptoss-b/batches/injection-001.json +383 -0
- package/assess/lsa/examples/eval-run-6/gptoss-b/batches/injection-002.json +205 -0
- package/assess/lsa/examples/eval-run-6/gptoss-b/batches/privilege-001.json +838 -0
- package/assess/lsa/examples/eval-run-6/gptoss-b/batches/privilege-002.json +124 -0
- package/assess/lsa/examples/eval-run-6/gptoss-b/batches/routes-001.json +778 -0
- package/assess/lsa/examples/eval-run-6/gptoss-b/batches/routes-002.json +546 -0
- package/assess/lsa/examples/eval-run-6/gptoss-b/batches/routes-003.json +661 -0
- package/assess/lsa/examples/eval-run-6/gptoss-b/batches/routes-004.json +659 -0
- package/assess/lsa/examples/eval-run-6/gptoss-b/batches/routes-005.json +612 -0
- package/assess/lsa/examples/eval-run-6/gptoss-b/batches/routes-006.json +106 -0
- package/assess/lsa/examples/eval-run-6/gptoss-b/coverage.json +21 -0
- package/assess/lsa/examples/eval-run-6/gptoss-b/findings/bola-routes-001.json +593 -0
- package/assess/lsa/examples/eval-run-6/gptoss-b/findings/bola-routes-002.json +367 -0
- package/assess/lsa/examples/eval-run-6/gptoss-b/findings/bola-routes-003.json +207 -0
- package/assess/lsa/examples/eval-run-6/gptoss-b/findings/bola-routes-004.json +477 -0
- package/assess/lsa/examples/eval-run-6/gptoss-b/findings/bola-routes-005.json +341 -0
- package/assess/lsa/examples/eval-run-6/gptoss-b/findings/bola-routes-006.json +14 -0
- package/assess/lsa/examples/eval-run-6/gptoss-b/findings/inj-injection-001.json +821 -0
- package/assess/lsa/examples/eval-run-6/gptoss-b/findings/inj-injection-002.json +410 -0
- package/assess/lsa/examples/eval-run-6/gptoss-b/findings/priv-privilege-001.json +649 -0
- package/assess/lsa/examples/eval-run-6/gptoss-b/findings/priv-privilege-002.json +222 -0
- package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-1.json +60 -0
- package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-10.json +67 -0
- package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-11.json +68 -0
- package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-12.json +60 -0
- package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-13.json +60 -0
- package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-14.json +64 -0
- package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-15.json +70 -0
- package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-16.json +60 -0
- package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-17.json +61 -0
- package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-18.json +60 -0
- package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-19.json +65 -0
- package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-2.json +60 -0
- package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-20.json +60 -0
- package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-21.json +62 -0
- package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-22.json +50 -0
- package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-3.json +60 -0
- package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-4.json +60 -0
- package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-5.json +60 -0
- package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-6.json +60 -0
- package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-7.json +64 -0
- package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-8.json +60 -0
- package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-9.json +60 -0
- package/assess/lsa/examples/eval-run-6/gptoss-b/findings.json +4966 -0
- package/assess/lsa/examples/eval-run-6/gptoss-b/mass-assignment.candidates.json +232 -0
- package/assess/lsa/examples/eval-run-6/gptoss-b/routes/routes-001.json +425 -0
- package/assess/lsa/examples/eval-run-6/gptoss-b/routes/routes-002.json +333 -0
- package/assess/lsa/examples/eval-run-6/gptoss-b/routes/routes-003.json +400 -0
- package/assess/lsa/examples/eval-run-6/gptoss-b/routes/routes-004.json +403 -0
- package/assess/lsa/examples/eval-run-6/gptoss-b/routes/routes-005.json +398 -0
- package/assess/lsa/examples/eval-run-6/gptoss-b/routes/routes-006.json +63 -0
- package/assess/lsa/examples/eval-run-6/gptoss-b/score.json +87 -0
- package/assess/lsa/examples/eval-run-6/gptoss-b/stack-profile.json +225 -0
- package/assess/lsa/examples/eval-run-6/ground-truth.json +851 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/ai-run-stats.json +96 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/auth-model.md +191 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/batches/index.json +60 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/batches/injection-001.json +383 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/batches/injection-002.json +205 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/batches/privilege-001.json +838 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/batches/privilege-002.json +124 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/batches/routes-001.json +778 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/batches/routes-002.json +546 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/batches/routes-003.json +661 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/batches/routes-004.json +659 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/batches/routes-005.json +612 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/batches/routes-006.json +106 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/coverage.json +31 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/bola-routes-001.json +527 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/bola-routes-002.json +568 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/bola-routes-003.json +467 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/bola-routes-004.json +342 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/bola-routes-005.json +693 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/bola-routes-006.json +16 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/inj-injection-001.json +1123 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/inj-injection-002.json +391 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/priv-privilege-001.json +726 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/priv-privilege-002.json +306 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-1.json +137 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-10.json +106 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-11.json +81 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-12.json +135 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-13.json +135 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-14.json +135 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-15.json +110 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-16.json +116 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-17.json +141 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-18.json +135 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-19.json +140 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-2.json +135 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-20.json +82 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-21.json +74 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-22.json +99 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-3.json +140 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-4.json +145 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-5.json +135 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-6.json +135 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-7.json +87 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-8.json +125 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-9.json +135 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings.json +6989 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/mass-assignment.candidates.json +232 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/memory.log +36 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/routes/routes-001.json +425 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/routes/routes-002.json +333 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/routes/routes-003.json +400 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/routes/routes-004.json +403 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/routes/routes-005.json +398 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/routes/routes-006.json +63 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/score.json +106 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/stack-profile.json +225 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-partial/auth-model.md +517 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-partial/findings/bola-routes-001.json +5 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-partial/findings/bola-routes-002.json +428 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-partial/findings/bola-routes-003.json +388 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-partial/findings/bola-routes-004.json +463 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-partial/findings/bola-routes-005.json +5 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-partial/findings/bola-routes-006.json +67 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-partial/findings/inj-injection-001.json +964 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-partial/findings.partial.json +1872 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-partial/memory.log +194 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-partial/score.partial.json +108 -0
- package/assess/lsa/examples/eval-run-6/qwen-16k-partial/stack-profile.json +225 -0
- package/assess/lsa/scripts/laravel_routes.py +102 -0
- package/assess/lsa/scripts/map_routes.py +4 -1
- package/assess/lsa/tests/EVAL-RESULTS.md +126 -0
- package/assess/lsa/tests/test_eval_run_6.py +104 -0
- package/assess/lsa/tests/test_laravel_routes.py +95 -0
- package/operate/ai/client.py +22 -9
- package/operate/ai/runner.py +4 -2
- package/operate/cli/__init__.py +1 -1
- package/operate/cli/commands/scan.py +8 -1
- package/operate/tests/test_ai_reasoning_effort.py +65 -0
- package/operate/tests/test_ai_route_inventory.py +53 -0
- package/package.json +1 -1
|
@@ -0,0 +1,627 @@
|
|
|
1
|
+
{
|
|
2
|
+
"batch_id": "privilege-001",
|
|
3
|
+
"findings": [
|
|
4
|
+
{
|
|
5
|
+
"finding_id": "BFLA-R-0003-1",
|
|
6
|
+
"category": "bfla",
|
|
7
|
+
"subtype": "missing_role_check",
|
|
8
|
+
"title": "Unrestricted member deletion in classic\u2011asp shop",
|
|
9
|
+
"route_id": "R-0003",
|
|
10
|
+
"location": {
|
|
11
|
+
"file": "classic-asp/shop/member.asp",
|
|
12
|
+
"start_line": 10
|
|
13
|
+
},
|
|
14
|
+
"evidence": [
|
|
15
|
+
{
|
|
16
|
+
"file": "classic-asp/shop/member.asp",
|
|
17
|
+
"line": 10,
|
|
18
|
+
"why": "DELETE statement executed without any role check"
|
|
19
|
+
}
|
|
20
|
+
],
|
|
21
|
+
"impact": "Any logged\u2011in user can delete any member record",
|
|
22
|
+
"severity": "critical",
|
|
23
|
+
"confidence": "high",
|
|
24
|
+
"cwe": [
|
|
25
|
+
"CWE-285"
|
|
26
|
+
],
|
|
27
|
+
"recommendation": "Add a server\u2011side admin role check before executing the DELETE",
|
|
28
|
+
"status": "unverified"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"finding_id": "BFLA-R-0007-1",
|
|
32
|
+
"category": "bfla",
|
|
33
|
+
"subtype": "missing_role_check",
|
|
34
|
+
"title": "Unrestricted user deletion in ASP.NET MVC Admin controller",
|
|
35
|
+
"route_id": "R-0007",
|
|
36
|
+
"location": {
|
|
37
|
+
"file": "dotnet-legacy/Web/Controllers/AdminController.cs",
|
|
38
|
+
"start_line": 12
|
|
39
|
+
},
|
|
40
|
+
"evidence": [
|
|
41
|
+
{
|
|
42
|
+
"file": "dotnet-legacy/Web/Controllers/AdminController.cs",
|
|
43
|
+
"line": 12,
|
|
44
|
+
"why": "db.Users.Remove executed without admin role check"
|
|
45
|
+
}
|
|
46
|
+
],
|
|
47
|
+
"impact": "Any authenticated user can delete any user account",
|
|
48
|
+
"severity": "critical",
|
|
49
|
+
"confidence": "high",
|
|
50
|
+
"cwe": [
|
|
51
|
+
"CWE-285"
|
|
52
|
+
],
|
|
53
|
+
"recommendation": "Add [Authorize(Roles=\"Admin\")] to DeleteUser action",
|
|
54
|
+
"status": "unverified"
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"finding_id": "BFLA-R-0009-1",
|
|
58
|
+
"category": "bfla",
|
|
59
|
+
"subtype": "role_from_request",
|
|
60
|
+
"title": "Export endpoint controlled by request parameter in ASP.NET MVC",
|
|
61
|
+
"route_id": "R-0009",
|
|
62
|
+
"location": {
|
|
63
|
+
"file": "dotnet-legacy/Web/Controllers/AdminController.cs",
|
|
64
|
+
"start_line": 30
|
|
65
|
+
},
|
|
66
|
+
"evidence": [
|
|
67
|
+
{
|
|
68
|
+
"file": "dotnet-legacy/Web/Controllers/AdminController.cs",
|
|
69
|
+
"line": 32,
|
|
70
|
+
"why": "uses Request.QueryString[\"isAdmin\"] to grant access"
|
|
71
|
+
}
|
|
72
|
+
],
|
|
73
|
+
"impact": "Any user can export all user data by setting isAdmin=true",
|
|
74
|
+
"severity": "critical",
|
|
75
|
+
"confidence": "high",
|
|
76
|
+
"cwe": [
|
|
77
|
+
"CWE-269",
|
|
78
|
+
"CWE-285"
|
|
79
|
+
],
|
|
80
|
+
"recommendation": "Validate admin role from session before allowing export",
|
|
81
|
+
"status": "unverified"
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"finding_id": "BFLA-R-0023-1",
|
|
85
|
+
"category": "bfla",
|
|
86
|
+
"subtype": "missing_role_check",
|
|
87
|
+
"title": "Unrestricted user deletion in Spring MVC Admin controller",
|
|
88
|
+
"route_id": "R-0023",
|
|
89
|
+
"location": {
|
|
90
|
+
"file": "java-legacy/src/com/acme/web/AdminUserController.java",
|
|
91
|
+
"start_line": 13
|
|
92
|
+
},
|
|
93
|
+
"evidence": [
|
|
94
|
+
{
|
|
95
|
+
"file": "java-legacy/src/com/acme/web/AdminUserController.java",
|
|
96
|
+
"line": 13,
|
|
97
|
+
"why": "delete method lacks @PreAuthorize"
|
|
98
|
+
}
|
|
99
|
+
],
|
|
100
|
+
"impact": "Any authenticated user can delete any user account",
|
|
101
|
+
"severity": "critical",
|
|
102
|
+
"confidence": "high",
|
|
103
|
+
"cwe": [
|
|
104
|
+
"CWE-285"
|
|
105
|
+
],
|
|
106
|
+
"recommendation": "Add @PreAuthorize(\"hasRole('ADMIN')\") to delete method",
|
|
107
|
+
"status": "unverified"
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
"finding_id": "BFLA-R-0030-1",
|
|
111
|
+
"category": "bfla",
|
|
112
|
+
"subtype": "missing_role_check",
|
|
113
|
+
"title": "Unrestricted user deletion in Express route",
|
|
114
|
+
"route_id": "R-0030",
|
|
115
|
+
"location": {
|
|
116
|
+
"file": "node-express/routes/admin.js",
|
|
117
|
+
"start_line": 8
|
|
118
|
+
},
|
|
119
|
+
"evidence": [
|
|
120
|
+
{
|
|
121
|
+
"file": "node-express/routes/admin.js",
|
|
122
|
+
"line": 8,
|
|
123
|
+
"why": "DELETE route without admin guard"
|
|
124
|
+
}
|
|
125
|
+
],
|
|
126
|
+
"impact": "Any logged\u2011in user can delete any user account",
|
|
127
|
+
"severity": "critical",
|
|
128
|
+
"confidence": "high",
|
|
129
|
+
"cwe": [
|
|
130
|
+
"CWE-285"
|
|
131
|
+
],
|
|
132
|
+
"recommendation": "Add requireAdmin middleware before delete handler",
|
|
133
|
+
"status": "unverified"
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"finding_id": "BFLA-R-0032-1",
|
|
137
|
+
"category": "bfla",
|
|
138
|
+
"subtype": "role_from_request",
|
|
139
|
+
"title": "Export endpoint controlled by query param in Express",
|
|
140
|
+
"route_id": "R-0032",
|
|
141
|
+
"location": {
|
|
142
|
+
"file": "node-express/routes/admin.js",
|
|
143
|
+
"start_line": 16
|
|
144
|
+
},
|
|
145
|
+
"evidence": [
|
|
146
|
+
{
|
|
147
|
+
"file": "node-express/routes/admin.js",
|
|
148
|
+
"line": 17,
|
|
149
|
+
"why": "uses req.query.isAdmin to grant access"
|
|
150
|
+
}
|
|
151
|
+
],
|
|
152
|
+
"impact": "Any user can export all user data by setting isAdmin=true",
|
|
153
|
+
"severity": "critical",
|
|
154
|
+
"confidence": "high",
|
|
155
|
+
"cwe": [
|
|
156
|
+
"CWE-269",
|
|
157
|
+
"CWE-285"
|
|
158
|
+
],
|
|
159
|
+
"recommendation": "Validate admin role from session before allowing export",
|
|
160
|
+
"status": "unverified"
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
"finding_id": "BFLA-R-0057-1",
|
|
164
|
+
"category": "bfla",
|
|
165
|
+
"subtype": "missing_role_check",
|
|
166
|
+
"title": "Unrestricted user view in php\u2011plain admin.php",
|
|
167
|
+
"route_id": "R-0057",
|
|
168
|
+
"location": {
|
|
169
|
+
"file": "php-plain/admin.php",
|
|
170
|
+
"start_line": 6
|
|
171
|
+
},
|
|
172
|
+
"evidence": [
|
|
173
|
+
{
|
|
174
|
+
"file": "php-plain/admin.php",
|
|
175
|
+
"line": 6,
|
|
176
|
+
"why": "SELECT without role check"
|
|
177
|
+
}
|
|
178
|
+
],
|
|
179
|
+
"impact": "Any logged\u2011in user can view any user record",
|
|
180
|
+
"severity": "critical",
|
|
181
|
+
"confidence": "high",
|
|
182
|
+
"cwe": [
|
|
183
|
+
"CWE-285"
|
|
184
|
+
],
|
|
185
|
+
"recommendation": "Add server\u2011side admin role check before executing SELECT",
|
|
186
|
+
"status": "unverified"
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
"finding_id": "BFLA-R-0058-1",
|
|
190
|
+
"category": "bfla",
|
|
191
|
+
"subtype": "missing_role_check",
|
|
192
|
+
"title": "Unrestricted user deletion in php\u2011plain admin.php",
|
|
193
|
+
"route_id": "R-0058",
|
|
194
|
+
"location": {
|
|
195
|
+
"file": "php-plain/admin.php",
|
|
196
|
+
"start_line": 10
|
|
197
|
+
},
|
|
198
|
+
"evidence": [
|
|
199
|
+
{
|
|
200
|
+
"file": "php-plain/admin.php",
|
|
201
|
+
"line": 10,
|
|
202
|
+
"why": "DELETE without role check"
|
|
203
|
+
}
|
|
204
|
+
],
|
|
205
|
+
"impact": "Any logged\u2011in user can delete any user record",
|
|
206
|
+
"severity": "critical",
|
|
207
|
+
"confidence": "high",
|
|
208
|
+
"cwe": [
|
|
209
|
+
"CWE-285"
|
|
210
|
+
],
|
|
211
|
+
"recommendation": "Add server\u2011side admin role check before executing DELETE",
|
|
212
|
+
"status": "unverified"
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
"finding_id": "BFLA-R-0066-1",
|
|
216
|
+
"category": "bfla",
|
|
217
|
+
"subtype": "missing_role_check",
|
|
218
|
+
"title": "Unrestricted user deletion in php\u2011plain delete_user.php",
|
|
219
|
+
"route_id": "R-0066",
|
|
220
|
+
"location": {
|
|
221
|
+
"file": "php-plain/admin/delete_user.php",
|
|
222
|
+
"start_line": 5
|
|
223
|
+
},
|
|
224
|
+
"evidence": [
|
|
225
|
+
{
|
|
226
|
+
"file": "php-plain/admin/delete_user.php",
|
|
227
|
+
"line": 5,
|
|
228
|
+
"why": "DELETE without role check"
|
|
229
|
+
}
|
|
230
|
+
],
|
|
231
|
+
"impact": "Any logged\u2011in user can delete any user record",
|
|
232
|
+
"severity": "critical",
|
|
233
|
+
"confidence": "high",
|
|
234
|
+
"cwe": [
|
|
235
|
+
"CWE-285"
|
|
236
|
+
],
|
|
237
|
+
"recommendation": "Add server\u2011side admin role check before executing DELETE",
|
|
238
|
+
"status": "unverified"
|
|
239
|
+
},
|
|
240
|
+
{
|
|
241
|
+
"finding_id": "BFLA-R-0067-1",
|
|
242
|
+
"category": "bfla",
|
|
243
|
+
"subtype": "role_from_request",
|
|
244
|
+
"title": "User promotion controlled by request parameter in php\u2011plain",
|
|
245
|
+
"route_id": "R-0067",
|
|
246
|
+
"location": {
|
|
247
|
+
"file": "php-plain/admin/promote.php",
|
|
248
|
+
"start_line": 5
|
|
249
|
+
},
|
|
250
|
+
"evidence": [
|
|
251
|
+
{
|
|
252
|
+
"file": "php-plain/admin/promote.php",
|
|
253
|
+
"line": 5,
|
|
254
|
+
"why": "role assignment from $_POST['is_admin']"
|
|
255
|
+
}
|
|
256
|
+
],
|
|
257
|
+
"impact": "Any logged\u2011in user can promote themselves to admin",
|
|
258
|
+
"severity": "critical",
|
|
259
|
+
"confidence": "high",
|
|
260
|
+
"cwe": [
|
|
261
|
+
"CWE-269",
|
|
262
|
+
"CWE-285"
|
|
263
|
+
],
|
|
264
|
+
"recommendation": "Validate admin role from session before allowing promotion",
|
|
265
|
+
"status": "unverified"
|
|
266
|
+
},
|
|
267
|
+
{
|
|
268
|
+
"finding_id": "BFLA-R-0059-1",
|
|
269
|
+
"category": "bfla",
|
|
270
|
+
"subtype": "missing_role_check",
|
|
271
|
+
"title": "Unrestricted user deletion in php\u2011plain manage_users.php",
|
|
272
|
+
"route_id": "R-0059",
|
|
273
|
+
"location": {
|
|
274
|
+
"file": "php-plain/manage_users.php",
|
|
275
|
+
"start_line": 6
|
|
276
|
+
},
|
|
277
|
+
"evidence": [
|
|
278
|
+
{
|
|
279
|
+
"file": "php-plain/manage_users.php",
|
|
280
|
+
"line": 6,
|
|
281
|
+
"why": "DELETE without server\u2011side role check"
|
|
282
|
+
}
|
|
283
|
+
],
|
|
284
|
+
"impact": "Any logged\u2011in user can delete any user record",
|
|
285
|
+
"severity": "critical",
|
|
286
|
+
"confidence": "high",
|
|
287
|
+
"cwe": [
|
|
288
|
+
"CWE-285"
|
|
289
|
+
],
|
|
290
|
+
"recommendation": "Add server\u2011side admin role check before executing DELETE",
|
|
291
|
+
"status": "unverified"
|
|
292
|
+
},
|
|
293
|
+
{
|
|
294
|
+
"finding_id": "BFLA-R-0063-1",
|
|
295
|
+
"category": "bfla",
|
|
296
|
+
"subtype": "missing_role_check",
|
|
297
|
+
"title": "Unrestricted role change in php\u2011plain profile.php",
|
|
298
|
+
"route_id": "R-0063",
|
|
299
|
+
"location": {
|
|
300
|
+
"file": "php-plain/profile.php",
|
|
301
|
+
"start_line": 6
|
|
302
|
+
},
|
|
303
|
+
"evidence": [
|
|
304
|
+
{
|
|
305
|
+
"file": "php-plain/profile.php",
|
|
306
|
+
"line": 10,
|
|
307
|
+
"why": "user->role set from $_POST['role'] without check"
|
|
308
|
+
}
|
|
309
|
+
],
|
|
310
|
+
"impact": "Any logged\u2011in user can change their own role to admin",
|
|
311
|
+
"severity": "critical",
|
|
312
|
+
"confidence": "high",
|
|
313
|
+
"cwe": [
|
|
314
|
+
"CWE-285"
|
|
315
|
+
],
|
|
316
|
+
"recommendation": "Validate role changes against allowed values and enforce admin check",
|
|
317
|
+
"status": "unverified"
|
|
318
|
+
},
|
|
319
|
+
{
|
|
320
|
+
"finding_id": "MASS-M-0003-1",
|
|
321
|
+
"category": "mass_assignment",
|
|
322
|
+
"subtype": "whole_object_binding",
|
|
323
|
+
"title": "Unrestricted binding of Account object in Spring MVC",
|
|
324
|
+
"candidate_id": "M-0003",
|
|
325
|
+
"location": {
|
|
326
|
+
"file": "java-legacy/src/com/acme/web/AccountController.java",
|
|
327
|
+
"start_line": 14
|
|
328
|
+
},
|
|
329
|
+
"evidence": [
|
|
330
|
+
{
|
|
331
|
+
"file": "java-legacy/src/com/acme/web/AccountController.java",
|
|
332
|
+
"line": 27,
|
|
333
|
+
"why": "accountDao.save(account) with whole object binding, no allowlist"
|
|
334
|
+
}
|
|
335
|
+
],
|
|
336
|
+
"impact": "role, balance",
|
|
337
|
+
"severity": "critical",
|
|
338
|
+
"confidence": "high",
|
|
339
|
+
"cwe": [
|
|
340
|
+
"CWE-915"
|
|
341
|
+
],
|
|
342
|
+
"recommendation": "Use a DTO or explicit property copying to prevent privileged field updates",
|
|
343
|
+
"status": "unverified"
|
|
344
|
+
},
|
|
345
|
+
{
|
|
346
|
+
"finding_id": "MASS-M-0004-1",
|
|
347
|
+
"category": "mass_assignment",
|
|
348
|
+
"subtype": "whole_object_binding",
|
|
349
|
+
"title": "Unrestricted binding of Account object in Spring MVC",
|
|
350
|
+
"candidate_id": "M-0004",
|
|
351
|
+
"location": {
|
|
352
|
+
"file": "java-legacy/src/com/acme/web/AccountController.java",
|
|
353
|
+
"start_line": 27
|
|
354
|
+
},
|
|
355
|
+
"evidence": [
|
|
356
|
+
{
|
|
357
|
+
"file": "java-legacy/src/com/acme/web/AccountController.java",
|
|
358
|
+
"line": 27,
|
|
359
|
+
"why": "accountDao.save(account) with whole object binding, no allowlist"
|
|
360
|
+
}
|
|
361
|
+
],
|
|
362
|
+
"impact": "role, balance",
|
|
363
|
+
"severity": "critical",
|
|
364
|
+
"confidence": "high",
|
|
365
|
+
"cwe": [
|
|
366
|
+
"CWE-915"
|
|
367
|
+
],
|
|
368
|
+
"recommendation": "Use a DTO or explicit property copying to prevent privileged field updates",
|
|
369
|
+
"status": "unverified"
|
|
370
|
+
},
|
|
371
|
+
{
|
|
372
|
+
"finding_id": "MASS-M-0005-1",
|
|
373
|
+
"category": "mass_assignment",
|
|
374
|
+
"subtype": "whole_object_binding",
|
|
375
|
+
"title": "Unrestricted binding of Account object via BeanUtils in Java servlet",
|
|
376
|
+
"candidate_id": "M-0005",
|
|
377
|
+
"location": {
|
|
378
|
+
"file": "java-legacy/src/com/acme/web/ProfileServlet.java",
|
|
379
|
+
"start_line": 12
|
|
380
|
+
},
|
|
381
|
+
"evidence": [
|
|
382
|
+
{
|
|
383
|
+
"file": "java-legacy/src/com/acme/web/ProfileServlet.java",
|
|
384
|
+
"line": 12,
|
|
385
|
+
"why": "BeanUtils.populate(account, request.getParameterMap()) binds all request parameters"
|
|
386
|
+
}
|
|
387
|
+
],
|
|
388
|
+
"impact": "role, balance",
|
|
389
|
+
"severity": "critical",
|
|
390
|
+
"confidence": "high",
|
|
391
|
+
"cwe": [
|
|
392
|
+
"CWE-915"
|
|
393
|
+
],
|
|
394
|
+
"recommendation": "Use explicit property setting or an allowlist to prevent privileged field updates",
|
|
395
|
+
"status": "unverified"
|
|
396
|
+
},
|
|
397
|
+
{
|
|
398
|
+
"finding_id": "MASS-M-0011-verdict",
|
|
399
|
+
"category": "mass_assignment",
|
|
400
|
+
"subtype": "whole_object_binding",
|
|
401
|
+
"title": "Mass assignment at php-plain/profile.php:6 (from auditor verdict)",
|
|
402
|
+
"candidate_id": "M-0011",
|
|
403
|
+
"location": {
|
|
404
|
+
"file": "php-plain/profile.php",
|
|
405
|
+
"start_line": 6
|
|
406
|
+
},
|
|
407
|
+
"evidence": [
|
|
408
|
+
{
|
|
409
|
+
"file": "php-plain/profile.php",
|
|
410
|
+
"line": 6,
|
|
411
|
+
"why": "The auditor judged this candidate 'needs_review' but wrote no finding"
|
|
412
|
+
}
|
|
413
|
+
],
|
|
414
|
+
"impact": "Generated from the auditor's 'needs_review' verdict; the model wrote no finding for it.",
|
|
415
|
+
"severity": "medium",
|
|
416
|
+
"confidence": "low",
|
|
417
|
+
"cwe": [
|
|
418
|
+
"CWE-915"
|
|
419
|
+
],
|
|
420
|
+
"recommendation": "Bind only an explicit allow-list of fields; never bind role, owner or balance fields.",
|
|
421
|
+
"status": "unverified"
|
|
422
|
+
},
|
|
423
|
+
{
|
|
424
|
+
"finding_id": "MASS-M-0012-verdict",
|
|
425
|
+
"category": "mass_assignment",
|
|
426
|
+
"subtype": "privileged_field_writable",
|
|
427
|
+
"title": "Mass assignment at php-plain/profile.php:10 (from auditor verdict)",
|
|
428
|
+
"candidate_id": "M-0012",
|
|
429
|
+
"location": {
|
|
430
|
+
"file": "php-plain/profile.php",
|
|
431
|
+
"start_line": 10
|
|
432
|
+
},
|
|
433
|
+
"evidence": [
|
|
434
|
+
{
|
|
435
|
+
"file": "php-plain/profile.php",
|
|
436
|
+
"line": 10,
|
|
437
|
+
"why": "The auditor judged this candidate 'needs_review' but wrote no finding"
|
|
438
|
+
}
|
|
439
|
+
],
|
|
440
|
+
"impact": "Generated from the auditor's 'needs_review' verdict; the model wrote no finding for it.",
|
|
441
|
+
"severity": "medium",
|
|
442
|
+
"confidence": "low",
|
|
443
|
+
"cwe": [
|
|
444
|
+
"CWE-915"
|
|
445
|
+
],
|
|
446
|
+
"recommendation": "Bind only an explicit allow-list of fields; never bind role, owner or balance fields.",
|
|
447
|
+
"status": "unverified"
|
|
448
|
+
},
|
|
449
|
+
{
|
|
450
|
+
"finding_id": "MASS-M-0001-verdict",
|
|
451
|
+
"category": "mass_assignment",
|
|
452
|
+
"subtype": "whole_object_binding",
|
|
453
|
+
"title": "Mass assignment at dotnet-legacy/Web/Controllers/CustomerController.cs:12 (from auditor verdict)",
|
|
454
|
+
"candidate_id": "M-0001",
|
|
455
|
+
"location": {
|
|
456
|
+
"file": "dotnet-legacy/Web/Controllers/CustomerController.cs",
|
|
457
|
+
"start_line": 12
|
|
458
|
+
},
|
|
459
|
+
"evidence": [
|
|
460
|
+
{
|
|
461
|
+
"file": "dotnet-legacy/Web/Controllers/CustomerController.cs",
|
|
462
|
+
"line": 12,
|
|
463
|
+
"why": "The auditor judged this candidate 'needs_review' but wrote no finding"
|
|
464
|
+
}
|
|
465
|
+
],
|
|
466
|
+
"impact": "Generated from the auditor's 'needs_review' verdict; the model wrote no finding for it.",
|
|
467
|
+
"severity": "medium",
|
|
468
|
+
"confidence": "low",
|
|
469
|
+
"cwe": [
|
|
470
|
+
"CWE-915"
|
|
471
|
+
],
|
|
472
|
+
"recommendation": "Bind only an explicit allow-list of fields; never bind role, owner or balance fields.",
|
|
473
|
+
"status": "unverified"
|
|
474
|
+
},
|
|
475
|
+
{
|
|
476
|
+
"finding_id": "MASS-M-0002-verdict",
|
|
477
|
+
"category": "mass_assignment",
|
|
478
|
+
"subtype": "whole_object_binding",
|
|
479
|
+
"title": "Mass assignment at dotnet-legacy/Web/Controllers/CustomerController.cs:30 (from auditor verdict)",
|
|
480
|
+
"candidate_id": "M-0002",
|
|
481
|
+
"location": {
|
|
482
|
+
"file": "dotnet-legacy/Web/Controllers/CustomerController.cs",
|
|
483
|
+
"start_line": 30
|
|
484
|
+
},
|
|
485
|
+
"evidence": [
|
|
486
|
+
{
|
|
487
|
+
"file": "dotnet-legacy/Web/Controllers/CustomerController.cs",
|
|
488
|
+
"line": 30,
|
|
489
|
+
"why": "The auditor judged this candidate 'needs_review' but wrote no finding"
|
|
490
|
+
}
|
|
491
|
+
],
|
|
492
|
+
"impact": "Generated from the auditor's 'needs_review' verdict; the model wrote no finding for it.",
|
|
493
|
+
"severity": "medium",
|
|
494
|
+
"confidence": "low",
|
|
495
|
+
"cwe": [
|
|
496
|
+
"CWE-915"
|
|
497
|
+
],
|
|
498
|
+
"recommendation": "Bind only an explicit allow-list of fields; never bind role, owner or balance fields.",
|
|
499
|
+
"status": "unverified"
|
|
500
|
+
}
|
|
501
|
+
],
|
|
502
|
+
"privilege_route_verdicts": [
|
|
503
|
+
{
|
|
504
|
+
"route_id": "R-0003",
|
|
505
|
+
"verdict": "vulnerable",
|
|
506
|
+
"finding_ids": [
|
|
507
|
+
"BFLA-R-0003-1"
|
|
508
|
+
]
|
|
509
|
+
},
|
|
510
|
+
{
|
|
511
|
+
"route_id": "R-0007",
|
|
512
|
+
"verdict": "vulnerable",
|
|
513
|
+
"finding_ids": [
|
|
514
|
+
"BFLA-R-0007-1"
|
|
515
|
+
]
|
|
516
|
+
},
|
|
517
|
+
{
|
|
518
|
+
"route_id": "R-0009",
|
|
519
|
+
"verdict": "vulnerable",
|
|
520
|
+
"finding_ids": [
|
|
521
|
+
"BFLA-R-0009-1"
|
|
522
|
+
]
|
|
523
|
+
},
|
|
524
|
+
{
|
|
525
|
+
"route_id": "R-0023",
|
|
526
|
+
"verdict": "vulnerable",
|
|
527
|
+
"finding_ids": [
|
|
528
|
+
"BFLA-R-0023-1"
|
|
529
|
+
]
|
|
530
|
+
},
|
|
531
|
+
{
|
|
532
|
+
"route_id": "R-0030",
|
|
533
|
+
"verdict": "vulnerable",
|
|
534
|
+
"finding_ids": [
|
|
535
|
+
"BFLA-R-0030-1"
|
|
536
|
+
]
|
|
537
|
+
},
|
|
538
|
+
{
|
|
539
|
+
"route_id": "R-0032",
|
|
540
|
+
"verdict": "vulnerable",
|
|
541
|
+
"finding_ids": [
|
|
542
|
+
"BFLA-R-0032-1"
|
|
543
|
+
]
|
|
544
|
+
},
|
|
545
|
+
{
|
|
546
|
+
"route_id": "R-0057",
|
|
547
|
+
"verdict": "vulnerable",
|
|
548
|
+
"finding_ids": [
|
|
549
|
+
"BFLA-R-0057-1"
|
|
550
|
+
]
|
|
551
|
+
},
|
|
552
|
+
{
|
|
553
|
+
"route_id": "R-0058",
|
|
554
|
+
"verdict": "vulnerable",
|
|
555
|
+
"finding_ids": [
|
|
556
|
+
"BFLA-R-0058-1"
|
|
557
|
+
]
|
|
558
|
+
},
|
|
559
|
+
{
|
|
560
|
+
"route_id": "R-0066",
|
|
561
|
+
"verdict": "vulnerable",
|
|
562
|
+
"finding_ids": [
|
|
563
|
+
"BFLA-R-0066-1"
|
|
564
|
+
]
|
|
565
|
+
},
|
|
566
|
+
{
|
|
567
|
+
"route_id": "R-0067",
|
|
568
|
+
"verdict": "vulnerable",
|
|
569
|
+
"finding_ids": [
|
|
570
|
+
"BFLA-R-0067-1"
|
|
571
|
+
]
|
|
572
|
+
},
|
|
573
|
+
{
|
|
574
|
+
"route_id": "R-0059",
|
|
575
|
+
"verdict": "vulnerable",
|
|
576
|
+
"finding_ids": [
|
|
577
|
+
"BFLA-R-0059-1"
|
|
578
|
+
]
|
|
579
|
+
},
|
|
580
|
+
{
|
|
581
|
+
"route_id": "R-0063",
|
|
582
|
+
"verdict": "vulnerable",
|
|
583
|
+
"finding_ids": [
|
|
584
|
+
"BFLA-R-0063-1"
|
|
585
|
+
]
|
|
586
|
+
}
|
|
587
|
+
],
|
|
588
|
+
"candidate_verdicts": [
|
|
589
|
+
{
|
|
590
|
+
"candidate_id": "M-0011",
|
|
591
|
+
"verdict": "needs_review"
|
|
592
|
+
},
|
|
593
|
+
{
|
|
594
|
+
"candidate_id": "M-0012",
|
|
595
|
+
"verdict": "needs_review"
|
|
596
|
+
},
|
|
597
|
+
{
|
|
598
|
+
"candidate_id": "M-0001",
|
|
599
|
+
"verdict": "needs_review"
|
|
600
|
+
},
|
|
601
|
+
{
|
|
602
|
+
"candidate_id": "M-0002",
|
|
603
|
+
"verdict": "needs_review"
|
|
604
|
+
},
|
|
605
|
+
{
|
|
606
|
+
"candidate_id": "M-0003",
|
|
607
|
+
"verdict": "vulnerable",
|
|
608
|
+
"finding_ids": [
|
|
609
|
+
"MASS-M-0003-1"
|
|
610
|
+
]
|
|
611
|
+
},
|
|
612
|
+
{
|
|
613
|
+
"candidate_id": "M-0004",
|
|
614
|
+
"verdict": "vulnerable",
|
|
615
|
+
"finding_ids": [
|
|
616
|
+
"MASS-M-0004-1"
|
|
617
|
+
]
|
|
618
|
+
},
|
|
619
|
+
{
|
|
620
|
+
"candidate_id": "M-0005",
|
|
621
|
+
"verdict": "vulnerable",
|
|
622
|
+
"finding_ids": [
|
|
623
|
+
"MASS-M-0005-1"
|
|
624
|
+
]
|
|
625
|
+
}
|
|
626
|
+
]
|
|
627
|
+
}
|