@hoanghainh/komagu 2.0.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/README.md +1 -1
  3. package/assess/lsa/examples/eval-run-4/ground-truth.json +823 -0
  4. package/assess/lsa/examples/eval-run-4/iter0-gptoss-a/ai-run-stats.json +58 -0
  5. package/assess/lsa/examples/eval-run-4/iter0-gptoss-a/coverage.json +85 -0
  6. package/assess/lsa/examples/eval-run-4/iter0-gptoss-a/findings/priv-privilege-001.json +822 -0
  7. package/assess/lsa/examples/eval-run-4/iter0-gptoss-a/findings/priv-privilege-002.json +393 -0
  8. package/assess/lsa/examples/eval-run-4/iter0-gptoss-a/findings.json +4477 -0
  9. package/assess/lsa/examples/eval-run-4/iter0-gptoss-a/mass-assignment.candidates.json +232 -0
  10. package/assess/lsa/examples/eval-run-4/iter0-gptoss-a/routes/routes-001.json +425 -0
  11. package/assess/lsa/examples/eval-run-4/iter0-gptoss-a/routes/routes-002.json +333 -0
  12. package/assess/lsa/examples/eval-run-4/iter0-gptoss-a/routes/routes-003.json +400 -0
  13. package/assess/lsa/examples/eval-run-4/iter0-gptoss-a/routes/routes-004.json +403 -0
  14. package/assess/lsa/examples/eval-run-4/iter0-gptoss-a/routes/routes-005.json +398 -0
  15. package/assess/lsa/examples/eval-run-4/iter0-gptoss-a/routes/routes-006.json +63 -0
  16. package/assess/lsa/examples/eval-run-4/iter0-gptoss-a/score.json +120 -0
  17. package/assess/lsa/examples/eval-run-4/iter1-gptoss-a/ai-run-stats.json +55 -0
  18. package/assess/lsa/examples/eval-run-4/iter1-gptoss-a/coverage.json +50 -0
  19. package/assess/lsa/examples/eval-run-4/iter1-gptoss-a/findings/priv-privilege-001.json +613 -0
  20. package/assess/lsa/examples/eval-run-4/iter1-gptoss-a/findings/priv-privilege-002.json +287 -0
  21. package/assess/lsa/examples/eval-run-4/iter1-gptoss-a/findings.json +4870 -0
  22. package/assess/lsa/examples/eval-run-4/iter1-gptoss-a/mass-assignment.candidates.json +232 -0
  23. package/assess/lsa/examples/eval-run-4/iter1-gptoss-a/routes/routes-001.json +425 -0
  24. package/assess/lsa/examples/eval-run-4/iter1-gptoss-a/routes/routes-002.json +333 -0
  25. package/assess/lsa/examples/eval-run-4/iter1-gptoss-a/routes/routes-003.json +400 -0
  26. package/assess/lsa/examples/eval-run-4/iter1-gptoss-a/routes/routes-004.json +403 -0
  27. package/assess/lsa/examples/eval-run-4/iter1-gptoss-a/routes/routes-005.json +398 -0
  28. package/assess/lsa/examples/eval-run-4/iter1-gptoss-a/routes/routes-006.json +63 -0
  29. package/assess/lsa/examples/eval-run-4/iter1-gptoss-a/score.json +107 -0
  30. package/assess/lsa/examples/eval-run-4/iter1-gptoss-b/ai-run-stats.json +58 -0
  31. package/assess/lsa/examples/eval-run-4/iter1-gptoss-b/coverage.json +92 -0
  32. package/assess/lsa/examples/eval-run-4/iter1-gptoss-b/findings/priv-privilege-001.json +645 -0
  33. package/assess/lsa/examples/eval-run-4/iter1-gptoss-b/findings/priv-privilege-002.json +222 -0
  34. package/assess/lsa/examples/eval-run-4/iter1-gptoss-b/findings.json +4859 -0
  35. package/assess/lsa/examples/eval-run-4/iter1-gptoss-b/mass-assignment.candidates.json +232 -0
  36. package/assess/lsa/examples/eval-run-4/iter1-gptoss-b/routes/routes-001.json +425 -0
  37. package/assess/lsa/examples/eval-run-4/iter1-gptoss-b/routes/routes-002.json +333 -0
  38. package/assess/lsa/examples/eval-run-4/iter1-gptoss-b/routes/routes-003.json +400 -0
  39. package/assess/lsa/examples/eval-run-4/iter1-gptoss-b/routes/routes-004.json +403 -0
  40. package/assess/lsa/examples/eval-run-4/iter1-gptoss-b/routes/routes-005.json +398 -0
  41. package/assess/lsa/examples/eval-run-4/iter1-gptoss-b/routes/routes-006.json +63 -0
  42. package/assess/lsa/examples/eval-run-4/iter1-gptoss-b/score.json +121 -0
  43. package/assess/lsa/examples/eval-run-4/iter1-qwen-a-incomplete/coverage.json +111 -0
  44. package/assess/lsa/examples/eval-run-4/iter1-qwen-a-incomplete/findings/priv-privilege-001.json +6 -0
  45. package/assess/lsa/examples/eval-run-4/iter1-qwen-a-incomplete/findings/priv-privilege-002.json +344 -0
  46. package/assess/lsa/examples/eval-run-4/iter1-qwen-a-incomplete/findings.json +3544 -0
  47. package/assess/lsa/examples/eval-run-4/iter1-qwen-a-incomplete/mass-assignment.candidates.json +232 -0
  48. package/assess/lsa/examples/eval-run-4/iter1-qwen-a-incomplete/routes/routes-001.json +425 -0
  49. package/assess/lsa/examples/eval-run-4/iter1-qwen-a-incomplete/routes/routes-002.json +333 -0
  50. package/assess/lsa/examples/eval-run-4/iter1-qwen-a-incomplete/routes/routes-003.json +400 -0
  51. package/assess/lsa/examples/eval-run-4/iter1-qwen-a-incomplete/routes/routes-004.json +403 -0
  52. package/assess/lsa/examples/eval-run-4/iter1-qwen-a-incomplete/routes/routes-005.json +398 -0
  53. package/assess/lsa/examples/eval-run-4/iter1-qwen-a-incomplete/routes/routes-006.json +63 -0
  54. package/assess/lsa/examples/eval-run-4/iter1-qwen-a-incomplete/score.json +123 -0
  55. package/assess/lsa/examples/eval-run-4/iter2-gptoss-a/ai-run-stats.json +50 -0
  56. package/assess/lsa/examples/eval-run-4/iter2-gptoss-a/coverage.json +42 -0
  57. package/assess/lsa/examples/eval-run-4/iter2-gptoss-a/findings/priv-privilege-001.json +540 -0
  58. package/assess/lsa/examples/eval-run-4/iter2-gptoss-a/findings/priv-privilege-002.json +238 -0
  59. package/assess/lsa/examples/eval-run-4/iter2-gptoss-a/findings.json +4383 -0
  60. package/assess/lsa/examples/eval-run-4/iter2-gptoss-a/findings.sarif +8729 -0
  61. package/assess/lsa/examples/eval-run-4/iter2-gptoss-a/mass-assignment.candidates.json +232 -0
  62. package/assess/lsa/examples/eval-run-4/iter2-gptoss-a/report.ja.md +1911 -0
  63. package/assess/lsa/examples/eval-run-4/iter2-gptoss-a/report.md +1911 -0
  64. package/assess/lsa/examples/eval-run-4/iter2-gptoss-a/routes/routes-001.json +425 -0
  65. package/assess/lsa/examples/eval-run-4/iter2-gptoss-a/routes/routes-002.json +333 -0
  66. package/assess/lsa/examples/eval-run-4/iter2-gptoss-a/routes/routes-003.json +400 -0
  67. package/assess/lsa/examples/eval-run-4/iter2-gptoss-a/routes/routes-004.json +403 -0
  68. package/assess/lsa/examples/eval-run-4/iter2-gptoss-a/routes/routes-005.json +398 -0
  69. package/assess/lsa/examples/eval-run-4/iter2-gptoss-a/routes/routes-006.json +63 -0
  70. package/assess/lsa/examples/eval-run-4/iter2-gptoss-a/score.json +101 -0
  71. package/assess/lsa/examples/eval-run-4/iter2-gptoss-a/stack-profile.json +226 -0
  72. package/assess/lsa/examples/eval-run-4/iter2-gptoss-b/ai-run-stats.json +54 -0
  73. package/assess/lsa/examples/eval-run-4/iter2-gptoss-b/coverage.json +66 -0
  74. package/assess/lsa/examples/eval-run-4/iter2-gptoss-b/findings/priv-privilege-001.json +440 -0
  75. package/assess/lsa/examples/eval-run-4/iter2-gptoss-b/findings/priv-privilege-002.json +229 -0
  76. package/assess/lsa/examples/eval-run-4/iter2-gptoss-b/findings.json +3424 -0
  77. package/assess/lsa/examples/eval-run-4/iter2-gptoss-b/mass-assignment.candidates.json +232 -0
  78. package/assess/lsa/examples/eval-run-4/iter2-gptoss-b/routes/routes-001.json +425 -0
  79. package/assess/lsa/examples/eval-run-4/iter2-gptoss-b/routes/routes-002.json +333 -0
  80. package/assess/lsa/examples/eval-run-4/iter2-gptoss-b/routes/routes-003.json +400 -0
  81. package/assess/lsa/examples/eval-run-4/iter2-gptoss-b/routes/routes-004.json +403 -0
  82. package/assess/lsa/examples/eval-run-4/iter2-gptoss-b/routes/routes-005.json +398 -0
  83. package/assess/lsa/examples/eval-run-4/iter2-gptoss-b/routes/routes-006.json +63 -0
  84. package/assess/lsa/examples/eval-run-4/iter2-gptoss-b/score.json +120 -0
  85. package/assess/lsa/examples/eval-run-5/gptoss-a/ai-run-stats.json +88 -0
  86. package/assess/lsa/examples/eval-run-5/gptoss-a/coverage.json +36 -0
  87. package/assess/lsa/examples/eval-run-5/gptoss-a/findings/priv-privilege-001.json +530 -0
  88. package/assess/lsa/examples/eval-run-5/gptoss-a/findings/priv-privilege-002.json +248 -0
  89. package/assess/lsa/examples/eval-run-5/gptoss-a/findings.json +4766 -0
  90. package/assess/lsa/examples/eval-run-5/gptoss-a/findings.sarif +9326 -0
  91. package/assess/lsa/examples/eval-run-5/gptoss-a/mass-assignment.candidates.json +232 -0
  92. package/assess/lsa/examples/eval-run-5/gptoss-a/report.ja.md +2011 -0
  93. package/assess/lsa/examples/eval-run-5/gptoss-a/report.md +2011 -0
  94. package/assess/lsa/examples/eval-run-5/gptoss-a/routes/routes-001.json +425 -0
  95. package/assess/lsa/examples/eval-run-5/gptoss-a/routes/routes-002.json +333 -0
  96. package/assess/lsa/examples/eval-run-5/gptoss-a/routes/routes-003.json +400 -0
  97. package/assess/lsa/examples/eval-run-5/gptoss-a/routes/routes-004.json +403 -0
  98. package/assess/lsa/examples/eval-run-5/gptoss-a/routes/routes-005.json +398 -0
  99. package/assess/lsa/examples/eval-run-5/gptoss-a/routes/routes-006.json +63 -0
  100. package/assess/lsa/examples/eval-run-5/gptoss-a/score.json +80 -0
  101. package/assess/lsa/examples/eval-run-5/gptoss-a/stack-profile.json +226 -0
  102. package/assess/lsa/examples/eval-run-5/gptoss-b/ai-run-stats.json +83 -0
  103. package/assess/lsa/examples/eval-run-5/gptoss-b/coverage.json +44 -0
  104. package/assess/lsa/examples/eval-run-5/gptoss-b/findings/priv-privilege-001.json +579 -0
  105. package/assess/lsa/examples/eval-run-5/gptoss-b/findings/priv-privilege-002.json +268 -0
  106. package/assess/lsa/examples/eval-run-5/gptoss-b/findings.json +3913 -0
  107. package/assess/lsa/examples/eval-run-5/gptoss-b/mass-assignment.candidates.json +232 -0
  108. package/assess/lsa/examples/eval-run-5/gptoss-b/routes/routes-001.json +425 -0
  109. package/assess/lsa/examples/eval-run-5/gptoss-b/routes/routes-002.json +333 -0
  110. package/assess/lsa/examples/eval-run-5/gptoss-b/routes/routes-003.json +400 -0
  111. package/assess/lsa/examples/eval-run-5/gptoss-b/routes/routes-004.json +403 -0
  112. package/assess/lsa/examples/eval-run-5/gptoss-b/routes/routes-005.json +398 -0
  113. package/assess/lsa/examples/eval-run-5/gptoss-b/routes/routes-006.json +63 -0
  114. package/assess/lsa/examples/eval-run-5/gptoss-b/score.json +94 -0
  115. package/assess/lsa/examples/eval-run-5/ground-truth.json +823 -0
  116. package/assess/lsa/knowledge/injection-patterns.md +8 -1
  117. package/assess/lsa/knowledge/stacks/nextjs.md +62 -0
  118. package/assess/lsa/prompts/35-privilege-auditor.md +3 -1
  119. package/assess/lsa/prompts/_shared-rules.md +1 -0
  120. package/assess/lsa/scripts/detect_stack.py +5 -1
  121. package/assess/lsa/scripts/find_injection.py +34 -5
  122. package/assess/lsa/scripts/lsa_common.py +9 -2
  123. package/assess/lsa/scripts/make_batches.py +2 -1
  124. package/assess/lsa/scripts/map_routes.py +10 -2
  125. package/assess/lsa/scripts/nextjs_routes.py +236 -0
  126. package/assess/lsa/templates/audit-config.json +1 -1
  127. package/assess/lsa/tests/EVAL-RESULTS.md +156 -0
  128. package/assess/lsa/tests/score_findings.py +58 -0
  129. package/assess/lsa/tests/test_default_scope.py +86 -0
  130. package/assess/lsa/tests/test_eval_run_4.py +73 -0
  131. package/assess/lsa/tests/test_eval_run_5.py +73 -0
  132. package/assess/lsa/tests/test_js_tagged_sql.py +112 -0
  133. package/assess/lsa/tests/test_nextjs.py +198 -0
  134. package/assess/lsa/tests/test_privilege_tier2.py +30 -0
  135. package/operate/ai/anchoring.py +130 -0
  136. package/operate/ai/client.py +13 -0
  137. package/operate/ai/context.py +105 -0
  138. package/operate/ai/runner.py +197 -69
  139. package/operate/cli/__init__.py +1 -1
  140. package/operate/cli/commands/scan.py +1 -1
  141. package/operate/tests/test_ai_anchoring.py +184 -0
  142. package/operate/tests/test_headless_ai.py +148 -1
  143. package/package.json +1 -1
@@ -0,0 +1,398 @@
1
+ {
2
+ "routes": [
3
+ {
4
+ "route_id": "R-0072",
5
+ "method": [
6
+ "POST"
7
+ ],
8
+ "path": "/users",
9
+ "path_source": "declared",
10
+ "handler": {
11
+ "file": "python-flask/profile.py",
12
+ "line": 8
13
+ },
14
+ "id_inputs": [
15
+ {
16
+ "name": "id",
17
+ "source": "path"
18
+ }
19
+ ],
20
+ "guards": [],
21
+ "data_ops": [
22
+ {
23
+ "op": "read"
24
+ }
25
+ ],
26
+ "needs_bola_audit": true
27
+ },
28
+ {
29
+ "route_id": "R-0073",
30
+ "method": [
31
+ "POST"
32
+ ],
33
+ "path": "/users/<int:uid>/name",
34
+ "path_source": "declared",
35
+ "handler": {
36
+ "file": "python-flask/profile.py",
37
+ "line": 16
38
+ },
39
+ "id_inputs": [
40
+ {
41
+ "name": "uid",
42
+ "source": "path"
43
+ }
44
+ ],
45
+ "guards": [],
46
+ "data_ops": [
47
+ {
48
+ "op": "read"
49
+ }
50
+ ],
51
+ "needs_bola_audit": true
52
+ },
53
+ {
54
+ "route_id": "R-0074",
55
+ "method": [
56
+ "PATCH"
57
+ ],
58
+ "path": "/users/<int:uid>",
59
+ "path_source": "declared",
60
+ "handler": {
61
+ "file": "python-flask/profile.py",
62
+ "line": 24
63
+ },
64
+ "id_inputs": [
65
+ {
66
+ "name": "uid",
67
+ "source": "path"
68
+ }
69
+ ],
70
+ "guards": [],
71
+ "data_ops": [
72
+ {
73
+ "op": "read"
74
+ }
75
+ ],
76
+ "needs_bola_audit": true
77
+ },
78
+ {
79
+ "route_id": "R-0010",
80
+ "method": [
81
+ "POST"
82
+ ],
83
+ "path": "/Customer/Edit",
84
+ "path_source": "declared",
85
+ "handler": {
86
+ "file": "dotnet-legacy/Web/Controllers/CustomerController.cs",
87
+ "line": 12
88
+ },
89
+ "id_inputs": [
90
+ {
91
+ "name": "customer",
92
+ "source": "any"
93
+ }
94
+ ],
95
+ "guards": [],
96
+ "data_ops": [
97
+ {
98
+ "op": "read"
99
+ }
100
+ ],
101
+ "needs_bola_audit": true
102
+ },
103
+ {
104
+ "route_id": "R-0011",
105
+ "method": [
106
+ "POST",
107
+ "POST"
108
+ ],
109
+ "path": "/Customer/EditName",
110
+ "path_source": "declared",
111
+ "handler": {
112
+ "file": "dotnet-legacy/Web/Controllers/CustomerController.cs",
113
+ "line": 20
114
+ },
115
+ "id_inputs": [
116
+ {
117
+ "name": "id",
118
+ "source": "path"
119
+ }
120
+ ],
121
+ "guards": [],
122
+ "data_ops": [
123
+ {
124
+ "op": "read"
125
+ }
126
+ ],
127
+ "needs_bola_audit": true
128
+ },
129
+ {
130
+ "route_id": "R-0012",
131
+ "method": [
132
+ "POST",
133
+ "POST"
134
+ ],
135
+ "path": "/Customer/Refresh",
136
+ "path_source": "declared",
137
+ "handler": {
138
+ "file": "dotnet-legacy/Web/Controllers/CustomerController.cs",
139
+ "line": 27
140
+ },
141
+ "id_inputs": [
142
+ {
143
+ "name": "id",
144
+ "source": "any"
145
+ }
146
+ ],
147
+ "guards": [],
148
+ "data_ops": [
149
+ {
150
+ "op": "read"
151
+ }
152
+ ],
153
+ "needs_bola_audit": true
154
+ },
155
+ {
156
+ "route_id": "R-0016",
157
+ "method": [
158
+ "ANY"
159
+ ],
160
+ "path": "/dotnet-legacy/Web/Handlers/GetFile.ashx",
161
+ "path_source": "declared",
162
+ "handler": {
163
+ "file": "dotnet-legacy/Web/Handlers/GetFile.ashx",
164
+ "line": 1
165
+ },
166
+ "id_inputs": [
167
+ {
168
+ "name": "file_id",
169
+ "source": "query"
170
+ }
171
+ ],
172
+ "guards": [],
173
+ "data_ops": [
174
+ {
175
+ "op": "read"
176
+ }
177
+ ],
178
+ "needs_bola_audit": true
179
+ },
180
+ {
181
+ "route_id": "R-0029",
182
+ "method": [
183
+ "POST"
184
+ ],
185
+ "path": "<see web.xml servlet-mapping>",
186
+ "path_source": "declared",
187
+ "handler": {
188
+ "file": "java-legacy/src/com/acme/web/ProfileServlet.java",
189
+ "line": 9
190
+ },
191
+ "id_inputs": [
192
+ {
193
+ "name": "id",
194
+ "source": "path"
195
+ }
196
+ ],
197
+ "guards": [],
198
+ "data_ops": [
199
+ {
200
+ "op": "read"
201
+ }
202
+ ],
203
+ "needs_bola_audit": true
204
+ },
205
+ {
206
+ "route_id": "R-0039",
207
+ "method": [
208
+ "PUT"
209
+ ],
210
+ "path": "/profile",
211
+ "path_source": "declared",
212
+ "handler": {
213
+ "file": "node-express/routes/profile.js",
214
+ "line": 7
215
+ },
216
+ "id_inputs": [
217
+ {
218
+ "name": "id",
219
+ "source": "path"
220
+ }
221
+ ],
222
+ "guards": [],
223
+ "data_ops": [
224
+ {
225
+ "op": "read"
226
+ }
227
+ ],
228
+ "needs_bola_audit": true
229
+ },
230
+ {
231
+ "route_id": "R-0040",
232
+ "method": [
233
+ "PUT"
234
+ ],
235
+ "path": "/profile/name",
236
+ "path_source": "declared",
237
+ "handler": {
238
+ "file": "node-express/routes/profile.js",
239
+ "line": 11
240
+ },
241
+ "id_inputs": [
242
+ {
243
+ "name": "name",
244
+ "source": "body"
245
+ }
246
+ ],
247
+ "guards": [],
248
+ "data_ops": [
249
+ {
250
+ "op": "read"
251
+ }
252
+ ],
253
+ "needs_bola_audit": true
254
+ },
255
+ {
256
+ "route_id": "R-0041",
257
+ "method": [
258
+ "POST"
259
+ ],
260
+ "path": "/signup",
261
+ "path_source": "declared",
262
+ "handler": {
263
+ "file": "node-express/routes/profile.js",
264
+ "line": 15
265
+ },
266
+ "id_inputs": [
267
+ {
268
+ "name": "id",
269
+ "source": "path"
270
+ }
271
+ ],
272
+ "guards": [],
273
+ "data_ops": [
274
+ {
275
+ "op": "read"
276
+ }
277
+ ],
278
+ "needs_bola_audit": true
279
+ },
280
+ {
281
+ "route_id": "R-0042",
282
+ "method": [
283
+ "POST"
284
+ ],
285
+ "path": "/profile/settings",
286
+ "path_source": "declared",
287
+ "handler": {
288
+ "file": "node-express/routes/profile.js",
289
+ "line": 20
290
+ },
291
+ "id_inputs": [
292
+ {
293
+ "name": "theme",
294
+ "source": "body"
295
+ }
296
+ ],
297
+ "guards": [],
298
+ "data_ops": [
299
+ {
300
+ "op": "read"
301
+ }
302
+ ],
303
+ "needs_bola_audit": true
304
+ },
305
+ {
306
+ "route_id": "R-0063",
307
+ "method": [
308
+ "POST"
309
+ ],
310
+ "path": "/php-plain/profile.php",
311
+ "path_source": "declared",
312
+ "handler": {
313
+ "file": "php-plain/profile.php",
314
+ "line": 1
315
+ },
316
+ "id_inputs": [
317
+ {
318
+ "name": "nickname",
319
+ "source": "form"
320
+ },
321
+ {
322
+ "name": "role",
323
+ "source": "form"
324
+ }
325
+ ],
326
+ "guards": [],
327
+ "data_ops": [
328
+ {
329
+ "op": "read"
330
+ }
331
+ ],
332
+ "needs_bola_audit": true
333
+ },
334
+ {
335
+ "route_id": "R-0068",
336
+ "method": [
337
+ "POST"
338
+ ],
339
+ "path": "/php-plain/admin/settings.php",
340
+ "path_source": "declared",
341
+ "handler": {
342
+ "file": "php-plain/admin/settings.php",
343
+ "line": 1
344
+ },
345
+ "id_inputs": [
346
+ {
347
+ "name": "value",
348
+ "source": "form"
349
+ },
350
+ {
351
+ "name": "name",
352
+ "source": "form"
353
+ }
354
+ ],
355
+ "guards": [],
356
+ "data_ops": [
357
+ {
358
+ "op": "read"
359
+ }
360
+ ],
361
+ "needs_bola_audit": true
362
+ },
363
+ {
364
+ "route_id": "R-0060",
365
+ "method": [
366
+ "GET"
367
+ ],
368
+ "path": "/php-plain/mongo_find.php",
369
+ "path_source": "declared",
370
+ "handler": {
371
+ "file": "php-plain/mongo_find.php",
372
+ "line": 1
373
+ },
374
+ "id_inputs": [
375
+ {
376
+ "name": "login",
377
+ "source": "query"
378
+ },
379
+ {
380
+ "name": "pass",
381
+ "source": "query"
382
+ },
383
+ {
384
+ "name": "n",
385
+ "source": "query"
386
+ }
387
+ ],
388
+ "guards": [],
389
+ "data_ops": [
390
+ {
391
+ "op": "read"
392
+ }
393
+ ],
394
+ "needs_bola_audit": true
395
+ }
396
+ ],
397
+ "rejected": []
398
+ }
@@ -0,0 +1,63 @@
1
+ {
2
+ "routes": [
3
+ {
4
+ "route_id": "R-0064",
5
+ "method": [
6
+ "ANY"
7
+ ],
8
+ "path": "/php-plain/register.php",
9
+ "path_source": "declared",
10
+ "handler": {
11
+ "file": "php-plain/register.php",
12
+ "line": 1
13
+ },
14
+ "id_inputs": [
15
+ {
16
+ "name": "id",
17
+ "source": "path"
18
+ }
19
+ ],
20
+ "guards": [],
21
+ "data_ops": [
22
+ {
23
+ "op": "read"
24
+ }
25
+ ],
26
+ "needs_bola_audit": true
27
+ },
28
+ {
29
+ "route_id": "R-0065",
30
+ "method": [
31
+ "GET"
32
+ ],
33
+ "path": "/php-plain/search.php",
34
+ "path_source": "declared",
35
+ "handler": {
36
+ "file": "php-plain/search.php",
37
+ "line": 1
38
+ },
39
+ "id_inputs": [
40
+ {
41
+ "name": "q",
42
+ "source": "query"
43
+ },
44
+ {
45
+ "name": "sort",
46
+ "source": "query"
47
+ },
48
+ {
49
+ "name": "cat",
50
+ "source": "query"
51
+ }
52
+ ],
53
+ "guards": [],
54
+ "data_ops": [
55
+ {
56
+ "op": "read"
57
+ }
58
+ ],
59
+ "needs_bola_audit": true
60
+ }
61
+ ],
62
+ "rejected": []
63
+ }
@@ -0,0 +1,121 @@
1
+ {
2
+ "per_category": {
3
+ "bola": {
4
+ "truth_vulnerable": 25,
5
+ "found": 19,
6
+ "recall": 0.76,
7
+ "false_positive_on_safe_code": [],
8
+ "missed": [
9
+ "php-plain/admin.php:8",
10
+ "php-plain/admin.php:12",
11
+ "php-plain/order_detail.php:6",
12
+ "java-legacy/src/com/acme/web/OrderServlet.java:15",
13
+ "perl-cgi/cgi-bin/order.cgi:19",
14
+ "python-flask/app.py:12"
15
+ ]
16
+ },
17
+ "injection": {
18
+ "truth_vulnerable": 34,
19
+ "found": 28,
20
+ "recall": 0.824,
21
+ "false_positive_on_safe_code": [
22
+ "python-flask/app.py:12"
23
+ ],
24
+ "missed": [
25
+ "classic-asp/shop/member.asp:7",
26
+ "classic-asp/shop/member.asp:10",
27
+ "classic-asp/shop/order.asp:6",
28
+ "node-express/routes/orders.js:21",
29
+ "node-express/routes/orders.js:25",
30
+ "node-express/routes/orders.js:29"
31
+ ]
32
+ },
33
+ "bfla": {
34
+ "truth_vulnerable": 10,
35
+ "found": 5,
36
+ "recall": 0.5,
37
+ "false_positive_on_safe_code": [],
38
+ "missed": [
39
+ "java-legacy/src/com/acme/web/AdminUserController.java:15",
40
+ "dotnet-legacy/Web/Controllers/AdminController.cs:15",
41
+ "dotnet-legacy/Web/Controllers/AdminController.cs:32",
42
+ "node-express/routes/admin.js:9",
43
+ "node-express/routes/admin.js:17"
44
+ ]
45
+ },
46
+ "mass_assignment": {
47
+ "truth_vulnerable": 15,
48
+ "found": 5,
49
+ "recall": 0.333,
50
+ "false_positive_on_safe_code": [],
51
+ "missed": [
52
+ "php-plain/register.php:4",
53
+ "java-legacy/src/com/acme/web/AccountController.java:14",
54
+ "java-legacy/src/com/acme/web/AccountController.java:27",
55
+ "java-legacy/src/com/acme/web/ProfileServlet.java:12",
56
+ "php-laravel/app/Http/Controllers/AccountController.php:36",
57
+ "dotnet-legacy/Web/Controllers/CustomerController.cs:12",
58
+ "dotnet-legacy/Web/Controllers/CustomerController.cs:30",
59
+ "python-flask/profile.py:10",
60
+ "python-flask/profile.py:27",
61
+ "node-express/routes/profile.js:16"
62
+ ]
63
+ }
64
+ },
65
+ "active_findings": 84,
66
+ "matched_findings": 56,
67
+ "precision": 0.667,
68
+ "unmatched_findings": [
69
+ "BFLA-R-0003-1",
70
+ "BFLA-R-0007-1",
71
+ "BFLA-R-0009-1",
72
+ "BFLA-R-0023-1",
73
+ "BFLA-R-0030-1",
74
+ "BFLA-R-0032-1",
75
+ "BFLA-R-0063-1",
76
+ "INJ-I-0035",
77
+ "MASS-M-0014-1",
78
+ "MASS-M-0015-1",
79
+ "BOLA-R-0007",
80
+ "BOLA-R-0009",
81
+ "BOLA-R-0010",
82
+ "BOLA-R-0011",
83
+ "BOLA-R-0012",
84
+ "BOLA-R-0020",
85
+ "BOLA-R-0021",
86
+ "BOLA-R-0022",
87
+ "BOLA-R-0023",
88
+ "BOLA-R-0028",
89
+ "BOLA-R-0029",
90
+ "BOLA-R-0030",
91
+ "BOLA-R-0035",
92
+ "BOLA-R-0037",
93
+ "BOLA-R-0060",
94
+ "BOLA-R-0073",
95
+ "BOLA-R-0074",
96
+ "MASS-M-0001-1"
97
+ ],
98
+ "needs_review_not_scored": [
99
+ "MASS-M-0002-1",
100
+ "MASS-M-0003-1",
101
+ "MASS-M-0005-1"
102
+ ],
103
+ "verdict_level": {
104
+ "bfla": {
105
+ "truth_vulnerable": 10,
106
+ "found": 10,
107
+ "recall": 1.0,
108
+ "flagged_safe": [],
109
+ "missed": []
110
+ },
111
+ "mass_assignment": {
112
+ "truth_vulnerable": 15,
113
+ "found": 14,
114
+ "recall": 0.933,
115
+ "flagged_safe": [],
116
+ "missed": [
117
+ "php-plain/register.php:4"
118
+ ]
119
+ }
120
+ }
121
+ }
@@ -0,0 +1,111 @@
1
+ {
2
+ "route_candidates": 74,
3
+ "inventoried": 74,
4
+ "rejected": 0,
5
+ "missing_from_inventory": [],
6
+ "bola_routes_to_audit": 74,
7
+ "bola_routes_without_verdict": [],
8
+ "bfla_routes_to_audit": 0,
9
+ "bfla_routes_without_verdict": [],
10
+ "injection_candidates": 38,
11
+ "injection_candidates_without_verdict": [],
12
+ "mass_candidates": 15,
13
+ "mass_candidates_without_verdict": [
14
+ "M-0001",
15
+ "M-0002",
16
+ "M-0003",
17
+ "M-0004",
18
+ "M-0005",
19
+ "M-0011",
20
+ "M-0012"
21
+ ],
22
+ "findings_without_verification": [
23
+ "BOLA-R-0027-1",
24
+ "BOLA-R-0028-1",
25
+ "BOLA-R-0030-1",
26
+ "BOLA-R-0031-1",
27
+ "BOLA-R-0032-1",
28
+ "BOLA-R-0033-1",
29
+ "BOLA-R-0035-1",
30
+ "BOLA-R-0037-1",
31
+ "BOLA-R-0038-1",
32
+ "BOLA-R-0043-1",
33
+ "BOLA-R-0044-1",
34
+ "BOLA-R-0046-1",
35
+ "BOLA-R-0057-1",
36
+ "BOLA-R-0058-1",
37
+ "BOLA-R-0059-1",
38
+ "BOLA-R-0061-1",
39
+ "BOLA-R-0066-1",
40
+ "BOLA-R-0067-1",
41
+ "BOLA-R-0069-1",
42
+ "INJ-I-0001-1",
43
+ "INJ-I-0002-1",
44
+ "INJ-I-0003-1",
45
+ "INJ-I-0004-1",
46
+ "INJ-I-0006-1",
47
+ "INJ-I-0007-1",
48
+ "INJ-I-0008",
49
+ "INJ-I-0009-1",
50
+ "INJ-I-0010-1",
51
+ "INJ-I-0011-1",
52
+ "INJ-I-0012-1",
53
+ "INJ-I-0013-1",
54
+ "INJ-I-0015",
55
+ "INJ-I-0016-1",
56
+ "INJ-I-0017-1",
57
+ "INJ-I-0018",
58
+ "INJ-I-0020-1",
59
+ "INJ-I-0021-1",
60
+ "INJ-I-0022-1",
61
+ "INJ-I-0023-1",
62
+ "INJ-I-0024-1",
63
+ "INJ-I-0025-1",
64
+ "INJ-I-0026",
65
+ "INJ-I-0028-1",
66
+ "INJ-I-0029-1",
67
+ "INJ-I-0030-1",
68
+ "INJ-I-0031",
69
+ "INJ-I-0032",
70
+ "INJ-I-0033",
71
+ "INJ-I-0034",
72
+ "INJ-I-0035",
73
+ "INJ-I-0036",
74
+ "INJ-I-0037"
75
+ ],
76
+ "duplicates_removed": [
77
+ {
78
+ "kept": "INJ-I-0012-1",
79
+ "dropped": "INJ-I-0014-1"
80
+ },
81
+ {
82
+ "kept": "INJ-I-0018",
83
+ "dropped": "INJ-I-0019"
84
+ },
85
+ {
86
+ "kept": "INJ-I-0037",
87
+ "dropped": "INJ-I-0038"
88
+ }
89
+ ],
90
+ "validation_errors": [
91
+ "bola-routes-005.json:BOLA-R-0073-1: status: missing required field 'status'",
92
+ "bola-routes-005.json:BOLA-R-0074-1: status: missing required field 'status'",
93
+ "bola-routes-005.json:BOLA-R-0010-1: status: missing required field 'status'",
94
+ "bola-routes-005.json:BOLA-R-0011-1: status: missing required field 'status'",
95
+ "bola-routes-005.json:BOLA-R-0012-1: status: missing required field 'status'",
96
+ "bola-routes-005.json:BOLA-R-0016-1: status: missing required field 'status'",
97
+ "bola-routes-005.json:BOLA-R-0029-1: status: missing required field 'status'",
98
+ "bola-routes-005.json:BOLA-R-0063-1: status: missing required field 'status'",
99
+ "bola-routes-005.json:BOLA-R-0060-1: status: missing required field 'status'",
100
+ "priv-privilege-002.json:MASS-M-0006-1: evidence[1].line: expected ['integer'], got NoneType",
101
+ "priv-privilege-002.json:MASS-M-0007-1: evidence[1].line: expected ['integer'], got NoneType",
102
+ "priv-privilege-002.json:MASS-M-0008-1: evidence[1].line: expected ['integer'], got NoneType",
103
+ "priv-privilege-002.json:MASS-M-0009-1: evidence[1].line: expected ['integer'], got NoneType",
104
+ "priv-privilege-002.json:MASS-M-0010-1: evidence[1].line: expected ['integer'], got NoneType",
105
+ "priv-privilege-002.json:MASS-M-0013-1: evidence[1].line: expected ['integer'], got NoneType",
106
+ "priv-privilege-002.json:MASS-M-0014-1: evidence[1].line: expected ['integer'], got NoneType",
107
+ "priv-privilege-002.json:MASS-M-0015-1: evidence[1].line: expected ['integer'], got NoneType"
108
+ ],
109
+ "new_issues_from_verifier": [],
110
+ "out_of_scope_notes": []
111
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "batch_id": "privilege-001",
3
+ "findings": [],
4
+ "privilege_route_verdicts": [],
5
+ "candidate_verdicts": []
6
+ }