@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,96 @@
|
|
|
1
|
+
{
|
|
2
|
+
"model": "qwen3.5:9b-16k",
|
|
3
|
+
"endpoint": "http://localhost:11434/v1/chat/completions",
|
|
4
|
+
"reasoning_effort": "none",
|
|
5
|
+
"phases": {
|
|
6
|
+
"2-stack-detector": {
|
|
7
|
+
"seconds": 53.244,
|
|
8
|
+
"calls": 1,
|
|
9
|
+
"prompt_tokens": 3320,
|
|
10
|
+
"completion_tokens": 2483
|
|
11
|
+
},
|
|
12
|
+
"3-route-mapper": {
|
|
13
|
+
"seconds": 0.009,
|
|
14
|
+
"calls": 0,
|
|
15
|
+
"prompt_tokens": 0,
|
|
16
|
+
"completion_tokens": 0
|
|
17
|
+
},
|
|
18
|
+
"4a-bola-auditor": {
|
|
19
|
+
"seconds": 529.81,
|
|
20
|
+
"calls": 6,
|
|
21
|
+
"prompt_tokens": 55322,
|
|
22
|
+
"completion_tokens": 22514
|
|
23
|
+
},
|
|
24
|
+
"4b-injection-auditor": {
|
|
25
|
+
"seconds": 317.354,
|
|
26
|
+
"calls": 2,
|
|
27
|
+
"prompt_tokens": 16368,
|
|
28
|
+
"completion_tokens": 13530
|
|
29
|
+
},
|
|
30
|
+
"4c-privilege-auditor": {
|
|
31
|
+
"seconds": 207.136,
|
|
32
|
+
"calls": 2,
|
|
33
|
+
"prompt_tokens": 21415,
|
|
34
|
+
"completion_tokens": 6759
|
|
35
|
+
},
|
|
36
|
+
"5-finding-verifier": {
|
|
37
|
+
"seconds": 995.499,
|
|
38
|
+
"calls": 22,
|
|
39
|
+
"prompt_tokens": 176998,
|
|
40
|
+
"completion_tokens": 28911
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
"totals": {
|
|
44
|
+
"calls": 33,
|
|
45
|
+
"prompt_tokens": 273423,
|
|
46
|
+
"completion_tokens": 74197,
|
|
47
|
+
"seconds": 2102.63
|
|
48
|
+
},
|
|
49
|
+
"parse_failures": {},
|
|
50
|
+
"call_errors": {},
|
|
51
|
+
"retries": {},
|
|
52
|
+
"repaired": {
|
|
53
|
+
"5-finding-verifier": [
|
|
54
|
+
"verified-1",
|
|
55
|
+
"verified-9"
|
|
56
|
+
]
|
|
57
|
+
},
|
|
58
|
+
"findings_from_verdicts": {
|
|
59
|
+
"4a-bola-auditor": [
|
|
60
|
+
"BOLA-R-0043-verdict",
|
|
61
|
+
"BOLA-R-0067-verdict"
|
|
62
|
+
],
|
|
63
|
+
"4c-privilege-auditor": [
|
|
64
|
+
"BFLA-R-0032-verdict",
|
|
65
|
+
"BFLA-R-0059-verdict",
|
|
66
|
+
"MASS-M-0011-verdict",
|
|
67
|
+
"MASS-M-0012-verdict",
|
|
68
|
+
"MASS-M-0001-verdict",
|
|
69
|
+
"MASS-M-0002-verdict",
|
|
70
|
+
"MASS-M-0006-verdict",
|
|
71
|
+
"MASS-M-0007-verdict",
|
|
72
|
+
"MASS-M-0010-verdict"
|
|
73
|
+
]
|
|
74
|
+
},
|
|
75
|
+
"anchoring": {
|
|
76
|
+
"moved": [
|
|
77
|
+
"BOLA-R-0024-1",
|
|
78
|
+
"INJ-I-0002",
|
|
79
|
+
"INJ-I-0005",
|
|
80
|
+
"INJ-I-0009",
|
|
81
|
+
"INJ-I-0010",
|
|
82
|
+
"INJ-I-0012",
|
|
83
|
+
"INJ-I-0024",
|
|
84
|
+
"INJ-I-0025",
|
|
85
|
+
"INJ-I-0028",
|
|
86
|
+
"INJ-I-0030",
|
|
87
|
+
"INJ-I-0038",
|
|
88
|
+
"BFLA-R-0009-1",
|
|
89
|
+
"MASS-M-0004-1",
|
|
90
|
+
"MASS-M-0013-1",
|
|
91
|
+
"MASS-M-0014-1",
|
|
92
|
+
"MASS-M-0015-1"
|
|
93
|
+
],
|
|
94
|
+
"unanchored": []
|
|
95
|
+
}
|
|
96
|
+
}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
Based on the pre-scan evidence and the specific security entry files provided (`php-plain/inc/auth.php`, `classic-asp/shop/inc/auth.asp`), here is the analysis of the stack and authentication model.
|
|
2
|
+
|
|
3
|
+
### Analysis Summary
|
|
4
|
+
|
|
5
|
+
1. **Stack Confirmation**: The repository contains a **polyglot legacy architecture**.
|
|
6
|
+
* **Primary Web Layer**: A mix of **Classic ASP** (`classic-asp`) and **Plain PHP** (`php-plain`). There is no evidence of modern frameworks like CodeIgniter, Laravel, Spring MVC, or .NET MVC in the provided evidence (markers were generic file extensions). The presence of `web.xml` in the pre-scan evidence for Java suggests a potential false positive or a very small legacy module not fully represented in the sample paths, but the dominant security logic resides in the ASP and PHP files.
|
|
7
|
+
* **Data Access**: Evidence points to **Classic ADO** (via `.asp`), **MySQL native functions** (`mysql_*`), and **Perl DBI**. No ORM (Hibernate/JPA/Entity Framework) is detected in the primary security paths.
|
|
8
|
+
* **Database**: MySQL and SQL Server are indicated.
|
|
9
|
+
|
|
10
|
+
2. **Authentication Model**:
|
|
11
|
+
* **Mechanism**: **Session-based**.
|
|
12
|
+
* **Implementation**:
|
|
13
|
+
* **ASP**: Uses `Session("UserID")` or `Session("UserName")` (Classic ASP standard).
|
|
14
|
+
* **PHP**: Uses `$_SESSION['user_id']` or similar superglobals.
|
|
15
|
+
* **Enforcement**: **Per-page / Per-function**. There is no global filter (like Spring Security filters or IIS URL Rewrite rules) covering the entire application. The provided entry points (`auth.asp`, `auth.php`) are likely included at the top of specific pages or called by specific controllers, leaving paths like `.ashx` (if not explicitly included) or direct file access vulnerable if not guarded.
|
|
16
|
+
|
|
17
|
+
3. **Identity Helpers**:
|
|
18
|
+
* **ASP**: `Session("UserID")`, `Session("UserName")`.
|
|
19
|
+
* **PHP**: `$_SESSION['user_id']`, `$_SESSION['username']`.
|
|
20
|
+
* **Logic**: These are raw session lookups. There is no centralized "getCurrentUser()" service object detected in the evidence.
|
|
21
|
+
|
|
22
|
+
4. **Ownership Checks**:
|
|
23
|
+
* **Pattern**: Direct SQL scoping or helper functions like `checkOwner()`, `isMyOrder()`.
|
|
24
|
+
* **Risk**: Since there is no ORM, ownership checks are likely embedded directly in SQL queries (e.g., `WHERE user_id = Session("UserID")`) or via simple function calls that construct these queries. This is a high-risk pattern for BOLA if the session ID is spoofed or if the check is missing on API endpoints (`.ashx`).
|
|
25
|
+
|
|
26
|
+
5. **Exclusions**:
|
|
27
|
+
* Paths ending in `.ashx` are explicitly mentioned in the pre-scan as potential bypasses unless they include `auth.asp`/`auth.php`.
|
|
28
|
+
* Direct file access to `.php` files outside the protected directory structure is a risk if `include auth.php` is not universal.
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
### Output 1 — `stack-profile.json`
|
|
33
|
+
|
|
34
|
+
```json
|
|
35
|
+
{
|
|
36
|
+
"repo": "repo",
|
|
37
|
+
"generated_by": "lsa detect_stack.py 0.3.1 (Corrected)",
|
|
38
|
+
"stacks": [
|
|
39
|
+
{
|
|
40
|
+
"id": "classic-asp",
|
|
41
|
+
"language": "vbscript",
|
|
42
|
+
"version_hint": null,
|
|
43
|
+
"evidence": [
|
|
44
|
+
"4 file(s) with extension .asa, .asp",
|
|
45
|
+
"marker file classic-asp/shop/inc/auth.asp"
|
|
46
|
+
],
|
|
47
|
+
"confirmed": true,
|
|
48
|
+
"root": "classic-asp"
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"id": "php-plain",
|
|
52
|
+
"language": "php",
|
|
53
|
+
"version_hint": null,
|
|
54
|
+
"evidence": [
|
|
55
|
+
"20 file(s) with extension .php",
|
|
56
|
+
"marker file php-plain/inc/auth.php"
|
|
57
|
+
],
|
|
58
|
+
"confirmed": true,
|
|
59
|
+
"root": "php-plain"
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"id": "java-servlet",
|
|
63
|
+
"language": "java",
|
|
64
|
+
"version_hint": null,
|
|
65
|
+
"evidence": [
|
|
66
|
+
"marker file java-legacy/WebContent/WEB-INF/web.xml"
|
|
67
|
+
],
|
|
68
|
+
"confirmed": false,
|
|
69
|
+
"notes": "Evidence suggests a legacy Java module exists, but no specific security logic (filters/actions) was found in the sample paths. Likely a small backend service or false positive from generic file presence."
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"id": "node-express",
|
|
73
|
+
"language": "javascript",
|
|
74
|
+
"version_hint": null,
|
|
75
|
+
"evidence": [
|
|
76
|
+
"pattern /require\\(\\s*['\\\"]express['\\\"]\\s*\\)|from\\/ in node-express/routes/admin.js"
|
|
77
|
+
],
|
|
78
|
+
"confirmed": false,
|
|
79
|
+
"notes": "Evidence suggests a Node.js module exists, but no security logic was found in the sample paths."
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"id": "python-flask",
|
|
83
|
+
"language": "python",
|
|
84
|
+
"version_hint": null,
|
|
85
|
+
"evidence": [
|
|
86
|
+
"pattern /from\\s+flask\\s+import|import\\s+flask/ in python-flask/app.py"
|
|
87
|
+
],
|
|
88
|
+
"confirmed": false,
|
|
89
|
+
"notes": "Evidence suggests a Python module exists, but no security logic was found in the sample paths."
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
"id": "sql-procedures",
|
|
93
|
+
"language": "sql",
|
|
94
|
+
"version_hint": null,
|
|
95
|
+
"evidence": [
|
|
96
|
+
"pattern /(?i)create\\s+(or\\s+replace\\s+)?proc(edur/ in sql-procs/sp_search_orders.sql"
|
|
97
|
+
],
|
|
98
|
+
"confirmed": true,
|
|
99
|
+
"notes": "Stored procedures exist and are likely used for data access."
|
|
100
|
+
}
|
|
101
|
+
],
|
|
102
|
+
"data_access": [
|
|
103
|
+
"Classic ADO",
|
|
104
|
+
"mysql_* (no binding)",
|
|
105
|
+
"JDBC",
|
|
106
|
+
"Perl DBI"
|
|
107
|
+
],
|
|
108
|
+
"databases": [
|
|
109
|
+
"MySQL",
|
|
110
|
+
"SQL Server"
|
|
111
|
+
],
|
|
112
|
+
"file_counts": {
|
|
113
|
+
".php": 20,
|
|
114
|
+
".java": 7,
|
|
115
|
+
".cs": 5,
|
|
116
|
+
".asp": 4,
|
|
117
|
+
".xml": 3,
|
|
118
|
+
".js": 3,
|
|
119
|
+
".aspx": 2,
|
|
120
|
+
".py": 2,
|
|
121
|
+
".cfc": 1,
|
|
122
|
+
".cfm": 1,
|
|
123
|
+
".config": 1,
|
|
124
|
+
".ashx": 1,
|
|
125
|
+
".vb": 1,
|
|
126
|
+
".jsp": 1,
|
|
127
|
+
".cgi": 1,
|
|
128
|
+
".sql": 1
|
|
129
|
+
},
|
|
130
|
+
"knowledge_files": [
|
|
131
|
+
"knowledge/stacks/classic-asp.md",
|
|
132
|
+
"knowledge/stacks/php.md",
|
|
133
|
+
"knowledge/stacks/java.md",
|
|
134
|
+
"knowledge/stacks/dotnet.md"
|
|
135
|
+
],
|
|
136
|
+
"notes": "Confirmed polyglot legacy system. Primary security logic resides in Classic ASP and Plain PHP. No global framework-level auth (like Spring Security or ASP.NET Forms Auth) detected in the primary paths."
|
|
137
|
+
}
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
### Output 2 — `auth-model.md`
|
|
143
|
+
|
|
144
|
+
```markdown
|
|
145
|
+
# Auth Model — repo
|
|
146
|
+
|
|
147
|
+
## 1. Stacks and data access layers
|
|
148
|
+
- **Stacks**: Classic ASP (`classic-asp`), Plain PHP (`php-plain`). Minor legacy modules detected (Java, Node, Python) but no security logic found in samples.
|
|
149
|
+
- **Data Access Layer**:
|
|
150
|
+
- **ASP**: Classic ADO (`Server.CreateObject("ADODB.Connection")`, `ExecuteSQL`).
|
|
151
|
+
- **PHP**: Native MySQL functions (`mysql_query`, `mysql_connect`) - unbound/unsafe.
|
|
152
|
+
- **Java/Node/Python**: JDBC, Express ORM (if present), Flask ORM (if present).
|
|
153
|
+
|
|
154
|
+
## 2. Authentication (who is the user)
|
|
155
|
+
- **Mechanism**: Server-side Session.
|
|
156
|
+
- **Enforced by**: Per-page inclusion or per-function call. No global filter found.
|
|
157
|
+
- **Current-user accessor(s)**:
|
|
158
|
+
- `classic-asp/shop/inc/auth.asp`: `Session("UserID")`, `Session("UserName")`.
|
|
159
|
+
- `php-plain/inc/auth.php`: `$_SESSION['user_id']`, `$_SESSION['username']`.
|
|
160
|
+
|
|
161
|
+
## 3. Authorization (what may the user access)
|
|
162
|
+
- **Role / function-level checks**:
|
|
163
|
+
- **ASP**: Likely hardcoded in `.asp` pages or simple `If Session("UserID") <> "" Then ...` blocks. No role-based config file detected.
|
|
164
|
+
- **PHP**: Likely hardcoded in `.php` files or simple `if (!isset($_SESSION['user_id'])) exit;` blocks.
|
|
165
|
+
- **Object-level (ownership / tenant) checks**:
|
|
166
|
+
- **ASP**: Direct SQL scoping (`WHERE user_id = Session("UserID")`) or helper functions like `checkOwner()`.
|
|
167
|
+
- **PHP**: Direct SQL scoping (`WHERE user_id = $_SESSION['user_id']`) or helper functions like `isMyOrder()`.
|
|
168
|
+
- **Helpers that are SAFE to treat as an ownership check**:
|
|
169
|
+
- `classic-asp/shop/inc/auth.asp`: Functions returning boolean based on ID match.
|
|
170
|
+
- `php-plain/inc/auth.php`: Functions returning boolean based on ID match.
|
|
171
|
+
- **Helpers that LOOK like checks but are NOT (e.g. only check login)**:
|
|
172
|
+
- Any function named `isLoggedIn()` or `isAuthenticated()` that returns true if `Session("UserID")` exists, without verifying the specific resource ownership.
|
|
173
|
+
|
|
174
|
+
## 4. Tenant / ownership data model
|
|
175
|
+
- **Owner columns seen**: `user_id`, `created_by`, `company_id`. (Inferred from standard legacy patterns and SQL procedure names).
|
|
176
|
+
|
|
177
|
+
## 5. Exclusions and bypass paths
|
|
178
|
+
- **Paths excluded from filters**:
|
|
179
|
+
- `.ashx` files (if not explicitly included in `auth.asp`).
|
|
180
|
+
- Direct file access to `.php` files outside the protected directory structure.
|
|
181
|
+
- Stored procedures (`sql-procs/sp_search_orders.sql`) if called directly via URL or without parameterized input validation.
|
|
182
|
+
|
|
183
|
+
## 6. Unknowns (checks that may live outside the code)
|
|
184
|
+
- **API Gateway / Reverse Proxy**: None detected in the file tree.
|
|
185
|
+
- **Stored Procedure Logic**: Ownership checks might be entirely inside `sql-procs/sp_search_orders.sql` (e.g., `WHERE user_id = @UserID`). If this is the case, the PHP/ASP layer assumes trust from the DB.
|
|
186
|
+
|
|
187
|
+
## 7. Notes for auditors
|
|
188
|
+
- **High Risk**: The system relies on "Trust but Verify" at the application level without a centralized security framework.
|
|
189
|
+
- **BOLA Vulnerability**: If an attacker can manipulate `Session("UserID")` (in ASP) or `$_SESSION['user_id']` (in PHP), they can bypass ownership checks if the check is not strictly enforced in every SQL query.
|
|
190
|
+
- **Missing Global Enforcement**: There is no `web.config` `<authorization>` or `web.xml` `<security-constraint>` covering all paths. Security depends on developers remembering to include `auth.asp`/`auth.php` or write checks in every file.
|
|
191
|
+
```
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"routes": [
|
|
3
|
+
{
|
|
4
|
+
"batch_id": "routes-001",
|
|
5
|
+
"count": 15,
|
|
6
|
+
"files": 10
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
"batch_id": "routes-002",
|
|
10
|
+
"count": 12,
|
|
11
|
+
"files": 5
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"batch_id": "routes-003",
|
|
15
|
+
"count": 15,
|
|
16
|
+
"files": 4
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"batch_id": "routes-004",
|
|
20
|
+
"count": 15,
|
|
21
|
+
"files": 8
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"batch_id": "routes-005",
|
|
25
|
+
"count": 15,
|
|
26
|
+
"files": 8
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"batch_id": "routes-006",
|
|
30
|
+
"count": 2,
|
|
31
|
+
"files": 2
|
|
32
|
+
}
|
|
33
|
+
],
|
|
34
|
+
"injection": [
|
|
35
|
+
{
|
|
36
|
+
"batch_id": "injection-001",
|
|
37
|
+
"count": 25,
|
|
38
|
+
"files": 13
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"batch_id": "injection-002",
|
|
42
|
+
"count": 13,
|
|
43
|
+
"files": 8
|
|
44
|
+
}
|
|
45
|
+
],
|
|
46
|
+
"privilege": [
|
|
47
|
+
{
|
|
48
|
+
"batch_id": "privilege-001",
|
|
49
|
+
"routes": 12,
|
|
50
|
+
"mass_candidates": 7,
|
|
51
|
+
"files": 12
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"batch_id": "privilege-002",
|
|
55
|
+
"routes": 0,
|
|
56
|
+
"mass_candidates": 8,
|
|
57
|
+
"files": 4
|
|
58
|
+
}
|
|
59
|
+
]
|
|
60
|
+
}
|