@hoanghainh/komagu 2.4.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 +41 -0
- package/LICENSE +202 -0
- package/README.md +1 -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/detect_stack.py +13 -5
- package/assess/lsa/scripts/find_injection.py +35 -2
- package/assess/lsa/scripts/java_routes.py +323 -0
- package/assess/lsa/scripts/laravel_routes.py +102 -0
- package/assess/lsa/scripts/lsa_common.py +72 -2
- package/assess/lsa/scripts/map_routes.py +40 -161
- package/assess/lsa/scripts/merge_findings.py +2 -0
- 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_java_legacy_realistic.py +453 -0
- package/assess/lsa/tests/test_laravel_routes.py +95 -0
- package/contracts/schemas/persona-suite.schema.json +38 -2
- package/examples/member-portal/backend-dotnet/Dockerfile +2 -1
- package/examples/member-portal/backend-spring/Dockerfile +2 -0
- package/examples/member-portal/docker-compose.yml +1 -1
- package/examples/member-portal/frontend/Dockerfile +3 -2
- package/examples/member-portal/frontend/package-lock.json +24 -656
- package/examples/member-portal/frontend/package.json +1 -1
- package/operate/ai/client.py +22 -9
- package/operate/ai/runner.py +24 -4
- package/operate/cli/__init__.py +1 -1
- package/operate/cli/commands/fix.py +4 -0
- package/operate/cli/commands/leak_check.py +75 -0
- package/operate/cli/commands/protect.py +32 -3
- package/operate/cli/commands/scan.py +8 -1
- package/operate/cli/commands/test.py +131 -15
- package/operate/cli/main.py +5 -3
- package/operate/cross_user_tester/persona_matrix.py +118 -25
- package/operate/cross_user_tester/runner.py +190 -7
- package/operate/cross_user_tester/session_config.py +180 -0
- package/operate/cross_user_tester/session_http.py +288 -0
- package/operate/devsecops/leak_check.py +314 -0
- package/operate/remediator/runner.py +18 -1
- package/operate/remediator/strategies.py +2 -2
- package/operate/simulate/scenarios.py +2 -2
- package/operate/tests/mock_legacy_session_app.py +160 -0
- package/operate/tests/test_ai_reasoning_effort.py +65 -0
- package/operate/tests/test_ai_route_inventory.py +53 -0
- package/operate/tests/test_cross_user_session.py +565 -0
- package/operate/tests/test_docker_packaging.py +3 -3
- package/operate/tests/test_headless_ai.py +6 -0
- package/operate/tests/test_leak_check.py +250 -0
- package/operate/tests/test_legacy_session_edge.py +192 -0
- package/operate/tests/test_pilot_safeguards.py +245 -0
- package/operate/tests/test_remediator_java_legacy.py +330 -0
- package/package.json +2 -1
- package/remediate/authz/patcher.py +120 -11
- package/remediate/authz/tests/test_bola_patcher.py +4 -1
- package/remediate/edge/coraza/Caddyfile +1 -1
- package/remediate/edge/coraza/Dockerfile +9 -0
- package/remediate/edge/coraza/rules/coraza-crs-custom.conf +12 -0
- package/remediate/edge/coraza/virtual_patcher.py +24 -0
- package/remediate/edge/docker-compose.yml +7 -2
- package/remediate/edge/kong/kong-legacy-session.yaml +51 -0
- package/remediate/edge/mock-backend/Dockerfile +2 -0
- package/remediate/edge/tests/test_edge_security.py +21 -1
- package/remediate/resilience/terraform/backup_worm.tf +39 -1
- package/remediate/resilience/terraform/main.tf +15 -3
- package/remediate/resilience/terraform/variables.tf +11 -0
- package/remediate/resilience/tests/test_resilience.py +16 -0
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"batch_id": "verified-16",
|
|
3
|
+
"verifications": [
|
|
4
|
+
{
|
|
5
|
+
"finding_id": "INJ-I-0035-1",
|
|
6
|
+
"verdict": "confirmed",
|
|
7
|
+
"reason_code": "traced",
|
|
8
|
+
"confidence": "high",
|
|
9
|
+
"checked": [
|
|
10
|
+
"python-flask/app.py line 12: cur.execute(\"SELECT * FROM orders WHERE id = %s\" % order_id)"
|
|
11
|
+
],
|
|
12
|
+
"control_found": null,
|
|
13
|
+
"notes": "The query concatenates the unsanitized order_id directly into the SQL string. No ownership or role check is performed on this route; @login_required only ensures authentication, not authorization."
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"finding_id": "INJ-I-0008-1",
|
|
17
|
+
"verdict": "confirmed",
|
|
18
|
+
"reason_code": "traced",
|
|
19
|
+
"confidence": "high",
|
|
20
|
+
"checked": [
|
|
21
|
+
"dotnet-legacy/Web/Controllers/InvoiceController.cs line 28: var list = db.Database.SqlQuery<Invoice>(\"SELECT * FROM Invoices WHERE Customer = '\" + customer + \"'\").ToList();"
|
|
22
|
+
],
|
|
23
|
+
"control_found": null,
|
|
24
|
+
"notes": "The SQL string is built by concatenating the user-supplied customer value. No ownership or role guard is visible in the method; the controller is not decorated with [Authorize] in the provided context."
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"finding_id": "INJ-I-0015-1",
|
|
28
|
+
"verdict": "confirmed",
|
|
29
|
+
"reason_code": "traced",
|
|
30
|
+
"confidence": "high",
|
|
31
|
+
"checked": [
|
|
32
|
+
"java-legacy/src/com/acme/mapper/OrderMapper.xml line 9: ORDER BY ${orderBy}"
|
|
33
|
+
],
|
|
34
|
+
"control_found": null,
|
|
35
|
+
"notes": "The ORDER BY clause interpolates the raw ${orderBy} value from the caller. No allow\u2011list or type cast is present in the snippet."
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"finding_id": "INJ-I-0018-1",
|
|
39
|
+
"verdict": "confirmed",
|
|
40
|
+
"reason_code": "traced",
|
|
41
|
+
"confidence": "high",
|
|
42
|
+
"checked": [
|
|
43
|
+
"java-legacy/src/com/acme/web/OrderServlet.java line 15: ResultSet rs = stmt.executeQuery(\"SELECT * FROM orders WHERE id = '\" + id + \"'\");"
|
|
44
|
+
],
|
|
45
|
+
"control_found": null,
|
|
46
|
+
"notes": "The query concatenates the request parameter id directly into the SQL string. No ownership or role check is performed in the shown code."
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"finding_id": "INJ-I-0019-1",
|
|
50
|
+
"verdict": "confirmed",
|
|
51
|
+
"reason_code": "traced",
|
|
52
|
+
"confidence": "high",
|
|
53
|
+
"checked": [
|
|
54
|
+
"java-legacy/src/com/acme/web/OrderServlet.java line 17: sb.append(\" AND order_id = \").append(id);"
|
|
55
|
+
],
|
|
56
|
+
"control_found": null,
|
|
57
|
+
"notes": "The string builder appends the unsanitized id into the SQL query. No ownership or role guard is visible in the snippet."
|
|
58
|
+
}
|
|
59
|
+
]
|
|
60
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
{
|
|
2
|
+
"batch_id": "verified-17",
|
|
3
|
+
"verifications": [
|
|
4
|
+
{
|
|
5
|
+
"finding_id": "INJ-I-0026-1",
|
|
6
|
+
"verdict": "confirmed",
|
|
7
|
+
"reason_code": "traced",
|
|
8
|
+
"confidence": "high",
|
|
9
|
+
"checked": [
|
|
10
|
+
"php-codeigniter/application/controllers/Invoice.php lines 9-11"
|
|
11
|
+
],
|
|
12
|
+
"control_found": null,
|
|
13
|
+
"notes": "The query concatenates the raw $id parameter directly into the SQL string with no casting, escaping, or parameter binding. No ownership or role check is present in this method."
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"finding_id": "INJ-I-0037-1",
|
|
17
|
+
"verdict": "confirmed",
|
|
18
|
+
"reason_code": "traced",
|
|
19
|
+
"confidence": "high",
|
|
20
|
+
"checked": [
|
|
21
|
+
"sql-procs/sp_search_orders.sql lines 4-6"
|
|
22
|
+
],
|
|
23
|
+
"control_found": null,
|
|
24
|
+
"notes": "Dynamic SQL is built by concatenating @Customer and @Sort directly into the statement with no validation or allow\u2011list. The procedure executes the constructed string immediately."
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"finding_id": "INJ-I-0038-1",
|
|
28
|
+
"verdict": "confirmed",
|
|
29
|
+
"reason_code": "traced",
|
|
30
|
+
"confidence": "high",
|
|
31
|
+
"checked": [
|
|
32
|
+
"sql-procs/sp_search_orders.sql lines 5-6"
|
|
33
|
+
],
|
|
34
|
+
"control_found": null,
|
|
35
|
+
"notes": "The EXEC(@sql) call runs the user\u2011supplied dynamic SQL without any sanitization or parameterization."
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"finding_id": "BFLA-R-0003-1",
|
|
39
|
+
"verdict": "confirmed",
|
|
40
|
+
"reason_code": "traced",
|
|
41
|
+
"confidence": "high",
|
|
42
|
+
"checked": [
|
|
43
|
+
"classic-asp/shop/member.asp lines 1-11",
|
|
44
|
+
"classic-asp/shop/inc/auth.asp lines 1-3"
|
|
45
|
+
],
|
|
46
|
+
"control_found": null,
|
|
47
|
+
"notes": "The included auth.asp only verifies that a session exists; it does not enforce any role. The delete statement is executed for any authenticated user."
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"finding_id": "BFLA-R-0007-1",
|
|
51
|
+
"verdict": "confirmed",
|
|
52
|
+
"reason_code": "traced",
|
|
53
|
+
"confidence": "high",
|
|
54
|
+
"checked": [
|
|
55
|
+
"dotnet-legacy/Web/Controllers/AdminController.cs lines 6-18"
|
|
56
|
+
],
|
|
57
|
+
"control_found": null,
|
|
58
|
+
"notes": "The controller class is marked with [Authorize], which requires authentication but not an admin role. The DeleteUser action lacks a role check, allowing any authenticated user to delete arbitrary accounts."
|
|
59
|
+
}
|
|
60
|
+
]
|
|
61
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"batch_id": "verified-18",
|
|
3
|
+
"verifications": [
|
|
4
|
+
{
|
|
5
|
+
"finding_id": "BFLA-R-0009-1",
|
|
6
|
+
"verdict": "confirmed",
|
|
7
|
+
"reason_code": "traced",
|
|
8
|
+
"confidence": "high",
|
|
9
|
+
"checked": [
|
|
10
|
+
"dotnet-legacy/Web/Controllers/AdminController.cs lines 30-36"
|
|
11
|
+
],
|
|
12
|
+
"control_found": null,
|
|
13
|
+
"notes": "The Export action returns all users when the query parameter isAdmin is true, and no [Authorize] or other role check is present in the visible code."
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"finding_id": "BFLA-R-0023-1",
|
|
17
|
+
"verdict": "confirmed",
|
|
18
|
+
"reason_code": "traced",
|
|
19
|
+
"confidence": "high",
|
|
20
|
+
"checked": [
|
|
21
|
+
"java-legacy/src/com/acme/web/AdminUserController.java lines 13-16"
|
|
22
|
+
],
|
|
23
|
+
"control_found": null,
|
|
24
|
+
"notes": "The delete method lacks any @PreAuthorize or other role guard in the visible code, allowing any authenticated user to delete any account."
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"finding_id": "BFLA-R-0030-1",
|
|
28
|
+
"verdict": "confirmed",
|
|
29
|
+
"reason_code": "traced",
|
|
30
|
+
"confidence": "high",
|
|
31
|
+
"checked": [
|
|
32
|
+
"node-express/routes/admin.js lines 8-9"
|
|
33
|
+
],
|
|
34
|
+
"control_found": null,
|
|
35
|
+
"notes": "The route uses only ensureLoggedIn, which only checks authentication; no admin role check is present before the delete operation."
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"finding_id": "BFLA-R-0032-1",
|
|
39
|
+
"verdict": "confirmed",
|
|
40
|
+
"reason_code": "traced",
|
|
41
|
+
"confidence": "high",
|
|
42
|
+
"checked": [
|
|
43
|
+
"node-express/routes/admin.js lines 16-18"
|
|
44
|
+
],
|
|
45
|
+
"control_found": null,
|
|
46
|
+
"notes": "The export route checks only the isAdmin query parameter and does not enforce an admin role guard in the visible code."
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"finding_id": "BFLA-R-0057-1",
|
|
50
|
+
"verdict": "confirmed",
|
|
51
|
+
"reason_code": "traced",
|
|
52
|
+
"confidence": "high",
|
|
53
|
+
"checked": [
|
|
54
|
+
"php-plain/admin.php lines 6-8"
|
|
55
|
+
],
|
|
56
|
+
"control_found": null,
|
|
57
|
+
"notes": "The view action performs a SELECT on users by id without any role check; the included auth.php only verifies login, not admin privileges."
|
|
58
|
+
}
|
|
59
|
+
]
|
|
60
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
{
|
|
2
|
+
"batch_id": "verified-19",
|
|
3
|
+
"verifications": [
|
|
4
|
+
{
|
|
5
|
+
"finding_id": "BFLA-R-0058-1",
|
|
6
|
+
"verdict": "likely",
|
|
7
|
+
"reason_code": "code_not_visible",
|
|
8
|
+
"confidence": "medium",
|
|
9
|
+
"checked": [
|
|
10
|
+
"php-plain/admin.php lines 1-14",
|
|
11
|
+
"php-plain/inc/auth.php lines 1-7"
|
|
12
|
+
],
|
|
13
|
+
"control_found": null,
|
|
14
|
+
"notes": "No role or ownership check is present in the visible code. The included auth file only verifies login."
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"finding_id": "BFLA-R-0066-1",
|
|
18
|
+
"verdict": "likely",
|
|
19
|
+
"reason_code": "code_not_visible",
|
|
20
|
+
"confidence": "medium",
|
|
21
|
+
"checked": [
|
|
22
|
+
"php-plain/admin/delete_user.php lines 1-8",
|
|
23
|
+
"php-plain/inc/auth.php lines 1-7"
|
|
24
|
+
],
|
|
25
|
+
"control_found": null,
|
|
26
|
+
"notes": "The deletion is performed after casting the id, but no role check is shown. The auth file only checks authentication."
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"finding_id": "BFLA-R-0067-1",
|
|
30
|
+
"verdict": "likely",
|
|
31
|
+
"reason_code": "code_not_visible",
|
|
32
|
+
"confidence": "medium",
|
|
33
|
+
"checked": [
|
|
34
|
+
"php-plain/admin/promote.php lines 1-8",
|
|
35
|
+
"php-plain/inc/auth.php lines 1-7"
|
|
36
|
+
],
|
|
37
|
+
"control_found": null,
|
|
38
|
+
"notes": "The role is set to 'admin' based on a request parameter with no preceding role verification. Auth file only ensures the user is logged in."
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"finding_id": "BFLA-R-0059-1",
|
|
42
|
+
"verdict": "likely",
|
|
43
|
+
"reason_code": "code_not_visible",
|
|
44
|
+
"confidence": "medium",
|
|
45
|
+
"checked": [
|
|
46
|
+
"php-plain/manage_users.php lines 1-12",
|
|
47
|
+
"php-plain/inc/auth.php lines 1-7"
|
|
48
|
+
],
|
|
49
|
+
"control_found": null,
|
|
50
|
+
"notes": "Deletion occurs on POST without a role check. The link is only shown to admins, but the server-side action is unprotected."
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"finding_id": "BFLA-R-0063-1",
|
|
54
|
+
"verdict": "likely",
|
|
55
|
+
"reason_code": "code_not_visible",
|
|
56
|
+
"confidence": "medium",
|
|
57
|
+
"checked": [
|
|
58
|
+
"php-plain/profile.php lines 1-11",
|
|
59
|
+
"php-plain/inc/auth.php lines 1-7"
|
|
60
|
+
],
|
|
61
|
+
"control_found": null,
|
|
62
|
+
"notes": "The code assigns the role from user input without any role verification. Auth file only checks authentication."
|
|
63
|
+
}
|
|
64
|
+
]
|
|
65
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"batch_id": "verified-2",
|
|
3
|
+
"verifications": [
|
|
4
|
+
{
|
|
5
|
+
"finding_id": "BOLA-R-0006",
|
|
6
|
+
"verdict": "likely",
|
|
7
|
+
"reason_code": "code_not_visible",
|
|
8
|
+
"confidence": "medium",
|
|
9
|
+
"checked": [
|
|
10
|
+
"coldfusion/app/order.cfm lines 1-10"
|
|
11
|
+
],
|
|
12
|
+
"control_found": null,
|
|
13
|
+
"notes": "The code shows a query that selects an order by id without a user filter and outputs that result. No ownership or role check is present before the output. The second query that includes a user_id filter is not used. No compensating control is visible in the provided context."
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"finding_id": "BOLA-R-0007",
|
|
17
|
+
"verdict": "likely",
|
|
18
|
+
"reason_code": "code_not_visible",
|
|
19
|
+
"confidence": "medium",
|
|
20
|
+
"checked": [
|
|
21
|
+
"dotnet-legacy/Web/Controllers/AdminController.cs lines 6-18"
|
|
22
|
+
],
|
|
23
|
+
"control_found": null,
|
|
24
|
+
"notes": "The DeleteUser action is protected only by a generic [Authorize] attribute, allowing any authenticated user to delete any user. No role or ownership check is present in the visible code."
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"finding_id": "BOLA-R-0009",
|
|
28
|
+
"verdict": "likely",
|
|
29
|
+
"reason_code": "code_not_visible",
|
|
30
|
+
"confidence": "medium",
|
|
31
|
+
"checked": [
|
|
32
|
+
"dotnet-legacy/Web/Controllers/AdminController.cs lines 30-37"
|
|
33
|
+
],
|
|
34
|
+
"control_found": null,
|
|
35
|
+
"notes": "The Export action checks a query string parameter for \"isAdmin\" but does not enforce an admin role or any ownership check. The control is not visible in the provided context."
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"finding_id": "BOLA-R-0013",
|
|
39
|
+
"verdict": "likely",
|
|
40
|
+
"reason_code": "code_not_visible",
|
|
41
|
+
"confidence": "medium",
|
|
42
|
+
"checked": [
|
|
43
|
+
"dotnet-legacy/Web/Controllers/InvoiceController.cs lines 6-15"
|
|
44
|
+
],
|
|
45
|
+
"control_found": null,
|
|
46
|
+
"notes": "The Details action retrieves an invoice by id without verifying that the invoice belongs to the current user. Only a generic [Authorize] attribute is present. No ownership check is visible."
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"finding_id": "BOLA-R-0015",
|
|
50
|
+
"verdict": "likely",
|
|
51
|
+
"reason_code": "code_not_visible",
|
|
52
|
+
"confidence": "medium",
|
|
53
|
+
"checked": [
|
|
54
|
+
"dotnet-legacy/Web/Controllers/InvoiceController.cs lines 25-30"
|
|
55
|
+
],
|
|
56
|
+
"control_found": null,
|
|
57
|
+
"notes": "The Search action performs a raw SQL query that returns all invoices for a given customer without filtering by the current user. No ownership or role check is present in the visible code."
|
|
58
|
+
}
|
|
59
|
+
]
|
|
60
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"batch_id": "verified-20",
|
|
3
|
+
"verifications": [
|
|
4
|
+
{
|
|
5
|
+
"finding_id": "MASS-M-0003-1",
|
|
6
|
+
"verdict": "likely",
|
|
7
|
+
"reason_code": "code_not_visible",
|
|
8
|
+
"confidence": "medium",
|
|
9
|
+
"checked": [
|
|
10
|
+
"java-legacy/src/com/acme/web/AccountController.java lines 13-15"
|
|
11
|
+
],
|
|
12
|
+
"control_found": null,
|
|
13
|
+
"notes": "The controller binds the entire Account object via @ModelAttribute and persists it without any visible ownership or role check in the provided code."
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"finding_id": "MASS-M-0004-1",
|
|
17
|
+
"verdict": "likely",
|
|
18
|
+
"reason_code": "code_not_visible",
|
|
19
|
+
"confidence": "medium",
|
|
20
|
+
"checked": [
|
|
21
|
+
"java-legacy/src/com/acme/web/AccountController.java lines 25-28"
|
|
22
|
+
],
|
|
23
|
+
"control_found": null,
|
|
24
|
+
"notes": "The update method accepts a full Account object via @RequestBody and saves it directly, with no ownership or role guard shown."
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"finding_id": "MASS-M-0005-1",
|
|
28
|
+
"verdict": "likely",
|
|
29
|
+
"reason_code": "code_not_visible",
|
|
30
|
+
"confidence": "medium",
|
|
31
|
+
"checked": [
|
|
32
|
+
"java-legacy/src/com/acme/web/ProfileServlet.java lines 10-13"
|
|
33
|
+
],
|
|
34
|
+
"control_found": null,
|
|
35
|
+
"notes": "BeanUtils.populate binds all request parameters to the Account object and the DAO persists it without any visible privilege check."
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"finding_id": "MASS-M-0011-verdict",
|
|
39
|
+
"verdict": "likely",
|
|
40
|
+
"reason_code": "code_not_visible",
|
|
41
|
+
"confidence": "medium",
|
|
42
|
+
"checked": [
|
|
43
|
+
"php-plain/profile.php lines 6-8"
|
|
44
|
+
],
|
|
45
|
+
"control_found": null,
|
|
46
|
+
"notes": "The code iterates over $_POST and assigns each field to the user object; no ownership or role validation is present in the visible snippet."
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"finding_id": "MASS-M-0012-verdict",
|
|
50
|
+
"verdict": "likely",
|
|
51
|
+
"reason_code": "code_not_visible",
|
|
52
|
+
"confidence": "medium",
|
|
53
|
+
"checked": [
|
|
54
|
+
"php-plain/profile.php line 10"
|
|
55
|
+
],
|
|
56
|
+
"control_found": null,
|
|
57
|
+
"notes": "Explicit assignment of the role field from $_POST occurs without any guard; the snippet shows no ownership check."
|
|
58
|
+
}
|
|
59
|
+
]
|
|
60
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
{
|
|
2
|
+
"batch_id": "verified-21",
|
|
3
|
+
"verifications": [
|
|
4
|
+
{
|
|
5
|
+
"finding_id": "MASS-M-0001-verdict",
|
|
6
|
+
"verdict": "likely",
|
|
7
|
+
"reason_code": "code_not_visible",
|
|
8
|
+
"confidence": "medium",
|
|
9
|
+
"checked": [
|
|
10
|
+
"dotnet-legacy/Web/Controllers/CustomerController.cs:12-15"
|
|
11
|
+
],
|
|
12
|
+
"control_found": null,
|
|
13
|
+
"notes": "The Edit action accepts a full Customer model and persists it without any ownership or allow\u2011list checks. No role or ownership guard is visible in the provided code."
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"finding_id": "MASS-M-0002-verdict",
|
|
17
|
+
"verdict": "likely",
|
|
18
|
+
"reason_code": "code_not_visible",
|
|
19
|
+
"confidence": "medium",
|
|
20
|
+
"checked": [
|
|
21
|
+
"dotnet-legacy/Web/Controllers/CustomerController.cs:27-31"
|
|
22
|
+
],
|
|
23
|
+
"control_found": null,
|
|
24
|
+
"notes": "TryUpdateModel binds all request parameters to the Customer entity, and there is no visible ownership or allow\u2011list enforcement before saving."
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"finding_id": "MASS-M-0008-1",
|
|
28
|
+
"verdict": "likely",
|
|
29
|
+
"reason_code": "code_not_visible",
|
|
30
|
+
"confidence": "medium",
|
|
31
|
+
"checked": [
|
|
32
|
+
"php-laravel/app/Http/Controllers/AccountController.php:11-14",
|
|
33
|
+
"php-laravel/app/Models/User.php:6-9"
|
|
34
|
+
],
|
|
35
|
+
"control_found": null,
|
|
36
|
+
"notes": "User::create($request->all()) uses a model with $guarded = [], allowing all attributes\u2014including 'role'\u2014to be mass\u2011assigned. No server\u2011side role assignment or guard is present."
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"finding_id": "MASS-M-0009-1",
|
|
40
|
+
"verdict": "likely",
|
|
41
|
+
"reason_code": "code_not_visible",
|
|
42
|
+
"confidence": "medium",
|
|
43
|
+
"checked": [
|
|
44
|
+
"php-laravel/app/Http/Controllers/AccountController.php:21-24",
|
|
45
|
+
"php-laravel/app/Models/Team.php:6-9"
|
|
46
|
+
],
|
|
47
|
+
"control_found": null,
|
|
48
|
+
"notes": "Team::create($request->all()) allows 'owner_id' to be set via the request. No server\u2011side assignment of the current user\u2019s ID is performed."
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"finding_id": "MASS-M-0006-verdict",
|
|
52
|
+
"verdict": "likely",
|
|
53
|
+
"reason_code": "code_not_visible",
|
|
54
|
+
"confidence": "medium",
|
|
55
|
+
"checked": [
|
|
56
|
+
"node-express/routes/profile.js:7-9"
|
|
57
|
+
],
|
|
58
|
+
"control_found": null,
|
|
59
|
+
"notes": "User.findByIdAndUpdate(req.user._id, req.body, ...) updates the user document with the entire request body, exposing all fields to client manipulation. No allow\u2011list or role guard is visible."
|
|
60
|
+
}
|
|
61
|
+
]
|
|
62
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
{
|
|
2
|
+
"batch_id": "verified-22",
|
|
3
|
+
"verifications": [
|
|
4
|
+
{
|
|
5
|
+
"finding_id": "MASS-M-0007-verdict",
|
|
6
|
+
"verdict": "likely",
|
|
7
|
+
"reason_code": "code_not_visible",
|
|
8
|
+
"confidence": "medium",
|
|
9
|
+
"checked": [
|
|
10
|
+
"node-express/routes/profile.js lines 7-9",
|
|
11
|
+
"node-express/routes/profile.js line 16"
|
|
12
|
+
],
|
|
13
|
+
"control_found": null,
|
|
14
|
+
"notes": "The route updates the user document with the entire request body via `User.findByIdAndUpdate(req.user._id, req.body)`. No allow\u2011list, role, or ownership check is visible in the provided snippet. The code that might restrict fields (e.g., a Mongoose schema with `select: false` or a middleware that sanitizes `req.body`) is not shown, so the mass assignment remains unverified."
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"finding_id": "MASS-M-0010-verdict",
|
|
18
|
+
"verdict": "likely",
|
|
19
|
+
"reason_code": "code_not_visible",
|
|
20
|
+
"confidence": "medium",
|
|
21
|
+
"checked": [
|
|
22
|
+
"php-laravel/app/Http/Controllers/AccountController.php lines 33-37"
|
|
23
|
+
],
|
|
24
|
+
"control_found": null,
|
|
25
|
+
"notes": "The controller calls `$user->fill($request->all())->save()`, which performs whole\u2011object binding. Laravel protects against mass assignment via `$fillable` or `$guarded` properties on the model, but the model definition is not part of the provided context. Without visibility of those properties, the assignment cannot be confirmed safe."
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"finding_id": "MASS-M-0015-verdict",
|
|
29
|
+
"verdict": "likely",
|
|
30
|
+
"reason_code": "code_not_visible",
|
|
31
|
+
"confidence": "medium",
|
|
32
|
+
"checked": [
|
|
33
|
+
"python-flask/profile.py lines 24-30"
|
|
34
|
+
],
|
|
35
|
+
"control_found": null,
|
|
36
|
+
"notes": "The PATCH route iterates over all keys in `request.json` and sets them on the user object. No allow\u2011list or ownership check is present in the snippet. The model\u2019s column restrictions or any request validation are not shown, so the mass assignment remains unverified."
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"finding_id": "MASS-M-0014-verdict",
|
|
40
|
+
"verdict": "likely",
|
|
41
|
+
"reason_code": "code_not_visible",
|
|
42
|
+
"confidence": "medium",
|
|
43
|
+
"checked": [
|
|
44
|
+
"python-flask/profile.py lines 8-13"
|
|
45
|
+
],
|
|
46
|
+
"control_found": null,
|
|
47
|
+
"notes": "The POST `/users` route creates a new `User` by unpacking `request.json` directly into the model constructor (`User(**request.json)`). No field filtering or validation is visible in the snippet. The model\u2019s schema or any request\u2011validation middleware is not part of the provided context."
|
|
48
|
+
}
|
|
49
|
+
]
|
|
50
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"batch_id": "verified-3",
|
|
3
|
+
"verifications": [
|
|
4
|
+
{
|
|
5
|
+
"finding_id": "BOLA-R-0017",
|
|
6
|
+
"verdict": "likely",
|
|
7
|
+
"reason_code": "code_not_visible",
|
|
8
|
+
"confidence": "medium",
|
|
9
|
+
"checked": [
|
|
10
|
+
"dotnet-legacy/Web/Orders/EditOrder.aspx.vb"
|
|
11
|
+
],
|
|
12
|
+
"control_found": null,
|
|
13
|
+
"notes": "The code_context shows a direct string concatenation of the order ID and note into an UPDATE statement with no visible ownership check, cast, or parameter binding. No role or ownership guard is present in the shown snippet."
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"finding_id": "BOLA-R-0018",
|
|
17
|
+
"verdict": "likely",
|
|
18
|
+
"reason_code": "code_not_visible",
|
|
19
|
+
"confidence": "medium",
|
|
20
|
+
"checked": [
|
|
21
|
+
"dotnet-legacy/Web/Orders/OrderDetail.aspx.cs"
|
|
22
|
+
],
|
|
23
|
+
"control_found": null,
|
|
24
|
+
"notes": "The unsafe SELECT query concatenates the order ID directly into the SQL and is executed. The subsequent safe query with user ID is defined but not used. No ownership check is visible in the executed path."
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"finding_id": "BOLA-R-0019",
|
|
28
|
+
"verdict": "likely",
|
|
29
|
+
"reason_code": "code_not_visible",
|
|
30
|
+
"confidence": "medium",
|
|
31
|
+
"checked": [
|
|
32
|
+
"java-legacy/WebContent/order/detail.jsp"
|
|
33
|
+
],
|
|
34
|
+
"control_found": null,
|
|
35
|
+
"notes": "The JSP concatenates the request parameter into a SELECT statement without any ownership filtering, cast, or parameter binding. No role or ownership guard is present in the snippet."
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"finding_id": "BOLA-R-0020",
|
|
39
|
+
"verdict": "likely",
|
|
40
|
+
"reason_code": "code_not_visible",
|
|
41
|
+
"confidence": "medium",
|
|
42
|
+
"checked": [
|
|
43
|
+
"java-legacy/src/com/acme/web/AccountController.java"
|
|
44
|
+
],
|
|
45
|
+
"control_found": null,
|
|
46
|
+
"notes": "The controller directly calls accountDao.save(account) without checking that the current user owns the account. No ownership or role check is visible in the snippet."
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"finding_id": "BOLA-R-0021",
|
|
50
|
+
"verdict": "likely",
|
|
51
|
+
"reason_code": "code_not_visible",
|
|
52
|
+
"confidence": "medium",
|
|
53
|
+
"checked": [
|
|
54
|
+
"java-legacy/src/com/acme/web/AccountController.java"
|
|
55
|
+
],
|
|
56
|
+
"control_found": null,
|
|
57
|
+
"notes": "The rename operation is performed on any account ID without verifying ownership. No ownership or role check is visible in the snippet."
|
|
58
|
+
}
|
|
59
|
+
]
|
|
60
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"batch_id": "verified-4",
|
|
3
|
+
"verifications": [
|
|
4
|
+
{
|
|
5
|
+
"finding_id": "BOLA-R-0022",
|
|
6
|
+
"verdict": "likely",
|
|
7
|
+
"reason_code": "code_not_visible",
|
|
8
|
+
"confidence": "medium",
|
|
9
|
+
"checked": [
|
|
10
|
+
"AccountController.update method in java-legacy/src/com/acme/web/AccountController.java"
|
|
11
|
+
],
|
|
12
|
+
"control_found": null,
|
|
13
|
+
"notes": "The update method simply calls accountDao.save(account) with no visible ownership or role check. No global filter or middleware is shown in the provided context."
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"finding_id": "BOLA-R-0023",
|
|
17
|
+
"verdict": "likely",
|
|
18
|
+
"reason_code": "code_not_visible",
|
|
19
|
+
"confidence": "medium",
|
|
20
|
+
"checked": [
|
|
21
|
+
"AdminUserController.delete method in java-legacy/src/com/acme/web/AdminUserController.java"
|
|
22
|
+
],
|
|
23
|
+
"control_found": null,
|
|
24
|
+
"notes": "The delete method invokes userDao.deleteById(id) without any role or ownership guard in the visible code. No other checks are shown."
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"finding_id": "BOLA-R-0024",
|
|
28
|
+
"verdict": "confirmed",
|
|
29
|
+
"reason_code": "traced",
|
|
30
|
+
"confidence": "high",
|
|
31
|
+
"checked": [
|
|
32
|
+
"AdminUserController.delete method in java-legacy/src/com/acme/web/AdminUserController.java"
|
|
33
|
+
],
|
|
34
|
+
"control_found": null,
|
|
35
|
+
"notes": "The method lacks an ownership check; only a role guard is present on the adjacent method. Therefore the missing ownership verification is confirmed."
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"finding_id": "BOLA-R-0025",
|
|
39
|
+
"verdict": "likely",
|
|
40
|
+
"reason_code": "code_not_visible",
|
|
41
|
+
"confidence": "medium",
|
|
42
|
+
"checked": [
|
|
43
|
+
"InvoiceController.show method in java-legacy/src/com/acme/web/InvoiceController.java"
|
|
44
|
+
],
|
|
45
|
+
"control_found": null,
|
|
46
|
+
"notes": "The show method retrieves an invoice by ID without any ownership filter. No role guard or other checks are visible in the context."
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"finding_id": "BOLA-R-0027",
|
|
50
|
+
"verdict": "likely",
|
|
51
|
+
"reason_code": "code_not_visible",
|
|
52
|
+
"confidence": "medium",
|
|
53
|
+
"checked": [
|
|
54
|
+
"InvoiceController.search method in java-legacy/src/com/acme/web/InvoiceController.java"
|
|
55
|
+
],
|
|
56
|
+
"control_found": null,
|
|
57
|
+
"notes": "The search method builds a query using the customer parameter directly, with no ownership or role guard shown."
|
|
58
|
+
}
|
|
59
|
+
]
|
|
60
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"batch_id": "verified-5",
|
|
3
|
+
"verifications": [
|
|
4
|
+
{
|
|
5
|
+
"finding_id": "BOLA-R-0028",
|
|
6
|
+
"verdict": "confirmed",
|
|
7
|
+
"reason_code": "traced",
|
|
8
|
+
"confidence": "high",
|
|
9
|
+
"checked": [
|
|
10
|
+
"java-legacy/src/com/acme/web/OrderServlet.java lines 13-15"
|
|
11
|
+
],
|
|
12
|
+
"control_found": null,
|
|
13
|
+
"notes": "The query selects the order by id without any user or tenant filter, and no ownership check is performed before the result is used."
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"finding_id": "BOLA-R-0030",
|
|
17
|
+
"verdict": "confirmed",
|
|
18
|
+
"reason_code": "traced",
|
|
19
|
+
"confidence": "high",
|
|
20
|
+
"checked": [
|
|
21
|
+
"node-express/routes/admin.js lines 8-9"
|
|
22
|
+
],
|
|
23
|
+
"control_found": null,
|
|
24
|
+
"notes": "The delete route only requires authentication but does not enforce an admin role or check that the target user is not the current user."
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"finding_id": "BOLA-R-0033",
|
|
28
|
+
"verdict": "confirmed",
|
|
29
|
+
"reason_code": "traced",
|
|
30
|
+
"confidence": "high",
|
|
31
|
+
"checked": [
|
|
32
|
+
"node-express/routes/orders.js lines 8-9"
|
|
33
|
+
],
|
|
34
|
+
"control_found": null,
|
|
35
|
+
"notes": "Order retrieval is performed solely by id with no filter on the current user, exposing all orders."
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"finding_id": "BOLA-R-0043",
|
|
39
|
+
"verdict": "confirmed",
|
|
40
|
+
"reason_code": "traced",
|
|
41
|
+
"confidence": "high",
|
|
42
|
+
"checked": [
|
|
43
|
+
"perl-cgi/cgi-bin/order.cgi lines 13-14"
|
|
44
|
+
],
|
|
45
|
+
"control_found": null,
|
|
46
|
+
"notes": "The first query selects an order by id without a user filter; the subsequent query that includes user_id does not mitigate the vulnerability."
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"finding_id": "BOLA-R-0044",
|
|
50
|
+
"verdict": "confirmed",
|
|
51
|
+
"reason_code": "traced",
|
|
52
|
+
"confidence": "high",
|
|
53
|
+
"checked": [
|
|
54
|
+
"php-codeigniter/application/controllers/Invoice.php lines 9-10"
|
|
55
|
+
],
|
|
56
|
+
"control_found": null,
|
|
57
|
+
"notes": "The view method queries invoices by id only, without verifying that the invoice belongs to the current user."
|
|
58
|
+
}
|
|
59
|
+
]
|
|
60
|
+
}
|