@hoanghainh/komagu 2.0.0 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. package/CHANGELOG.md +7 -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/prompts/35-privilege-auditor.md +3 -1
  117. package/assess/lsa/tests/EVAL-RESULTS.md +156 -0
  118. package/assess/lsa/tests/score_findings.py +58 -0
  119. package/assess/lsa/tests/test_eval_run_4.py +73 -0
  120. package/assess/lsa/tests/test_eval_run_5.py +73 -0
  121. package/assess/lsa/tests/test_privilege_tier2.py +30 -0
  122. package/operate/ai/anchoring.py +130 -0
  123. package/operate/ai/client.py +13 -0
  124. package/operate/ai/context.py +105 -0
  125. package/operate/ai/runner.py +197 -69
  126. package/operate/cli/__init__.py +1 -1
  127. package/operate/cli/commands/scan.py +1 -1
  128. package/operate/tests/test_ai_anchoring.py +184 -0
  129. package/operate/tests/test_headless_ai.py +148 -1
  130. 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,123 @@
1
+ {
2
+ "per_category": {
3
+ "bola": {
4
+ "truth_vulnerable": 25,
5
+ "found": 23,
6
+ "recall": 0.92,
7
+ "false_positive_on_safe_code": [],
8
+ "missed": [
9
+ "perl-cgi/cgi-bin/order.cgi:19",
10
+ "dotnet-legacy/Web/Handlers/GetFile.ashx:10"
11
+ ]
12
+ },
13
+ "injection": {
14
+ "truth_vulnerable": 34,
15
+ "found": 33,
16
+ "recall": 0.971,
17
+ "false_positive_on_safe_code": [
18
+ "python-flask/app.py:12"
19
+ ],
20
+ "missed": [
21
+ "classic-asp/shop/order.asp:6"
22
+ ]
23
+ },
24
+ "bfla": {
25
+ "truth_vulnerable": 10,
26
+ "found": 0,
27
+ "recall": 0.0,
28
+ "false_positive_on_safe_code": [],
29
+ "missed": [
30
+ "php-plain/admin.php:8",
31
+ "php-plain/admin.php:12",
32
+ "php-plain/manage_users.php:6",
33
+ "php-plain/admin/delete_user.php:6",
34
+ "php-plain/admin/promote.php:5",
35
+ "java-legacy/src/com/acme/web/AdminUserController.java:15",
36
+ "dotnet-legacy/Web/Controllers/AdminController.cs:15",
37
+ "dotnet-legacy/Web/Controllers/AdminController.cs:32",
38
+ "node-express/routes/admin.js:9",
39
+ "node-express/routes/admin.js:17"
40
+ ]
41
+ },
42
+ "mass_assignment": {
43
+ "truth_vulnerable": 15,
44
+ "found": 0,
45
+ "recall": 0.0,
46
+ "false_positive_on_safe_code": [],
47
+ "missed": [
48
+ "php-plain/profile.php:6",
49
+ "php-plain/profile.php:10",
50
+ "php-plain/register.php:4",
51
+ "java-legacy/src/com/acme/web/AccountController.java:14",
52
+ "java-legacy/src/com/acme/web/AccountController.java:27",
53
+ "java-legacy/src/com/acme/web/ProfileServlet.java:12",
54
+ "php-laravel/app/Http/Controllers/AccountController.php:13",
55
+ "php-laravel/app/Http/Controllers/AccountController.php:23",
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:8",
62
+ "node-express/routes/profile.js:16"
63
+ ]
64
+ }
65
+ },
66
+ "active_findings": 72,
67
+ "matched_findings": 56,
68
+ "precision": 0.778,
69
+ "unmatched_findings": [
70
+ "INJ-I-0035",
71
+ "BOLA-R-0007-1",
72
+ "BOLA-R-0008-1",
73
+ "BOLA-R-0009-1",
74
+ "BOLA-R-0020-1",
75
+ "BOLA-R-0021-1",
76
+ "BOLA-R-0022-1",
77
+ "BOLA-R-0023-1",
78
+ "BOLA-R-0024-1",
79
+ "BOLA-R-0030-1",
80
+ "BOLA-R-0031-1",
81
+ "BOLA-R-0032-1",
82
+ "BOLA-R-0035-1",
83
+ "BOLA-R-0059-1",
84
+ "BOLA-R-0066-1",
85
+ "BOLA-R-0067-1"
86
+ ],
87
+ "needs_review_not_scored": [],
88
+ "verdict_level": {
89
+ "bfla": {
90
+ "truth_vulnerable": 10,
91
+ "found": 0,
92
+ "recall": 0.0,
93
+ "flagged_safe": [],
94
+ "missed": [
95
+ "php-plain/admin.php:8",
96
+ "php-plain/admin.php:12",
97
+ "php-plain/manage_users.php:6",
98
+ "php-plain/admin/delete_user.php:6",
99
+ "php-plain/admin/promote.php:5",
100
+ "java-legacy/src/com/acme/web/AdminUserController.java:15",
101
+ "dotnet-legacy/Web/Controllers/AdminController.cs:15",
102
+ "dotnet-legacy/Web/Controllers/AdminController.cs:32",
103
+ "node-express/routes/admin.js:9",
104
+ "node-express/routes/admin.js:17"
105
+ ]
106
+ },
107
+ "mass_assignment": {
108
+ "truth_vulnerable": 15,
109
+ "found": 8,
110
+ "recall": 0.533,
111
+ "flagged_safe": [],
112
+ "missed": [
113
+ "php-plain/profile.php:6",
114
+ "php-plain/profile.php:10",
115
+ "java-legacy/src/com/acme/web/AccountController.java:14",
116
+ "java-legacy/src/com/acme/web/AccountController.java:27",
117
+ "java-legacy/src/com/acme/web/ProfileServlet.java:12",
118
+ "dotnet-legacy/Web/Controllers/CustomerController.cs:12",
119
+ "dotnet-legacy/Web/Controllers/CustomerController.cs:30"
120
+ ]
121
+ }
122
+ }
123
+ }
@@ -0,0 +1,50 @@
1
+ {
2
+ "model": "gpt-oss:20b",
3
+ "endpoint": "http://localhost:11434/v1/chat/completions",
4
+ "phases": {
5
+ "2-stack-detector": {
6
+ "seconds": 93.222,
7
+ "calls": 1,
8
+ "prompt_tokens": 3118,
9
+ "completion_tokens": 3342
10
+ },
11
+ "3-route-mapper": {
12
+ "seconds": 0.009,
13
+ "calls": 0,
14
+ "prompt_tokens": 0,
15
+ "completion_tokens": 0
16
+ },
17
+ "4a-bola-auditor": {
18
+ "seconds": 1073.073,
19
+ "calls": 6,
20
+ "prompt_tokens": 45569,
21
+ "completion_tokens": 34017
22
+ },
23
+ "4b-injection-auditor": {
24
+ "seconds": 525.525,
25
+ "calls": 2,
26
+ "prompt_tokens": 15801,
27
+ "completion_tokens": 16545
28
+ },
29
+ "4c-privilege-auditor": {
30
+ "seconds": 393.673,
31
+ "calls": 2,
32
+ "prompt_tokens": 17058,
33
+ "completion_tokens": 9693
34
+ },
35
+ "5-finding-verifier": {
36
+ "seconds": 1338.902,
37
+ "calls": 21,
38
+ "prompt_tokens": 130620,
39
+ "completion_tokens": 33730
40
+ }
41
+ },
42
+ "totals": {
43
+ "calls": 32,
44
+ "prompt_tokens": 212166,
45
+ "completion_tokens": 97327,
46
+ "seconds": 3421.285
47
+ },
48
+ "parse_failures": {},
49
+ "call_errors": {}
50
+ }
@@ -0,0 +1,42 @@
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
+ "I-0021"
13
+ ],
14
+ "mass_candidates": 15,
15
+ "mass_candidates_without_verdict": [],
16
+ "findings_without_verification": [],
17
+ "duplicates_removed": [
18
+ {
19
+ "kept": "INJ-I-0018",
20
+ "dropped": "INJ-I-0019"
21
+ },
22
+ {
23
+ "kept": "INJ-I-0027",
24
+ "dropped": "INJ-I-0028"
25
+ },
26
+ {
27
+ "kept": "INJ-I-0029",
28
+ "dropped": "INJ-I-0030"
29
+ },
30
+ {
31
+ "kept": "INJ-I-0037",
32
+ "dropped": "INJ-I-0038"
33
+ },
34
+ {
35
+ "kept": "MASS-M-0006-1",
36
+ "dropped": "MASS-M-0007-1"
37
+ }
38
+ ],
39
+ "validation_errors": [],
40
+ "new_issues_from_verifier": [],
41
+ "out_of_scope_notes": []
42
+ }