@hoanghainh/komagu 2.5.0 → 2.6.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.
- package/CHANGELOG.md +30 -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/examples/member-portal/backend-dotnet/Auth/DemoAuthenticationHandler.cs +75 -0
- package/examples/member-portal/backend-dotnet/Program.cs +1 -72
- package/examples/member-portal/backend-spring/src/main/kotlin/io/komagu/portal/Application.kt +4 -0
- package/examples/member-portal/backend-spring/src/main/kotlin/io/komagu/portal/controller/Controllers.kt +3 -0
- package/examples/member-portal/backend-spring/src/main/kotlin/io/komagu/portal/model/Entities.kt +4 -0
- package/examples/member-portal/tests/test_d6_demo_app.py +4 -4
- package/examples/member-portal/tests/test_d6_remediation_verification.py +6 -6
- package/operate/ai/client.py +27 -10
- package/operate/ai/runner.py +4 -2
- package/operate/cli/__init__.py +1 -1
- package/operate/cli/commands/scan.py +8 -1
- package/operate/cross_user_tester/runner.py +4 -1
- package/operate/devsecops/sbom.py +12 -4
- package/operate/simulate/scenarios.py +11 -2
- package/operate/tests/test_ai_reasoning_effort.py +65 -0
- package/operate/tests/test_ai_route_inventory.py +53 -0
- package/operate/tests/test_audit_minimum_versions.py +89 -0
- package/operate/tests/test_cli.py +1 -1
- package/operate/tests/test_scheme_and_xml_guards.py +67 -0
- package/package.json +1 -1
- package/remediate/authz/dotnet/src/Komagu.Security.Authorization/LoggingSecurityAuditSink.cs +19 -3
- package/remediate/authz/golang/authz_test.go +5 -2
- package/remediate/authz/spring/src/main/kotlin/io/komagu/security/authorization/DefaultKomaguSecurityManager.kt +74 -78
- package/remediate/authz/spring/src/main/kotlin/io/komagu/security/spring/OwnershipAspect.kt +129 -158
- package/remediate/deps/patcher.py +2 -1
- package/remediate/edge/mock-backend/app.py +2 -1
- package/remediate/edge/tests/test_edge_security.py +5 -5
- package/remediate/ekyc/requirements.txt +1 -1
- package/remediate/identity/dotnet/src/Komagu.Security.Identity/OidcServiceCollectionExtensions.cs +19 -6
- package/remediate/identity/python/requirements.txt +2 -2
- package/remediate/identity/spring/src/main/kotlin/io/komagu/security/identity/KomaguIdentityAutoConfiguration.kt +31 -38
- package/remediate/legacy_shims/tests/test_legacy_shims.py +8 -8
- package/remediate/query/dotnet/src/Komagu.Security.Query/SafeSortAllowList.cs +5 -2
- package/remediate/query/spring/src/main/kotlin/io/komagu/security/query/SafeSortAllowList.kt +10 -11
- package/remediate/query/spring/src/main/kotlin/io/komagu/security/query/detekt/StringBuiltSqlQueryRule.kt +19 -24
|
@@ -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
|
+
"java-legacy/src/com/acme/web/AccountController.java lines 25-28"
|
|
11
|
+
],
|
|
12
|
+
"control_found": null,
|
|
13
|
+
"notes": "No ownership or role check is visible in the update method; the account is persisted directly from the request body."
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"finding_id": "BOLA-R-0023",
|
|
17
|
+
"verdict": "likely",
|
|
18
|
+
"reason_code": "code_not_visible",
|
|
19
|
+
"confidence": "medium",
|
|
20
|
+
"checked": [
|
|
21
|
+
"java-legacy/src/com/acme/web/AdminUserController.java lines 13-15"
|
|
22
|
+
],
|
|
23
|
+
"control_found": null,
|
|
24
|
+
"notes": "The delete action lacks any @PreAuthorize or explicit ownership check; the only role guard appears on a different method."
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"finding_id": "BOLA-R-0025",
|
|
28
|
+
"verdict": "likely",
|
|
29
|
+
"reason_code": "code_not_visible",
|
|
30
|
+
"confidence": "medium",
|
|
31
|
+
"checked": [
|
|
32
|
+
"java-legacy/src/com/acme/web/InvoiceController.java lines 15-18"
|
|
33
|
+
],
|
|
34
|
+
"control_found": null,
|
|
35
|
+
"notes": "The invoice is retrieved by ID without verifying that it belongs to the current user."
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"finding_id": "BOLA-R-0027",
|
|
39
|
+
"verdict": "likely",
|
|
40
|
+
"reason_code": "code_not_visible",
|
|
41
|
+
"confidence": "medium",
|
|
42
|
+
"checked": [
|
|
43
|
+
"java-legacy/src/com/acme/web/InvoiceController.java lines 27-30"
|
|
44
|
+
],
|
|
45
|
+
"control_found": null,
|
|
46
|
+
"notes": "The search query concatenates user input directly; no ownership filter or parameter binding is present."
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"finding_id": "BOLA-R-0028",
|
|
50
|
+
"verdict": "likely",
|
|
51
|
+
"reason_code": "code_not_visible",
|
|
52
|
+
"confidence": "medium",
|
|
53
|
+
"checked": [
|
|
54
|
+
"java-legacy/src/com/acme/web/OrderServlet.java lines 11-15"
|
|
55
|
+
],
|
|
56
|
+
"control_found": null,
|
|
57
|
+
"notes": "The order is fetched by ID from the request without any check that the logged\u2011in user owns it."
|
|
58
|
+
}
|
|
59
|
+
]
|
|
60
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"batch_id": "verified-5",
|
|
3
|
+
"verifications": [
|
|
4
|
+
{
|
|
5
|
+
"finding_id": "BOLA-R-0030",
|
|
6
|
+
"verdict": "likely",
|
|
7
|
+
"reason_code": "code_not_visible",
|
|
8
|
+
"confidence": "medium",
|
|
9
|
+
"checked": [
|
|
10
|
+
"node-express/routes/admin.js:8-10"
|
|
11
|
+
],
|
|
12
|
+
"control_found": null,
|
|
13
|
+
"notes": "The route handler only checks that a user is logged in via `ensureLoggedIn`. No role check (`requireAdmin`) or ownership verification is present in the visible code. Therefore a compensating control is not observable."
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"finding_id": "BOLA-R-0033",
|
|
17
|
+
"verdict": "likely",
|
|
18
|
+
"reason_code": "code_not_visible",
|
|
19
|
+
"confidence": "medium",
|
|
20
|
+
"checked": [
|
|
21
|
+
"node-express/routes/orders.js:8-10"
|
|
22
|
+
],
|
|
23
|
+
"control_found": null,
|
|
24
|
+
"notes": "The handler retrieves an order by ID without filtering on the authenticated user. No ownership check or role guard is visible in the provided snippet."
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"finding_id": "BOLA-R-0043",
|
|
28
|
+
"verdict": "likely",
|
|
29
|
+
"reason_code": "code_not_visible",
|
|
30
|
+
"confidence": "medium",
|
|
31
|
+
"checked": [
|
|
32
|
+
"perl-cgi/cgi-bin/order.cgi:13-15"
|
|
33
|
+
],
|
|
34
|
+
"control_found": null,
|
|
35
|
+
"notes": "The first prepared statement selects `orders` solely by `id` and is executed immediately. Although a second query later includes `user_id`, the initial query is still vulnerable. No ownership guard is present in the shown code."
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"finding_id": "BOLA-R-0044",
|
|
39
|
+
"verdict": "likely",
|
|
40
|
+
"reason_code": "code_not_visible",
|
|
41
|
+
"confidence": "medium",
|
|
42
|
+
"checked": [
|
|
43
|
+
"php-codeigniter/application/controllers/Invoice.php:10-12"
|
|
44
|
+
],
|
|
45
|
+
"control_found": null,
|
|
46
|
+
"notes": "The `view` method runs a raw query against `invoices` using the supplied `id` without scoping to the current user. No ownership check is visible."
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"finding_id": "BOLA-R-0046",
|
|
50
|
+
"verdict": "likely",
|
|
51
|
+
"reason_code": "code_not_visible",
|
|
52
|
+
"confidence": "medium",
|
|
53
|
+
"checked": [
|
|
54
|
+
"php-codeigniter/application/controllers/Invoice.php:23-24"
|
|
55
|
+
],
|
|
56
|
+
"control_found": null,
|
|
57
|
+
"notes": "The `update` method updates an invoice by `id` without verifying that the invoice belongs to the authenticated user. No ownership guard is present in the snippet."
|
|
58
|
+
}
|
|
59
|
+
]
|
|
60
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
{
|
|
2
|
+
"batch_id": "verified-6",
|
|
3
|
+
"verifications": [
|
|
4
|
+
{
|
|
5
|
+
"finding_id": "BOLA-R-0057-1",
|
|
6
|
+
"verdict": "likely",
|
|
7
|
+
"reason_code": "code_not_visible",
|
|
8
|
+
"confidence": "medium",
|
|
9
|
+
"checked": [
|
|
10
|
+
"php-plain/admin.php lines 5-9",
|
|
11
|
+
"php-plain/inc/auth.php lines 1-7",
|
|
12
|
+
"php-plain/inc/db.php lines 1-4"
|
|
13
|
+
],
|
|
14
|
+
"control_found": null,
|
|
15
|
+
"notes": "The code shows a direct lookup of a user by id from the request with no ownership or role check. No global filter or other control is visible in the provided context."
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"finding_id": "BOLA-R-0057-2",
|
|
19
|
+
"verdict": "likely",
|
|
20
|
+
"reason_code": "code_not_visible",
|
|
21
|
+
"confidence": "medium",
|
|
22
|
+
"checked": [
|
|
23
|
+
"php-plain/admin.php lines 10-13",
|
|
24
|
+
"php-plain/inc/auth.php lines 1-7",
|
|
25
|
+
"php-plain/inc/db.php lines 1-4"
|
|
26
|
+
],
|
|
27
|
+
"control_found": null,
|
|
28
|
+
"notes": "The delete action uses the id from the request without any ownership or role verification. No compensating control is shown."
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"finding_id": "BOLA-R-0058-1",
|
|
32
|
+
"verdict": "likely",
|
|
33
|
+
"reason_code": "code_not_visible",
|
|
34
|
+
"confidence": "medium",
|
|
35
|
+
"checked": [
|
|
36
|
+
"php-plain/admin.php lines 10-13",
|
|
37
|
+
"php-plain/inc/auth.php lines 1-7",
|
|
38
|
+
"php-plain/inc/db.php lines 1-4"
|
|
39
|
+
],
|
|
40
|
+
"control_found": null,
|
|
41
|
+
"notes": "Same as BOLA-R-0057-2: no ownership or role check is present in the visible code."
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"finding_id": "BOLA-R-0066-1",
|
|
45
|
+
"verdict": "likely",
|
|
46
|
+
"reason_code": "code_not_visible",
|
|
47
|
+
"confidence": "medium",
|
|
48
|
+
"checked": [
|
|
49
|
+
"php-plain/admin/delete_user.php lines 5-7",
|
|
50
|
+
"php-plain/inc/auth.php lines 1-7",
|
|
51
|
+
"php-plain/inc/db.php lines 1-4"
|
|
52
|
+
],
|
|
53
|
+
"control_found": null,
|
|
54
|
+
"notes": "The delete query uses a bound parameter but does not restrict by the current user. No ownership or role check is visible."
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"finding_id": "BOLA-R-0067-1",
|
|
58
|
+
"verdict": "likely",
|
|
59
|
+
"reason_code": "code_not_visible",
|
|
60
|
+
"confidence": "medium",
|
|
61
|
+
"checked": [
|
|
62
|
+
"php-plain/admin/promote.php lines 5-7",
|
|
63
|
+
"php-plain/inc/auth.php lines 1-7",
|
|
64
|
+
"php-plain/inc/db.php lines 1-4"
|
|
65
|
+
],
|
|
66
|
+
"control_found": null,
|
|
67
|
+
"notes": "The promotion logic checks a request parameter but does not verify that the requester owns the target user or has an admin role. No compensating control is shown."
|
|
68
|
+
}
|
|
69
|
+
]
|
|
70
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"batch_id": "verified-7",
|
|
3
|
+
"verifications": [
|
|
4
|
+
{
|
|
5
|
+
"finding_id": "BOLA-R-0059-1",
|
|
6
|
+
"verdict": "confirmed",
|
|
7
|
+
"reason_code": "traced",
|
|
8
|
+
"confidence": "high",
|
|
9
|
+
"checked": [
|
|
10
|
+
"php-plain/manage_users.php:5-8"
|
|
11
|
+
],
|
|
12
|
+
"control_found": null,
|
|
13
|
+
"notes": "The POST handler deletes a user by id without any role or ownership check. The only role check is in the HTML link, not in the request handling code."
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"finding_id": "BOLA-R-0061-1",
|
|
17
|
+
"verdict": "confirmed",
|
|
18
|
+
"reason_code": "traced",
|
|
19
|
+
"confidence": "high",
|
|
20
|
+
"checked": [
|
|
21
|
+
"php-plain/order_detail.php:5-6"
|
|
22
|
+
],
|
|
23
|
+
"control_found": null,
|
|
24
|
+
"notes": "The query selects an order by id without scoping to the current user and no ownership check is present."
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"finding_id": "BOLA-R-0069-1",
|
|
28
|
+
"verdict": "confirmed",
|
|
29
|
+
"reason_code": "traced",
|
|
30
|
+
"confidence": "high",
|
|
31
|
+
"checked": [
|
|
32
|
+
"python-flask/app.py:8-13"
|
|
33
|
+
],
|
|
34
|
+
"control_found": null,
|
|
35
|
+
"notes": "The route '/orders/<int:order_id>' retrieves an order by id without filtering by user_id. The only ownership check is in the '/orders/mine/<int:order_id>' route."
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"finding_id": "BOLA-R-0055-verdict",
|
|
39
|
+
"verdict": "likely",
|
|
40
|
+
"reason_code": "code_not_visible",
|
|
41
|
+
"confidence": "medium",
|
|
42
|
+
"checked": [
|
|
43
|
+
"php-laravel/routes/web.php:6-9"
|
|
44
|
+
],
|
|
45
|
+
"control_found": null,
|
|
46
|
+
"notes": "The route definition is shown, but the controller implementation is not visible in the provided context, so ownership checks cannot be confirmed or denied."
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"finding_id": "BOLA-R-0056-verdict",
|
|
50
|
+
"verdict": "likely",
|
|
51
|
+
"reason_code": "code_not_visible",
|
|
52
|
+
"confidence": "medium",
|
|
53
|
+
"checked": [
|
|
54
|
+
"php-laravel/routes/web.php:6-10"
|
|
55
|
+
],
|
|
56
|
+
"control_found": null,
|
|
57
|
+
"notes": "Only the route definition is visible; the controller logic that might enforce ownership is not shown."
|
|
58
|
+
}
|
|
59
|
+
]
|
|
60
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"batch_id": "verified-8",
|
|
3
|
+
"verifications": [
|
|
4
|
+
{
|
|
5
|
+
"finding_id": "BOLA-R-0052-verdict",
|
|
6
|
+
"verdict": "likely",
|
|
7
|
+
"reason_code": "code_not_visible",
|
|
8
|
+
"confidence": "medium",
|
|
9
|
+
"checked": [
|
|
10
|
+
"php-laravel/routes/web.php line 6"
|
|
11
|
+
],
|
|
12
|
+
"control_found": null,
|
|
13
|
+
"notes": "The route definition does not show any ownership or role check. No ownership verification is visible in the provided code context."
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"finding_id": "BOLA-R-0053-verdict",
|
|
17
|
+
"verdict": "likely",
|
|
18
|
+
"reason_code": "code_not_visible",
|
|
19
|
+
"confidence": "medium",
|
|
20
|
+
"checked": [
|
|
21
|
+
"php-laravel/routes/web.php line 7"
|
|
22
|
+
],
|
|
23
|
+
"control_found": null,
|
|
24
|
+
"notes": "The route definition does not contain any ownership or role check. No ownership verification is visible in the provided code context."
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"finding_id": "BOLA-R-0054-verdict",
|
|
28
|
+
"verdict": "likely",
|
|
29
|
+
"reason_code": "code_not_visible",
|
|
30
|
+
"confidence": "medium",
|
|
31
|
+
"checked": [
|
|
32
|
+
"php-laravel/routes/web.php line 8"
|
|
33
|
+
],
|
|
34
|
+
"control_found": null,
|
|
35
|
+
"notes": "The route definition does not contain any ownership or role check. No ownership verification is visible in the provided code context."
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"finding_id": "BOLA-R-0073",
|
|
39
|
+
"verdict": "confirmed",
|
|
40
|
+
"reason_code": "traced",
|
|
41
|
+
"confidence": "high",
|
|
42
|
+
"checked": [
|
|
43
|
+
"python-flask/profile.py lines 16-20"
|
|
44
|
+
],
|
|
45
|
+
"control_found": null,
|
|
46
|
+
"notes": "The function loads a User by uid and updates the name without any ownership check or role verification. No compensating control is present in the visible code."
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"finding_id": "BOLA-R-0074",
|
|
50
|
+
"verdict": "confirmed",
|
|
51
|
+
"reason_code": "traced",
|
|
52
|
+
"confidence": "high",
|
|
53
|
+
"checked": [
|
|
54
|
+
"python-flask/profile.py lines 24-30"
|
|
55
|
+
],
|
|
56
|
+
"control_found": null,
|
|
57
|
+
"notes": "The function loads a User by uid and applies arbitrary updates without verifying that the current user owns the record. No compensating control is present in the visible code."
|
|
58
|
+
}
|
|
59
|
+
]
|
|
60
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"batch_id": "verified-9",
|
|
3
|
+
"verifications": [
|
|
4
|
+
{
|
|
5
|
+
"finding_id": "BOLA-R-0010",
|
|
6
|
+
"verdict": "likely",
|
|
7
|
+
"reason_code": "code_not_visible",
|
|
8
|
+
"confidence": "medium",
|
|
9
|
+
"checked": [
|
|
10
|
+
"Reviewed CustomerController.cs lines 11-16"
|
|
11
|
+
],
|
|
12
|
+
"control_found": null,
|
|
13
|
+
"notes": "No ownership check, cast, or allow\u2011list is visible in the method body."
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"finding_id": "BOLA-R-0011",
|
|
17
|
+
"verdict": "likely",
|
|
18
|
+
"reason_code": "code_not_visible",
|
|
19
|
+
"confidence": "medium",
|
|
20
|
+
"checked": [
|
|
21
|
+
"Reviewed CustomerController.cs lines 20-23"
|
|
22
|
+
],
|
|
23
|
+
"control_found": null,
|
|
24
|
+
"notes": "The method only calls SaveChanges(); no ownership verification is shown."
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"finding_id": "BOLA-R-0012",
|
|
28
|
+
"verdict": "likely",
|
|
29
|
+
"reason_code": "code_not_visible",
|
|
30
|
+
"confidence": "medium",
|
|
31
|
+
"checked": [
|
|
32
|
+
"Reviewed CustomerController.cs lines 27-32"
|
|
33
|
+
],
|
|
34
|
+
"control_found": null,
|
|
35
|
+
"notes": "Customer is loaded by id and updated without any ownership check in the visible code."
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"finding_id": "BOLA-R-0016",
|
|
39
|
+
"verdict": "likely",
|
|
40
|
+
"reason_code": "code_not_visible",
|
|
41
|
+
"confidence": "medium",
|
|
42
|
+
"checked": [
|
|
43
|
+
"Reviewed GetFile.ashx lines 8-10"
|
|
44
|
+
],
|
|
45
|
+
"control_found": null,
|
|
46
|
+
"notes": "File ID is taken directly from the query string and used to transmit a file; no ownership guard is present."
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"finding_id": "BOLA-R-0029",
|
|
50
|
+
"verdict": "likely",
|
|
51
|
+
"reason_code": "code_not_visible",
|
|
52
|
+
"confidence": "medium",
|
|
53
|
+
"checked": [
|
|
54
|
+
"Reviewed ProfileServlet.java lines 9-13"
|
|
55
|
+
],
|
|
56
|
+
"control_found": null,
|
|
57
|
+
"notes": "Account object is populated from request parameters without any ownership validation in the shown code."
|
|
58
|
+
}
|
|
59
|
+
]
|
|
60
|
+
}
|