@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,69 @@
|
|
|
1
|
+
{
|
|
2
|
+
"batch_id": "verified-15",
|
|
3
|
+
"verifications": [
|
|
4
|
+
{
|
|
5
|
+
"finding_id": "INJ-I-0031",
|
|
6
|
+
"verdict": "confirmed",
|
|
7
|
+
"reason_code": "traced",
|
|
8
|
+
"confidence": "high",
|
|
9
|
+
"checked": [
|
|
10
|
+
"php-plain/order_detail.php:5-6",
|
|
11
|
+
"php-plain/inc/auth.php:3-6",
|
|
12
|
+
"php-plain/inc/db.php:1-4"
|
|
13
|
+
],
|
|
14
|
+
"control_found": null,
|
|
15
|
+
"notes": "The GET parameter is concatenated directly into a mysql_query without any sanitization, casting, or prepared statement. No ownership or role check is present."
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"finding_id": "INJ-I-0032",
|
|
19
|
+
"verdict": "confirmed",
|
|
20
|
+
"reason_code": "traced",
|
|
21
|
+
"confidence": "high",
|
|
22
|
+
"checked": [
|
|
23
|
+
"php-plain/search.php:6-9",
|
|
24
|
+
"php-plain/inc/auth.php:3-6",
|
|
25
|
+
"php-plain/inc/db.php:1-4"
|
|
26
|
+
],
|
|
27
|
+
"control_found": null,
|
|
28
|
+
"notes": "The ORDER BY clause is built from an unsanitized GET parameter with no allow\u2011list or integer cast. No ownership or role check is present."
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"finding_id": "INJ-I-0033",
|
|
32
|
+
"verdict": "confirmed",
|
|
33
|
+
"reason_code": "traced",
|
|
34
|
+
"confidence": "high",
|
|
35
|
+
"checked": [
|
|
36
|
+
"php-plain/search.php:6-9",
|
|
37
|
+
"php-plain/inc/auth.php:3-6",
|
|
38
|
+
"php-plain/inc/db.php:1-4"
|
|
39
|
+
],
|
|
40
|
+
"control_found": null,
|
|
41
|
+
"notes": "Same as INJ-I-0032: unsanitized ORDER BY input with no guard."
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"finding_id": "INJ-I-0034",
|
|
45
|
+
"verdict": "confirmed",
|
|
46
|
+
"reason_code": "traced",
|
|
47
|
+
"confidence": "high",
|
|
48
|
+
"checked": [
|
|
49
|
+
"php-plain/search.php:13-15",
|
|
50
|
+
"php-plain/inc/auth.php:3-6",
|
|
51
|
+
"php-plain/inc/db.php:1-4"
|
|
52
|
+
],
|
|
53
|
+
"control_found": null,
|
|
54
|
+
"notes": "The heredoc interpolates a GET parameter directly into the SQL string. No escaping or parameterization is used."
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"finding_id": "INJ-I-0036",
|
|
58
|
+
"verdict": "confirmed",
|
|
59
|
+
"reason_code": "traced",
|
|
60
|
+
"confidence": "high",
|
|
61
|
+
"checked": [
|
|
62
|
+
"python-flask/app.py:24-30",
|
|
63
|
+
"python-flask/app.py:10-20"
|
|
64
|
+
],
|
|
65
|
+
"control_found": null,
|
|
66
|
+
"notes": "The search route uses an f\u2011string to build a query with user input. No parameter binding or sanitization is performed, and no ownership check is present."
|
|
67
|
+
}
|
|
68
|
+
]
|
|
69
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"batch_id": "verified-16",
|
|
3
|
+
"verifications": [
|
|
4
|
+
{
|
|
5
|
+
"finding_id": "INJ-I-0008",
|
|
6
|
+
"verdict": "likely",
|
|
7
|
+
"reason_code": "code_not_visible",
|
|
8
|
+
"confidence": "medium",
|
|
9
|
+
"checked": [
|
|
10
|
+
"dotnet-legacy/Web/Controllers/InvoiceController.cs:26-28"
|
|
11
|
+
],
|
|
12
|
+
"control_found": null,
|
|
13
|
+
"notes": "The code concatenates the user\u2011supplied customer string directly into the SQL query. No parameter binding, cast, or ownership/role check is visible in the provided context."
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"finding_id": "INJ-I-0015",
|
|
17
|
+
"verdict": "likely",
|
|
18
|
+
"reason_code": "code_not_visible",
|
|
19
|
+
"confidence": "medium",
|
|
20
|
+
"checked": [
|
|
21
|
+
"java-legacy/src/com/acme/mapper/OrderMapper.xml:9"
|
|
22
|
+
],
|
|
23
|
+
"control_found": null,
|
|
24
|
+
"notes": "The ORDER BY clause interpolates the ${orderBy} variable without any visible allow\u2011list or type enforcement in the snippet."
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"finding_id": "INJ-I-0018",
|
|
28
|
+
"verdict": "likely",
|
|
29
|
+
"reason_code": "code_not_visible",
|
|
30
|
+
"confidence": "medium",
|
|
31
|
+
"checked": [
|
|
32
|
+
"java-legacy/src/com/acme/web/OrderServlet.java:15-17"
|
|
33
|
+
],
|
|
34
|
+
"control_found": null,
|
|
35
|
+
"notes": "Both SQL statements build the query string by concatenating the request parameter `id` directly. No cast, parameter binding, or ownership check is shown."
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"finding_id": "INJ-I-0019",
|
|
39
|
+
"verdict": "likely",
|
|
40
|
+
"reason_code": "code_not_visible",
|
|
41
|
+
"confidence": "medium",
|
|
42
|
+
"checked": [
|
|
43
|
+
"java-legacy/src/com/acme/web/OrderServlet.java:15-17"
|
|
44
|
+
],
|
|
45
|
+
"control_found": null,
|
|
46
|
+
"notes": "Same code as INJ-I-0018; no visible mitigation."
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"finding_id": "INJ-I-0026",
|
|
50
|
+
"verdict": "likely",
|
|
51
|
+
"reason_code": "code_not_visible",
|
|
52
|
+
"confidence": "medium",
|
|
53
|
+
"checked": [
|
|
54
|
+
"php-codeigniter/application/controllers/Invoice.php:10"
|
|
55
|
+
],
|
|
56
|
+
"control_found": null,
|
|
57
|
+
"notes": "The `view` method concatenates the `$id` variable directly into the query. No parameter binding, cast, or ownership check is present in the snippet."
|
|
58
|
+
}
|
|
59
|
+
]
|
|
60
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
{
|
|
2
|
+
"batch_id": "verified-17",
|
|
3
|
+
"verifications": [
|
|
4
|
+
{
|
|
5
|
+
"finding_id": "INJ-I-0037",
|
|
6
|
+
"verdict": "likely",
|
|
7
|
+
"reason_code": "code_not_visible",
|
|
8
|
+
"confidence": "medium",
|
|
9
|
+
"checked": [
|
|
10
|
+
"sql-procs/sp_search_orders.sql line 5"
|
|
11
|
+
],
|
|
12
|
+
"control_found": null,
|
|
13
|
+
"notes": "The stored procedure builds dynamic SQL from @Customer and @Sort without any visible sanitization or allow\u2011list. No ownership or role check is present in the provided code."
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"finding_id": "INJ-I-0038",
|
|
17
|
+
"verdict": "likely",
|
|
18
|
+
"reason_code": "code_not_visible",
|
|
19
|
+
"confidence": "medium",
|
|
20
|
+
"checked": [
|
|
21
|
+
"sql-procs/sp_search_orders.sql line 6"
|
|
22
|
+
],
|
|
23
|
+
"control_found": null,
|
|
24
|
+
"notes": "Execution of the unsanitized @sql string is shown, but no control is visible in the snippet."
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"finding_id": "BFLA-R-0003-1",
|
|
28
|
+
"verdict": "confirmed",
|
|
29
|
+
"reason_code": "traced",
|
|
30
|
+
"confidence": "high",
|
|
31
|
+
"checked": [
|
|
32
|
+
"classic-asp/shop/member.asp lines 1-11",
|
|
33
|
+
"classic-asp/shop/inc/auth.asp line 2"
|
|
34
|
+
],
|
|
35
|
+
"control_found": null,
|
|
36
|
+
"notes": "The code performs a DELETE without any role or ownership check. The included auth.asp only verifies that a user is logged in, not that they are an admin."
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"finding_id": "BFLA-R-0007-1",
|
|
40
|
+
"verdict": "confirmed",
|
|
41
|
+
"reason_code": "traced",
|
|
42
|
+
"confidence": "high",
|
|
43
|
+
"checked": [
|
|
44
|
+
"dotnet-legacy/Web/Controllers/AdminController.cs lines 6-18"
|
|
45
|
+
],
|
|
46
|
+
"control_found": null,
|
|
47
|
+
"notes": "DeleteUser action lacks an admin role guard; only the class-level [Authorize] ensures authentication."
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"finding_id": "BFLA-R-0009-1",
|
|
51
|
+
"verdict": "confirmed",
|
|
52
|
+
"reason_code": "traced",
|
|
53
|
+
"confidence": "high",
|
|
54
|
+
"checked": [
|
|
55
|
+
"dotnet-legacy/Web/Controllers/AdminController.cs lines 30-36"
|
|
56
|
+
],
|
|
57
|
+
"control_found": null,
|
|
58
|
+
"notes": "Export action grants access based solely on a request query string parameter, with no server\u2011side role validation."
|
|
59
|
+
}
|
|
60
|
+
]
|
|
61
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
{
|
|
2
|
+
"batch_id": "verified-18",
|
|
3
|
+
"verifications": [
|
|
4
|
+
{
|
|
5
|
+
"finding_id": "BFLA-R-0023-1",
|
|
6
|
+
"verdict": "likely",
|
|
7
|
+
"reason_code": "code_not_visible",
|
|
8
|
+
"confidence": "medium",
|
|
9
|
+
"checked": [
|
|
10
|
+
"java-legacy/src/com/acme/web/AdminUserController.java",
|
|
11
|
+
"java-legacy/src/com/acme/web/AdminUserController.java lines 13-15",
|
|
12
|
+
"java-legacy/src/com/acme/web/AdminUserController.java lines 19-23"
|
|
13
|
+
],
|
|
14
|
+
"control_found": null,
|
|
15
|
+
"notes": "No @PreAuthorize or other role check is visible on the delete method. Global security configuration is not shown."
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"finding_id": "BFLA-R-0030-1",
|
|
19
|
+
"verdict": "likely",
|
|
20
|
+
"reason_code": "code_not_visible",
|
|
21
|
+
"confidence": "medium",
|
|
22
|
+
"checked": [
|
|
23
|
+
"node-express/routes/admin.js",
|
|
24
|
+
"node-express/routes/admin.js lines 8-9",
|
|
25
|
+
"node-express/routes/admin.js lines 5-6"
|
|
26
|
+
],
|
|
27
|
+
"control_found": null,
|
|
28
|
+
"notes": "The delete route only uses ensureLoggedIn; no admin guard is present in the visible code."
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"finding_id": "BFLA-R-0032-1",
|
|
32
|
+
"verdict": "likely",
|
|
33
|
+
"reason_code": "code_not_visible",
|
|
34
|
+
"confidence": "medium",
|
|
35
|
+
"checked": [
|
|
36
|
+
"node-express/routes/admin.js",
|
|
37
|
+
"node-express/routes/admin.js lines 16-18"
|
|
38
|
+
],
|
|
39
|
+
"control_found": null,
|
|
40
|
+
"notes": "Export endpoint checks only a query parameter; no role validation is visible."
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"finding_id": "BFLA-R-0057-1",
|
|
44
|
+
"verdict": "likely",
|
|
45
|
+
"reason_code": "code_not_visible",
|
|
46
|
+
"confidence": "medium",
|
|
47
|
+
"checked": [
|
|
48
|
+
"php-plain/admin.php",
|
|
49
|
+
"php-plain/admin.php lines 6-9",
|
|
50
|
+
"php-plain/inc/auth.php"
|
|
51
|
+
],
|
|
52
|
+
"control_found": null,
|
|
53
|
+
"notes": "Only a login check is performed; no admin role check is present in the visible code."
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"finding_id": "BFLA-R-0058-1",
|
|
57
|
+
"verdict": "likely",
|
|
58
|
+
"reason_code": "code_not_visible",
|
|
59
|
+
"confidence": "medium",
|
|
60
|
+
"checked": [
|
|
61
|
+
"php-plain/admin.php",
|
|
62
|
+
"php-plain/admin.php lines 10-12",
|
|
63
|
+
"php-plain/inc/auth.php"
|
|
64
|
+
],
|
|
65
|
+
"control_found": null,
|
|
66
|
+
"notes": "The delete action lacks any admin role verification in the visible code."
|
|
67
|
+
}
|
|
68
|
+
]
|
|
69
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
{
|
|
2
|
+
"batch_id": "verified-19",
|
|
3
|
+
"verifications": [
|
|
4
|
+
{
|
|
5
|
+
"finding_id": "BFLA-R-0066-1",
|
|
6
|
+
"verdict": "confirmed",
|
|
7
|
+
"reason_code": "traced",
|
|
8
|
+
"confidence": "high",
|
|
9
|
+
"checked": [
|
|
10
|
+
"php-plain/admin/delete_user.php:1-8",
|
|
11
|
+
"php-plain/inc/auth.php:1-7"
|
|
12
|
+
],
|
|
13
|
+
"control_found": null,
|
|
14
|
+
"notes": "The file contains only a login check in auth.php and a DELETE statement that uses the supplied id. No role or ownership check is present."
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"finding_id": "BFLA-R-0067-1",
|
|
18
|
+
"verdict": "confirmed",
|
|
19
|
+
"reason_code": "traced",
|
|
20
|
+
"confidence": "high",
|
|
21
|
+
"checked": [
|
|
22
|
+
"php-plain/admin/promote.php:1-8",
|
|
23
|
+
"php-plain/inc/auth.php:1-7"
|
|
24
|
+
],
|
|
25
|
+
"control_found": null,
|
|
26
|
+
"notes": "The code updates the role based solely on a POST parameter. No role verification or ownership check is performed."
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"finding_id": "BFLA-R-0059-1",
|
|
30
|
+
"verdict": "confirmed",
|
|
31
|
+
"reason_code": "traced",
|
|
32
|
+
"confidence": "high",
|
|
33
|
+
"checked": [
|
|
34
|
+
"php-plain/manage_users.php:1-8",
|
|
35
|
+
"php-plain/inc/auth.php:1-7"
|
|
36
|
+
],
|
|
37
|
+
"control_found": null,
|
|
38
|
+
"notes": "The POST handler deletes a user by id without any role or ownership guard."
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"finding_id": "BFLA-R-0063-1",
|
|
42
|
+
"verdict": "confirmed",
|
|
43
|
+
"reason_code": "traced",
|
|
44
|
+
"confidence": "high",
|
|
45
|
+
"checked": [
|
|
46
|
+
"php-plain/profile.php:1-11",
|
|
47
|
+
"php-plain/inc/auth.php:1-7"
|
|
48
|
+
],
|
|
49
|
+
"control_found": null,
|
|
50
|
+
"notes": "The script assigns any POSTed field to the user object, including role, without checking the current user's privileges."
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"finding_id": "MASS-M-0003-1",
|
|
54
|
+
"verdict": "confirmed",
|
|
55
|
+
"reason_code": "traced",
|
|
56
|
+
"confidence": "high",
|
|
57
|
+
"checked": [
|
|
58
|
+
"java-legacy/src/com/acme/web/AccountController.java:1-30"
|
|
59
|
+
],
|
|
60
|
+
"control_found": null,
|
|
61
|
+
"notes": "The controller accepts a full Account model from the request and persists it directly. No role check or property allow\u2011list is present."
|
|
62
|
+
}
|
|
63
|
+
]
|
|
64
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"batch_id": "verified-2",
|
|
3
|
+
"verifications": [
|
|
4
|
+
{
|
|
5
|
+
"finding_id": "BOLA-R-0007",
|
|
6
|
+
"verdict": "likely",
|
|
7
|
+
"reason_code": "code_not_visible",
|
|
8
|
+
"confidence": "medium",
|
|
9
|
+
"checked": [
|
|
10
|
+
"dotnet-legacy/Web/Controllers/AdminController.cs lines 6-12"
|
|
11
|
+
],
|
|
12
|
+
"control_found": null,
|
|
13
|
+
"notes": "The controller is marked with [Authorize] but no role or ownership check is visible in the provided code. The absence of a role check is not confirmed, so the finding is likely."
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"finding_id": "BOLA-R-0009",
|
|
17
|
+
"verdict": "likely",
|
|
18
|
+
"reason_code": "code_not_visible",
|
|
19
|
+
"confidence": "medium",
|
|
20
|
+
"checked": [
|
|
21
|
+
"dotnet-legacy/Web/Controllers/AdminController.cs lines 30-36"
|
|
22
|
+
],
|
|
23
|
+
"control_found": null,
|
|
24
|
+
"notes": "The Export action relies solely on a query\u2011string flag and lacks any role or ownership guard in the visible code."
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"finding_id": "BOLA-R-0013",
|
|
28
|
+
"verdict": "likely",
|
|
29
|
+
"reason_code": "code_not_visible",
|
|
30
|
+
"confidence": "medium",
|
|
31
|
+
"checked": [
|
|
32
|
+
"dotnet-legacy/Web/Controllers/InvoiceController.cs lines 11-15"
|
|
33
|
+
],
|
|
34
|
+
"control_found": null,
|
|
35
|
+
"notes": "Details retrieves an invoice by id without scoping to the current user; no ownership check is shown."
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"finding_id": "BOLA-R-0015",
|
|
39
|
+
"verdict": "likely",
|
|
40
|
+
"reason_code": "code_not_visible",
|
|
41
|
+
"confidence": "medium",
|
|
42
|
+
"checked": [
|
|
43
|
+
"dotnet-legacy/Web/Controllers/InvoiceController.cs lines 26-30"
|
|
44
|
+
],
|
|
45
|
+
"control_found": null,
|
|
46
|
+
"notes": "The Search action builds a raw SQL query from user input and does not enforce ownership or parameter binding."
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"finding_id": "BOLA-R-0017",
|
|
50
|
+
"verdict": "likely",
|
|
51
|
+
"reason_code": "code_not_visible",
|
|
52
|
+
"confidence": "medium",
|
|
53
|
+
"checked": [
|
|
54
|
+
"dotnet-legacy/Web/Orders/EditOrder.aspx.vb lines 7-13"
|
|
55
|
+
],
|
|
56
|
+
"control_found": null,
|
|
57
|
+
"notes": "The UPDATE statement uses a hidden field value directly; no ownership verification is visible."
|
|
58
|
+
}
|
|
59
|
+
]
|
|
60
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"batch_id": "verified-20",
|
|
3
|
+
"verifications": [
|
|
4
|
+
{
|
|
5
|
+
"finding_id": "MASS-M-0004-1",
|
|
6
|
+
"verdict": "likely",
|
|
7
|
+
"reason_code": "code_not_visible",
|
|
8
|
+
"confidence": "medium",
|
|
9
|
+
"checked": [
|
|
10
|
+
"java-legacy/src/com/acme/web/AccountController.java: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, nor an allow\u2011list. No global filter or configuration is shown in the provided context."
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"finding_id": "MASS-M-0005-1",
|
|
17
|
+
"verdict": "likely",
|
|
18
|
+
"reason_code": "code_not_visible",
|
|
19
|
+
"confidence": "medium",
|
|
20
|
+
"checked": [
|
|
21
|
+
"java-legacy/src/com/acme/web/ProfileServlet.java:10-13"
|
|
22
|
+
],
|
|
23
|
+
"control_found": null,
|
|
24
|
+
"notes": "BeanUtils.populate() binds all request parameters to the Account object with no visible filtering or ownership enforcement in the snippet."
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"finding_id": "MASS-M-0011-verdict",
|
|
28
|
+
"verdict": "likely",
|
|
29
|
+
"reason_code": "code_not_visible",
|
|
30
|
+
"confidence": "medium",
|
|
31
|
+
"checked": [
|
|
32
|
+
"php-plain/profile.php:6-8"
|
|
33
|
+
],
|
|
34
|
+
"control_found": null,
|
|
35
|
+
"notes": "The code iterates over $_POST and assigns each field to the user object without any allow\u2011list or ownership check. The included auth.php only verifies login, not ownership."
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"finding_id": "MASS-M-0012-verdict",
|
|
39
|
+
"verdict": "likely",
|
|
40
|
+
"reason_code": "code_not_visible",
|
|
41
|
+
"confidence": "medium",
|
|
42
|
+
"checked": [
|
|
43
|
+
"php-plain/profile.php:10"
|
|
44
|
+
],
|
|
45
|
+
"control_found": null,
|
|
46
|
+
"notes": "The assignment of $_POST['role'] to $user->role occurs without any guard or allow\u2011list in the visible code."
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"finding_id": "MASS-M-0001-verdict",
|
|
50
|
+
"verdict": "likely",
|
|
51
|
+
"reason_code": "code_not_visible",
|
|
52
|
+
"confidence": "medium",
|
|
53
|
+
"checked": [
|
|
54
|
+
"dotnet-legacy/Web/Controllers/CustomerController.cs:12-15"
|
|
55
|
+
],
|
|
56
|
+
"control_found": null,
|
|
57
|
+
"notes": "The Edit action accepts a Customer model and marks it Modified without any [Bind] include or ownership check in the snippet. The [Authorize] attribute only ensures authentication, not ownership."
|
|
58
|
+
}
|
|
59
|
+
]
|
|
60
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
{
|
|
2
|
+
"batch_id": "verified-21",
|
|
3
|
+
"verifications": [
|
|
4
|
+
{
|
|
5
|
+
"finding_id": "MASS-M-0002-verdict",
|
|
6
|
+
"verdict": "likely",
|
|
7
|
+
"reason_code": "code_not_visible",
|
|
8
|
+
"confidence": "medium",
|
|
9
|
+
"checked": [
|
|
10
|
+
"dotnet-legacy/Web/Controllers/CustomerController.cs: lines 26-31"
|
|
11
|
+
],
|
|
12
|
+
"control_found": null,
|
|
13
|
+
"notes": "The code shows a mass assignment via TryUpdateModel(customer) but no ownership or role check, integer cast, or allow\u2011list is visible in the provided snippet."
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"finding_id": "MASS-M-0009-1",
|
|
17
|
+
"verdict": "confirmed",
|
|
18
|
+
"reason_code": "traced",
|
|
19
|
+
"confidence": "high",
|
|
20
|
+
"checked": [
|
|
21
|
+
"php-laravel/app/Http/Controllers/AccountController.php: lines 21-24",
|
|
22
|
+
"php-laravel/app/Models/Team.php: line 8"
|
|
23
|
+
],
|
|
24
|
+
"control_found": null,
|
|
25
|
+
"notes": "Team::create($request->all()) uses the model\u2019s $fillable which includes the privileged field owner_id, allowing an attacker to set ownership."
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"finding_id": "MASS-M-0006-1",
|
|
29
|
+
"verdict": "confirmed",
|
|
30
|
+
"reason_code": "traced",
|
|
31
|
+
"confidence": "high",
|
|
32
|
+
"checked": [
|
|
33
|
+
"node-express/routes/profile.js: lines 7-9"
|
|
34
|
+
],
|
|
35
|
+
"control_found": null,
|
|
36
|
+
"notes": "User.findByIdAndUpdate(req.user._id, req.body, ...) performs a whole\u2011object bind with no allow\u2011list or ownership check."
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"finding_id": "MASS-M-0007-1",
|
|
40
|
+
"verdict": "confirmed",
|
|
41
|
+
"reason_code": "traced",
|
|
42
|
+
"confidence": "high",
|
|
43
|
+
"checked": [
|
|
44
|
+
"node-express/routes/profile.js: lines 16-17"
|
|
45
|
+
],
|
|
46
|
+
"control_found": null,
|
|
47
|
+
"notes": "new User(req.body) followed by user.save() allows all fields from the request to be persisted without filtering."
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"finding_id": "MASS-M-0008-1",
|
|
51
|
+
"verdict": "likely",
|
|
52
|
+
"reason_code": "code_not_visible",
|
|
53
|
+
"confidence": "medium",
|
|
54
|
+
"checked": [
|
|
55
|
+
"php-laravel/app/Http/Controllers/AccountController.php: line 13"
|
|
56
|
+
],
|
|
57
|
+
"control_found": null,
|
|
58
|
+
"notes": "The User model definition is not shown; therefore it is unclear whether privileged fields are protected by $fillable/$guarded."
|
|
59
|
+
}
|
|
60
|
+
]
|
|
61
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
{
|
|
2
|
+
"batch_id": "verified-22",
|
|
3
|
+
"verifications": [
|
|
4
|
+
{
|
|
5
|
+
"finding_id": "MASS-M-0010-1",
|
|
6
|
+
"verdict": "likely",
|
|
7
|
+
"reason_code": "code_not_visible",
|
|
8
|
+
"confidence": "medium",
|
|
9
|
+
"checked": [
|
|
10
|
+
"AccountController.php: lines 18-23 (team creation)",
|
|
11
|
+
"AccountController.php: lines 36-37 (profile update)"
|
|
12
|
+
],
|
|
13
|
+
"control_found": null,
|
|
14
|
+
"notes": "The controller performs whole\u2011object binding via $request->all() but the model\u2019s $fillable/$guarded definition is not shown. No visible field whitelist or ownership check is present in the provided code."
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"finding_id": "MASS-M-0013-1",
|
|
18
|
+
"verdict": "rejected",
|
|
19
|
+
"reason_code": "evidence_mismatch",
|
|
20
|
+
"confidence": "high",
|
|
21
|
+
"checked": [
|
|
22
|
+
"register.php: lines 4-6 (extract and explicit INSERT)"
|
|
23
|
+
],
|
|
24
|
+
"control_found": null,
|
|
25
|
+
"notes": "The code does not bind all POST values to a model; it explicitly inserts only email, name, and role columns. The evidence claiming whole\u2011object binding is incorrect."
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"finding_id": "MASS-M-0015-1",
|
|
29
|
+
"verdict": "likely",
|
|
30
|
+
"reason_code": "code_not_visible",
|
|
31
|
+
"confidence": "medium",
|
|
32
|
+
"checked": [
|
|
33
|
+
"profile.py: lines 24-29 (PATCH route with setattr loop)"
|
|
34
|
+
],
|
|
35
|
+
"control_found": null,
|
|
36
|
+
"notes": "All JSON keys are set on the user object without any whitelist or guard. No compensating control is visible in the snippet."
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"finding_id": "MASS-M-0014-1",
|
|
40
|
+
"verdict": "likely",
|
|
41
|
+
"reason_code": "code_not_visible",
|
|
42
|
+
"confidence": "medium",
|
|
43
|
+
"checked": [
|
|
44
|
+
"profile.py: lines 8-12 (POST route creating User with **request.json)"
|
|
45
|
+
],
|
|
46
|
+
"control_found": null,
|
|
47
|
+
"notes": "The constructor receives all JSON fields directly; no field filtering or guard is shown in the provided code."
|
|
48
|
+
}
|
|
49
|
+
]
|
|
50
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"batch_id": "verified-3",
|
|
3
|
+
"verifications": [
|
|
4
|
+
{
|
|
5
|
+
"finding_id": "BOLA-R-0018",
|
|
6
|
+
"verdict": "likely",
|
|
7
|
+
"reason_code": "code_not_visible",
|
|
8
|
+
"confidence": "medium",
|
|
9
|
+
"checked": [
|
|
10
|
+
"dotnet-legacy/Web/Orders/OrderDetail.aspx.cs lines 10-22"
|
|
11
|
+
],
|
|
12
|
+
"control_found": null,
|
|
13
|
+
"notes": "No ownership or role check is visible in the provided code. The first query uses the raw id from the query string without scoping to the current user, and the safe query is never executed."
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"finding_id": "BOLA-R-0019",
|
|
17
|
+
"verdict": "likely",
|
|
18
|
+
"reason_code": "code_not_visible",
|
|
19
|
+
"confidence": "medium",
|
|
20
|
+
"checked": [
|
|
21
|
+
"java-legacy/WebContent/order/detail.jsp lines 1-6"
|
|
22
|
+
],
|
|
23
|
+
"control_found": null,
|
|
24
|
+
"notes": "The order number is concatenated directly into the SQL statement with no ownership check or parameter binding shown."
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"finding_id": "BOLA-R-0001",
|
|
28
|
+
"verdict": "likely",
|
|
29
|
+
"reason_code": "code_not_visible",
|
|
30
|
+
"confidence": "medium",
|
|
31
|
+
"checked": [
|
|
32
|
+
"java-legacy/src/com/acme/struts/EditUserAction.java lines 10-14"
|
|
33
|
+
],
|
|
34
|
+
"control_found": null,
|
|
35
|
+
"notes": "The user_id from the request is used directly in an UPDATE statement without any ownership verification or parameter binding."
|
|
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 lines 13-15"
|
|
44
|
+
],
|
|
45
|
+
"control_found": null,
|
|
46
|
+
"notes": "The account is saved without checking that the current session user owns the account; no ownership or role check is visible."
|
|
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 lines 19-21"
|
|
55
|
+
],
|
|
56
|
+
"control_found": null,
|
|
57
|
+
"notes": "The rename operation uses the id from the form without verifying ownership or applying a role check."
|
|
58
|
+
}
|
|
59
|
+
]
|
|
60
|
+
}
|