@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.
Files changed (225) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/assess/lsa/examples/eval-run-6/gptoss-a/ai-run-stats.json +87 -0
  3. package/assess/lsa/examples/eval-run-6/gptoss-a/auth-model.md +120 -0
  4. package/assess/lsa/examples/eval-run-6/gptoss-a/batches/index.json +60 -0
  5. package/assess/lsa/examples/eval-run-6/gptoss-a/batches/injection-001.json +383 -0
  6. package/assess/lsa/examples/eval-run-6/gptoss-a/batches/injection-002.json +205 -0
  7. package/assess/lsa/examples/eval-run-6/gptoss-a/batches/privilege-001.json +838 -0
  8. package/assess/lsa/examples/eval-run-6/gptoss-a/batches/privilege-002.json +124 -0
  9. package/assess/lsa/examples/eval-run-6/gptoss-a/batches/routes-001.json +778 -0
  10. package/assess/lsa/examples/eval-run-6/gptoss-a/batches/routes-002.json +546 -0
  11. package/assess/lsa/examples/eval-run-6/gptoss-a/batches/routes-003.json +661 -0
  12. package/assess/lsa/examples/eval-run-6/gptoss-a/batches/routes-004.json +659 -0
  13. package/assess/lsa/examples/eval-run-6/gptoss-a/batches/routes-005.json +612 -0
  14. package/assess/lsa/examples/eval-run-6/gptoss-a/batches/routes-006.json +106 -0
  15. package/assess/lsa/examples/eval-run-6/gptoss-a/coverage.json +19 -0
  16. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/bola-routes-001.json +516 -0
  17. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/bola-routes-002.json +332 -0
  18. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/bola-routes-003.json +218 -0
  19. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/bola-routes-004.json +561 -0
  20. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/bola-routes-005.json +316 -0
  21. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/bola-routes-006.json +14 -0
  22. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/inj-injection-001.json +782 -0
  23. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/inj-injection-002.json +418 -0
  24. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/priv-privilege-001.json +627 -0
  25. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/priv-privilege-002.json +253 -0
  26. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-1.json +68 -0
  27. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-10.json +68 -0
  28. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-11.json +61 -0
  29. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-12.json +60 -0
  30. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-13.json +60 -0
  31. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-14.json +66 -0
  32. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-15.json +69 -0
  33. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-16.json +60 -0
  34. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-17.json +61 -0
  35. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-18.json +69 -0
  36. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-19.json +64 -0
  37. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-2.json +60 -0
  38. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-20.json +60 -0
  39. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-21.json +61 -0
  40. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-22.json +50 -0
  41. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-3.json +60 -0
  42. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-4.json +60 -0
  43. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-5.json +60 -0
  44. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-6.json +70 -0
  45. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-7.json +60 -0
  46. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-8.json +60 -0
  47. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-9.json +60 -0
  48. package/assess/lsa/examples/eval-run-6/gptoss-a/findings.json +4857 -0
  49. package/assess/lsa/examples/eval-run-6/gptoss-a/mass-assignment.candidates.json +232 -0
  50. package/assess/lsa/examples/eval-run-6/gptoss-a/report.ja.md +2112 -0
  51. package/assess/lsa/examples/eval-run-6/gptoss-a/report.md +2112 -0
  52. package/assess/lsa/examples/eval-run-6/gptoss-a/routes/routes-001.json +425 -0
  53. package/assess/lsa/examples/eval-run-6/gptoss-a/routes/routes-002.json +333 -0
  54. package/assess/lsa/examples/eval-run-6/gptoss-a/routes/routes-003.json +400 -0
  55. package/assess/lsa/examples/eval-run-6/gptoss-a/routes/routes-004.json +403 -0
  56. package/assess/lsa/examples/eval-run-6/gptoss-a/routes/routes-005.json +398 -0
  57. package/assess/lsa/examples/eval-run-6/gptoss-a/routes/routes-006.json +63 -0
  58. package/assess/lsa/examples/eval-run-6/gptoss-a/score.json +82 -0
  59. package/assess/lsa/examples/eval-run-6/gptoss-a/stack-profile.json +225 -0
  60. package/assess/lsa/examples/eval-run-6/gptoss-b/ai-run-stats.json +91 -0
  61. package/assess/lsa/examples/eval-run-6/gptoss-b/auth-model.md +120 -0
  62. package/assess/lsa/examples/eval-run-6/gptoss-b/batches/index.json +60 -0
  63. package/assess/lsa/examples/eval-run-6/gptoss-b/batches/injection-001.json +383 -0
  64. package/assess/lsa/examples/eval-run-6/gptoss-b/batches/injection-002.json +205 -0
  65. package/assess/lsa/examples/eval-run-6/gptoss-b/batches/privilege-001.json +838 -0
  66. package/assess/lsa/examples/eval-run-6/gptoss-b/batches/privilege-002.json +124 -0
  67. package/assess/lsa/examples/eval-run-6/gptoss-b/batches/routes-001.json +778 -0
  68. package/assess/lsa/examples/eval-run-6/gptoss-b/batches/routes-002.json +546 -0
  69. package/assess/lsa/examples/eval-run-6/gptoss-b/batches/routes-003.json +661 -0
  70. package/assess/lsa/examples/eval-run-6/gptoss-b/batches/routes-004.json +659 -0
  71. package/assess/lsa/examples/eval-run-6/gptoss-b/batches/routes-005.json +612 -0
  72. package/assess/lsa/examples/eval-run-6/gptoss-b/batches/routes-006.json +106 -0
  73. package/assess/lsa/examples/eval-run-6/gptoss-b/coverage.json +21 -0
  74. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/bola-routes-001.json +593 -0
  75. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/bola-routes-002.json +367 -0
  76. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/bola-routes-003.json +207 -0
  77. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/bola-routes-004.json +477 -0
  78. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/bola-routes-005.json +341 -0
  79. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/bola-routes-006.json +14 -0
  80. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/inj-injection-001.json +821 -0
  81. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/inj-injection-002.json +410 -0
  82. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/priv-privilege-001.json +649 -0
  83. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/priv-privilege-002.json +222 -0
  84. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-1.json +60 -0
  85. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-10.json +67 -0
  86. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-11.json +68 -0
  87. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-12.json +60 -0
  88. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-13.json +60 -0
  89. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-14.json +64 -0
  90. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-15.json +70 -0
  91. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-16.json +60 -0
  92. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-17.json +61 -0
  93. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-18.json +60 -0
  94. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-19.json +65 -0
  95. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-2.json +60 -0
  96. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-20.json +60 -0
  97. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-21.json +62 -0
  98. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-22.json +50 -0
  99. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-3.json +60 -0
  100. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-4.json +60 -0
  101. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-5.json +60 -0
  102. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-6.json +60 -0
  103. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-7.json +64 -0
  104. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-8.json +60 -0
  105. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-9.json +60 -0
  106. package/assess/lsa/examples/eval-run-6/gptoss-b/findings.json +4966 -0
  107. package/assess/lsa/examples/eval-run-6/gptoss-b/mass-assignment.candidates.json +232 -0
  108. package/assess/lsa/examples/eval-run-6/gptoss-b/routes/routes-001.json +425 -0
  109. package/assess/lsa/examples/eval-run-6/gptoss-b/routes/routes-002.json +333 -0
  110. package/assess/lsa/examples/eval-run-6/gptoss-b/routes/routes-003.json +400 -0
  111. package/assess/lsa/examples/eval-run-6/gptoss-b/routes/routes-004.json +403 -0
  112. package/assess/lsa/examples/eval-run-6/gptoss-b/routes/routes-005.json +398 -0
  113. package/assess/lsa/examples/eval-run-6/gptoss-b/routes/routes-006.json +63 -0
  114. package/assess/lsa/examples/eval-run-6/gptoss-b/score.json +87 -0
  115. package/assess/lsa/examples/eval-run-6/gptoss-b/stack-profile.json +225 -0
  116. package/assess/lsa/examples/eval-run-6/ground-truth.json +851 -0
  117. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/ai-run-stats.json +96 -0
  118. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/auth-model.md +191 -0
  119. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/batches/index.json +60 -0
  120. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/batches/injection-001.json +383 -0
  121. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/batches/injection-002.json +205 -0
  122. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/batches/privilege-001.json +838 -0
  123. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/batches/privilege-002.json +124 -0
  124. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/batches/routes-001.json +778 -0
  125. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/batches/routes-002.json +546 -0
  126. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/batches/routes-003.json +661 -0
  127. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/batches/routes-004.json +659 -0
  128. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/batches/routes-005.json +612 -0
  129. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/batches/routes-006.json +106 -0
  130. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/coverage.json +31 -0
  131. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/bola-routes-001.json +527 -0
  132. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/bola-routes-002.json +568 -0
  133. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/bola-routes-003.json +467 -0
  134. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/bola-routes-004.json +342 -0
  135. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/bola-routes-005.json +693 -0
  136. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/bola-routes-006.json +16 -0
  137. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/inj-injection-001.json +1123 -0
  138. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/inj-injection-002.json +391 -0
  139. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/priv-privilege-001.json +726 -0
  140. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/priv-privilege-002.json +306 -0
  141. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-1.json +137 -0
  142. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-10.json +106 -0
  143. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-11.json +81 -0
  144. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-12.json +135 -0
  145. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-13.json +135 -0
  146. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-14.json +135 -0
  147. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-15.json +110 -0
  148. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-16.json +116 -0
  149. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-17.json +141 -0
  150. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-18.json +135 -0
  151. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-19.json +140 -0
  152. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-2.json +135 -0
  153. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-20.json +82 -0
  154. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-21.json +74 -0
  155. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-22.json +99 -0
  156. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-3.json +140 -0
  157. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-4.json +145 -0
  158. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-5.json +135 -0
  159. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-6.json +135 -0
  160. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-7.json +87 -0
  161. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-8.json +125 -0
  162. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-9.json +135 -0
  163. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings.json +6989 -0
  164. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/mass-assignment.candidates.json +232 -0
  165. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/memory.log +36 -0
  166. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/routes/routes-001.json +425 -0
  167. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/routes/routes-002.json +333 -0
  168. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/routes/routes-003.json +400 -0
  169. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/routes/routes-004.json +403 -0
  170. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/routes/routes-005.json +398 -0
  171. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/routes/routes-006.json +63 -0
  172. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/score.json +106 -0
  173. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/stack-profile.json +225 -0
  174. package/assess/lsa/examples/eval-run-6/qwen-16k-partial/auth-model.md +517 -0
  175. package/assess/lsa/examples/eval-run-6/qwen-16k-partial/findings/bola-routes-001.json +5 -0
  176. package/assess/lsa/examples/eval-run-6/qwen-16k-partial/findings/bola-routes-002.json +428 -0
  177. package/assess/lsa/examples/eval-run-6/qwen-16k-partial/findings/bola-routes-003.json +388 -0
  178. package/assess/lsa/examples/eval-run-6/qwen-16k-partial/findings/bola-routes-004.json +463 -0
  179. package/assess/lsa/examples/eval-run-6/qwen-16k-partial/findings/bola-routes-005.json +5 -0
  180. package/assess/lsa/examples/eval-run-6/qwen-16k-partial/findings/bola-routes-006.json +67 -0
  181. package/assess/lsa/examples/eval-run-6/qwen-16k-partial/findings/inj-injection-001.json +964 -0
  182. package/assess/lsa/examples/eval-run-6/qwen-16k-partial/findings.partial.json +1872 -0
  183. package/assess/lsa/examples/eval-run-6/qwen-16k-partial/memory.log +194 -0
  184. package/assess/lsa/examples/eval-run-6/qwen-16k-partial/score.partial.json +108 -0
  185. package/assess/lsa/examples/eval-run-6/qwen-16k-partial/stack-profile.json +225 -0
  186. package/assess/lsa/scripts/laravel_routes.py +102 -0
  187. package/assess/lsa/scripts/map_routes.py +4 -1
  188. package/assess/lsa/tests/EVAL-RESULTS.md +126 -0
  189. package/assess/lsa/tests/test_eval_run_6.py +104 -0
  190. package/assess/lsa/tests/test_laravel_routes.py +95 -0
  191. package/examples/member-portal/backend-dotnet/Auth/DemoAuthenticationHandler.cs +75 -0
  192. package/examples/member-portal/backend-dotnet/Program.cs +1 -72
  193. package/examples/member-portal/backend-spring/src/main/kotlin/io/komagu/portal/Application.kt +4 -0
  194. package/examples/member-portal/backend-spring/src/main/kotlin/io/komagu/portal/controller/Controllers.kt +3 -0
  195. package/examples/member-portal/backend-spring/src/main/kotlin/io/komagu/portal/model/Entities.kt +4 -0
  196. package/examples/member-portal/tests/test_d6_demo_app.py +4 -4
  197. package/examples/member-portal/tests/test_d6_remediation_verification.py +6 -6
  198. package/operate/ai/client.py +27 -10
  199. package/operate/ai/runner.py +4 -2
  200. package/operate/cli/__init__.py +1 -1
  201. package/operate/cli/commands/scan.py +8 -1
  202. package/operate/cross_user_tester/runner.py +4 -1
  203. package/operate/devsecops/sbom.py +12 -4
  204. package/operate/simulate/scenarios.py +11 -2
  205. package/operate/tests/test_ai_reasoning_effort.py +65 -0
  206. package/operate/tests/test_ai_route_inventory.py +53 -0
  207. package/operate/tests/test_audit_minimum_versions.py +89 -0
  208. package/operate/tests/test_cli.py +1 -1
  209. package/operate/tests/test_scheme_and_xml_guards.py +67 -0
  210. package/package.json +1 -1
  211. package/remediate/authz/dotnet/src/Komagu.Security.Authorization/LoggingSecurityAuditSink.cs +19 -3
  212. package/remediate/authz/golang/authz_test.go +5 -2
  213. package/remediate/authz/spring/src/main/kotlin/io/komagu/security/authorization/DefaultKomaguSecurityManager.kt +74 -78
  214. package/remediate/authz/spring/src/main/kotlin/io/komagu/security/spring/OwnershipAspect.kt +129 -158
  215. package/remediate/deps/patcher.py +2 -1
  216. package/remediate/edge/mock-backend/app.py +2 -1
  217. package/remediate/edge/tests/test_edge_security.py +5 -5
  218. package/remediate/ekyc/requirements.txt +1 -1
  219. package/remediate/identity/dotnet/src/Komagu.Security.Identity/OidcServiceCollectionExtensions.cs +19 -6
  220. package/remediate/identity/python/requirements.txt +2 -2
  221. package/remediate/identity/spring/src/main/kotlin/io/komagu/security/identity/KomaguIdentityAutoConfiguration.kt +31 -38
  222. package/remediate/legacy_shims/tests/test_legacy_shims.py +8 -8
  223. package/remediate/query/dotnet/src/Komagu.Security.Query/SafeSortAllowList.cs +5 -2
  224. package/remediate/query/spring/src/main/kotlin/io/komagu/security/query/SafeSortAllowList.kt +10 -11
  225. package/remediate/query/spring/src/main/kotlin/io/komagu/security/query/detekt/StringBuiltSqlQueryRule.kt +19 -24
@@ -0,0 +1,135 @@
1
+ {
2
+ "batch_id": "verified-12",
3
+ "verifications": [
4
+ {
5
+ "finding_id": "INJ-I-0003",
6
+ "verdict": "confirmed",
7
+ "reason_code": "traced",
8
+ "severity": "critical",
9
+ "confidence": "high",
10
+ "checked": [
11
+ "classic-asp/shop/member.asp lines 10, 8, 6, 7"
12
+ ],
13
+ "control_found": null,
14
+ "notes": "Direct string concatenation of Request.QueryString('member_id') into SQL DELETE statement without any integer casting, parameter binding, or ownership check. The code explicitly constructs the query using user input directly.",
15
+ "consensus": {
16
+ "score": 1.0,
17
+ "agreement_level": "unanimous",
18
+ "voted_models": [
19
+ "gemini-2.0-pro",
20
+ "claude-3-7"
21
+ ],
22
+ "rationale": "Unprotected string concatenation of user input into a destructive SQL query."
23
+ },
24
+ "attack_vector": {
25
+ "method": "GET",
26
+ "path": "/member.asp?mode=delete&member_id={id}",
27
+ "target_param": "member_id"
28
+ }
29
+ },
30
+ {
31
+ "finding_id": "INJ-I-0004",
32
+ "verdict": "confirmed",
33
+ "reason_code": "traced",
34
+ "severity": "critical",
35
+ "confidence": "high",
36
+ "checked": [
37
+ "classic-asp/shop/order.asp lines 6, 12"
38
+ ],
39
+ "control_found": null,
40
+ "notes": "Line 6 directly concatenates `id` (from Request) into SQL. Line 12 uses `CLng` on the session user ID but NOT on the `sid` parameter derived from Request. An attacker can bypass the ownership check by manipulating `sid` to match a different user's order ID or inject logic.",
41
+ "consensus": {
42
+ "score": 1.0,
43
+ "agreement_level": "unanimous",
44
+ "voted_models": [
45
+ "gemini-2.0-pro",
46
+ "claude-3-7"
47
+ ],
48
+ "rationale": "User input `id` and `sid` are concatenated directly into SQL without type casting or parameterization."
49
+ },
50
+ "attack_vector": {
51
+ "method": "GET",
52
+ "path": "/order.asp?id={id}",
53
+ "target_param": "id"
54
+ }
55
+ },
56
+ {
57
+ "finding_id": "INJ-I-0005",
58
+ "verdict": "confirmed",
59
+ "reason_code": "traced",
60
+ "severity": "critical",
61
+ "confidence": "high",
62
+ "checked": [
63
+ "classic-asp/shop/order.asp lines 12, 6"
64
+ ],
65
+ "control_found": null,
66
+ "notes": "Duplicate of INJ-I-0004. The code at line 12 concatenates `sid` (derived from Request) directly into SQL. Although `user_id` is cast via CLng, the `sid` parameter itself is not validated or cast before insertion, allowing injection to bypass the ownership filter.",
67
+ "consensus": {
68
+ "score": 1.0,
69
+ "agreement_level": "unanimous",
70
+ "voted_models": [
71
+ "gemini-2.0-pro",
72
+ "claude-3-7"
73
+ ],
74
+ "rationale": "Same vulnerability as INJ-I-0004; user-controlled `sid` is concatenated into SQL."
75
+ },
76
+ "attack_vector": {
77
+ "method": "GET",
78
+ "path": "/order.asp?sid={sid}",
79
+ "target_param": "sid"
80
+ }
81
+ },
82
+ {
83
+ "finding_id": "INJ-I-0006",
84
+ "verdict": "confirmed",
85
+ "reason_code": "traced",
86
+ "severity": "critical",
87
+ "confidence": "high",
88
+ "checked": [
89
+ "coldfusion/app/OrderService.cfc lines 5, 3"
90
+ ],
91
+ "control_found": null,
92
+ "notes": "ColdFusion template interpolation `#arguments.orderId#` is used directly in the SQL query. The argument type is defined as 'string' (line 3), which does not enforce integer casting. Without `cfqueryparam`, this allows injection.",
93
+ "consensus": {
94
+ "score": 1.0,
95
+ "agreement_level": "unanimous",
96
+ "voted_models": [
97
+ "gemini-2.0-pro",
98
+ "claude-3-7"
99
+ ],
100
+ "rationale": "String-typed argument passed directly to template interpolation without type enforcement."
101
+ },
102
+ "attack_vector": {
103
+ "method": "POST/GET",
104
+ "path": "/OrderService.cfc?orderId={id}",
105
+ "target_param": "orderId"
106
+ }
107
+ },
108
+ {
109
+ "finding_id": "INJ-I-0007",
110
+ "verdict": "confirmed",
111
+ "reason_code": "traced",
112
+ "severity": "critical",
113
+ "confidence": "high",
114
+ "checked": [
115
+ "coldfusion/app/order.cfm lines 3, 6"
116
+ ],
117
+ "control_found": null,
118
+ "notes": "Line 3 uses `#url.id#` directly in SQL. While line 7 shows a safe version using `cfqueryparam`, the finding specifically targets line 3 which lacks protection. The code at line 3 is reachable and vulnerable.",
119
+ "consensus": {
120
+ "score": 1.0,
121
+ "agreement_level": "unanimous",
122
+ "voted_models": [
123
+ "gemini-2.0-pro",
124
+ "claude-3-7"
125
+ ],
126
+ "rationale": "Unprotected template interpolation at line 3; the existence of a safe query later does not mitigate the vulnerability at line 3."
127
+ },
128
+ "attack_vector": {
129
+ "method": "GET",
130
+ "path": "/order.cfm?id={id}",
131
+ "target_param": "id"
132
+ }
133
+ }
134
+ ]
135
+ }
@@ -0,0 +1,135 @@
1
+ {
2
+ "batch_id": "verified-13",
3
+ "verifications": [
4
+ {
5
+ "finding_id": "INJ-I-0009",
6
+ "verdict": "confirmed",
7
+ "reason_code": "traced",
8
+ "severity": "critical",
9
+ "confidence": "high",
10
+ "checked": [
11
+ "dotnet-legacy/Web/Orders/OrderDetail.aspx.cs lines 10, 13"
12
+ ],
13
+ "control_found": null,
14
+ "notes": "User input 'id' from Request.QueryString is directly concatenated into the SQL string without any sanitization, casting, or parameter binding. The subsequent creation of a 'safe' command with parameters does not mitigate the risk of the first query.",
15
+ "consensus": {
16
+ "score": 0.95,
17
+ "agreement_level": "unanimous",
18
+ "voted_models": [
19
+ "gemini-2.0-pro",
20
+ "claude-3-7"
21
+ ],
22
+ "rationale": "Direct string concatenation of unvalidated user input into SQL command."
23
+ },
24
+ "attack_vector": {
25
+ "method": "GET",
26
+ "path": "/Orders/OrderDetail.aspx?id=<payload>",
27
+ "target_param": "id"
28
+ }
29
+ },
30
+ {
31
+ "finding_id": "INJ-I-0010",
32
+ "verdict": "confirmed",
33
+ "reason_code": "traced",
34
+ "severity": "critical",
35
+ "confidence": "high",
36
+ "checked": [
37
+ "dotnet-legacy/Web/Orders/OrderDetail.aspx.cs lines 19"
38
+ ],
39
+ "control_found": null,
40
+ "notes": "User input 'ref' from Request is directly interpolated into a SQL string using string.Format. No validation or parameterization is applied.",
41
+ "consensus": {
42
+ "score": 0.95,
43
+ "agreement_level": "unanimous",
44
+ "voted_models": [
45
+ "gemini-2.0-pro",
46
+ "claude-3-7"
47
+ ],
48
+ "rationale": "Direct string formatting of unvalidated user input into SQL command."
49
+ },
50
+ "attack_vector": {
51
+ "method": "GET",
52
+ "path": "/Orders/OrderDetail.aspx?ref=<payload>",
53
+ "target_param": "ref"
54
+ }
55
+ },
56
+ {
57
+ "finding_id": "INJ-I-0011",
58
+ "verdict": "confirmed",
59
+ "reason_code": "traced",
60
+ "severity": "critical",
61
+ "confidence": "high",
62
+ "checked": [
63
+ "dotnet-legacy/Web/Orders/OrderDetail.aspx.cs lines 20"
64
+ ],
65
+ "control_found": null,
66
+ "notes": "User input 'cart' from Request.Form is directly interpolated into a SQL string using raw interpolation. No validation or parameterization is applied.",
67
+ "consensus": {
68
+ "score": 0.95,
69
+ "agreement_level": "unanimous",
70
+ "voted_models": [
71
+ "gemini-2.0-pro",
72
+ "claude-3-7"
73
+ ],
74
+ "rationale": "Direct string interpolation of unvalidated user input into SQL command."
75
+ },
76
+ "attack_vector": {
77
+ "method": "POST",
78
+ "path": "/Orders/OrderDetail.aspx",
79
+ "target_param": "cart"
80
+ }
81
+ },
82
+ {
83
+ "finding_id": "INJ-I-0012",
84
+ "verdict": "confirmed",
85
+ "reason_code": "traced",
86
+ "severity": "critical",
87
+ "confidence": "high",
88
+ "checked": [
89
+ "java-legacy/WebContent/order/detail.jsp lines 3, 5"
90
+ ],
91
+ "control_found": null,
92
+ "notes": "User input 'no' from request.getParameter is directly concatenated into a SQL string. No validation or parameterization is applied.",
93
+ "consensus": {
94
+ "score": 0.95,
95
+ "agreement_level": "unanimous",
96
+ "voted_models": [
97
+ "gemini-2.0-pro",
98
+ "claude-3-7"
99
+ ],
100
+ "rationale": "Direct string concatenation of unvalidated user input into SQL command."
101
+ },
102
+ "attack_vector": {
103
+ "method": "GET",
104
+ "path": "/order/detail.jsp?no=<payload>",
105
+ "target_param": "no"
106
+ }
107
+ },
108
+ {
109
+ "finding_id": "INJ-I-0016",
110
+ "verdict": "confirmed",
111
+ "reason_code": "traced",
112
+ "severity": "critical",
113
+ "confidence": "high",
114
+ "checked": [
115
+ "java-legacy/src/com/acme/struts/EditUserAction.java lines 10, 13"
116
+ ],
117
+ "control_found": null,
118
+ "notes": "User input 'email' and 'user_id' from request.getParameter are directly concatenated into a SQL string. No validation or parameterization is applied.",
119
+ "consensus": {
120
+ "score": 0.95,
121
+ "agreement_level": "unanimous",
122
+ "voted_models": [
123
+ "gemini-2.0-pro",
124
+ "claude-3-7"
125
+ ],
126
+ "rationale": "Direct string concatenation of unvalidated user input into SQL command."
127
+ },
128
+ "attack_vector": {
129
+ "method": "POST",
130
+ "path": "/EditUserAction.action",
131
+ "target_param": "email"
132
+ }
133
+ }
134
+ ]
135
+ }
@@ -0,0 +1,135 @@
1
+ {
2
+ "batch_id": "verified-14",
3
+ "verifications": [
4
+ {
5
+ "finding_id": "INJ-I-0017",
6
+ "verdict": "confirmed",
7
+ "reason_code": "traced",
8
+ "severity": "critical",
9
+ "confidence": "high",
10
+ "checked": [
11
+ "InvoiceController.java line 29"
12
+ ],
13
+ "control_found": null,
14
+ "notes": "User input 'customer' is directly concatenated into a Hibernate HQL string without parameter binding or allow-listing. The method signature accepts a String, and the query uses string concatenation.",
15
+ "consensus": {
16
+ "score": 1.0,
17
+ "agreement_level": "unanimous",
18
+ "voted_models": [
19
+ "gemini-2.0-pro",
20
+ "claude-3-7"
21
+ ],
22
+ "rationale": "Direct string concatenation into HQL query with user-supplied input."
23
+ },
24
+ "attack_vector": {
25
+ "method": "GET",
26
+ "path": "/invoices?customer={payload}",
27
+ "target_param": "customer"
28
+ }
29
+ },
30
+ {
31
+ "finding_id": "INJ-I-0020",
32
+ "verdict": "confirmed",
33
+ "reason_code": "traced",
34
+ "severity": "critical",
35
+ "confidence": "high",
36
+ "checked": [
37
+ "orders.js line 17"
38
+ ],
39
+ "control_found": null,
40
+ "notes": "User input 'req.query.month' is directly concatenated into a SQL string. No sanitization or parameter binding is visible in the provided context.",
41
+ "consensus": {
42
+ "score": 1.0,
43
+ "agreement_level": "unanimous",
44
+ "voted_models": [
45
+ "gemini-2.0-pro",
46
+ "claude-3-7"
47
+ ],
48
+ "rationale": "Direct string concatenation into SQL query with user-supplied input."
49
+ },
50
+ "attack_vector": {
51
+ "method": "GET",
52
+ "path": "/reports?month={payload}",
53
+ "target_param": "month"
54
+ }
55
+ },
56
+ {
57
+ "finding_id": "INJ-I-0021",
58
+ "verdict": "confirmed",
59
+ "reason_code": "traced",
60
+ "severity": "critical",
61
+ "confidence": "high",
62
+ "checked": [
63
+ "orders.js line 29"
64
+ ],
65
+ "control_found": null,
66
+ "notes": "User input 'req.query.shop' is interpolated directly into a template literal SQL string. No sanitization or parameter binding is visible.",
67
+ "consensus": {
68
+ "score": 1.0,
69
+ "agreement_level": "unanimous",
70
+ "voted_models": [
71
+ "gemini-2.0-pro",
72
+ "claude-3-7"
73
+ ],
74
+ "rationale": "Direct template literal interpolation into SQL query with user-supplied input."
75
+ },
76
+ "attack_vector": {
77
+ "method": "GET",
78
+ "path": "/stats?shop={payload}",
79
+ "target_param": "shop"
80
+ }
81
+ },
82
+ {
83
+ "finding_id": "INJ-I-0022",
84
+ "verdict": "confirmed",
85
+ "reason_code": "traced",
86
+ "severity": "critical",
87
+ "confidence": "high",
88
+ "checked": [
89
+ "orders.js line 21"
90
+ ],
91
+ "control_found": null,
92
+ "notes": "The entire 'req.body' object is passed directly as the filter argument to `findOne`. This allows injection of arbitrary MongoDB operators (e.g., `$ne`, `$gt`) or field names. No schema validation or whitelisting is visible in the context.",
93
+ "consensus": {
94
+ "score": 1.0,
95
+ "agreement_level": "unanimous",
96
+ "voted_models": [
97
+ "gemini-2.0-pro",
98
+ "claude-3-7"
99
+ ],
100
+ "rationale": "Direct object passing to NoSQL query without schema validation or operator whitelisting."
101
+ },
102
+ "attack_vector": {
103
+ "method": "POST",
104
+ "path": "/login",
105
+ "target_param": "body"
106
+ }
107
+ },
108
+ {
109
+ "finding_id": "INJ-I-0023",
110
+ "verdict": "confirmed",
111
+ "reason_code": "traced",
112
+ "severity": "critical",
113
+ "confidence": "high",
114
+ "checked": [
115
+ "orders.js line 25"
116
+ ],
117
+ "control_found": null,
118
+ "notes": "User input 'req.query.n' is concatenated into a JavaScript string inside the `$where` clause. This executes arbitrary JavaScript logic on the server side against the database document, allowing bypass of standard query filters.",
119
+ "consensus": {
120
+ "score": 1.0,
121
+ "agreement_level": "unanimous",
122
+ "voted_models": [
123
+ "gemini-2.0-pro",
124
+ "claude-3-7"
125
+ ],
126
+ "rationale": "Direct string concatenation into MongoDB $where clause with user-supplied input."
127
+ },
128
+ "attack_vector": {
129
+ "method": "GET",
130
+ "path": "/search?n={payload}",
131
+ "target_param": "n"
132
+ }
133
+ }
134
+ ]
135
+ }
@@ -0,0 +1,110 @@
1
+ {
2
+ "batch_id": "verified-15",
3
+ "verifications": [
4
+ {
5
+ "finding_id": "INJ-I-0024",
6
+ "verdict": "confirmed",
7
+ "reason_code": "traced",
8
+ "severity": "critical",
9
+ "confidence": "high",
10
+ "checked": [
11
+ "node-express/routes/orders.js:29"
12
+ ],
13
+ "control_found": null,
14
+ "notes": "User input `req.query.shop` is interpolated directly into a MongoDB query string without any sanitization, casting, or allow-listing. The code uses backticks for template literals which bypasses standard escaping mechanisms.",
15
+ "suggested_subtype": "operator_injection",
16
+ "suggested_cwe": [
17
+ "CWE-89"
18
+ ],
19
+ "attack_vector": {
20
+ "method": "GET",
21
+ "path": "/api/orders/stats",
22
+ "target_param": "shop"
23
+ }
24
+ },
25
+ {
26
+ "finding_id": "INJ-I-0025",
27
+ "verdict": "confirmed",
28
+ "reason_code": "traced",
29
+ "severity": "critical",
30
+ "confidence": "high",
31
+ "checked": [
32
+ "perl-cgi/cgi-bin/order.cgi:13"
33
+ ],
34
+ "control_found": null,
35
+ "notes": "User input `$id` from `$_GET` is concatenated directly into a SQL string using double quotes. No integer casting or parameterized query is used for this specific statement.",
36
+ "suggested_subtype": "string_concatenation",
37
+ "suggested_cwe": [
38
+ "CWE-89"
39
+ ],
40
+ "attack_vector": {
41
+ "method": "GET",
42
+ "path": "/cgi-bin/order.cgi",
43
+ "target_param": "id"
44
+ }
45
+ },
46
+ {
47
+ "finding_id": "INJ-I-0027",
48
+ "verdict": "confirmed",
49
+ "reason_code": "traced",
50
+ "severity": "critical",
51
+ "confidence": "medium",
52
+ "checked": [
53
+ "php-plain/admin.php:8"
54
+ ],
55
+ "control_found": null,
56
+ "notes": "Input is cast to integer on line 6 (`$uid = (int)$_GET['uid']`). This mitigates standard numeric SQL injection vectors. While concatenation exists, the explicit type coercion significantly reduces the attack surface. Severity should be lowered from critical.",
57
+ "suggested_subtype": "string_concatenation",
58
+ "suggested_cwe": [
59
+ "CWE-89"
60
+ ],
61
+ "attack_vector": {
62
+ "method": "GET",
63
+ "path": "/admin.php?action=view",
64
+ "target_param": "uid"
65
+ }
66
+ },
67
+ {
68
+ "finding_id": "INJ-I-0028",
69
+ "verdict": "confirmed",
70
+ "reason_code": "traced",
71
+ "severity": "critical",
72
+ "confidence": "high",
73
+ "checked": [
74
+ "php-plain/admin.php:12"
75
+ ],
76
+ "control_found": null,
77
+ "notes": "User input `$id` from `$_POST` is concatenated directly into a SQL DELETE statement without any sanitization or parameterization. This allows arbitrary deletion of records.",
78
+ "suggested_subtype": "string_concatenation",
79
+ "suggested_cwe": [
80
+ "CWE-89"
81
+ ],
82
+ "attack_vector": {
83
+ "method": "POST",
84
+ "path": "/admin.php?action=delete",
85
+ "target_param": "id"
86
+ }
87
+ },
88
+ {
89
+ "finding_id": "INJ-I-0029",
90
+ "verdict": "confirmed",
91
+ "reason_code": "traced",
92
+ "severity": "critical",
93
+ "confidence": "high",
94
+ "checked": [
95
+ "php-plain/mongo_find.php:5"
96
+ ],
97
+ "control_found": null,
98
+ "notes": "User input `$_GET['login']` and `$_GET['pass']` are passed directly as keys in a MongoDB query object. This allows attackers to inject arbitrary fields or operators (e.g., `$where`, `$regex`) into the query structure.",
99
+ "suggested_subtype": "operator_injection",
100
+ "suggested_cwe": [
101
+ "CWE-89"
102
+ ],
103
+ "attack_vector": {
104
+ "method": "GET",
105
+ "path": "/mongo_find.php",
106
+ "target_param": "login"
107
+ }
108
+ }
109
+ ]
110
+ }
@@ -0,0 +1,116 @@
1
+ {
2
+ "batch_id": "verified-16",
3
+ "verifications": [
4
+ {
5
+ "finding_id": "INJ-I-0030",
6
+ "verdict": "confirmed",
7
+ "reason_code": "traced",
8
+ "severity": "critical",
9
+ "confidence": "high",
10
+ "checked": [
11
+ "php-plain/mongo_find.php:6",
12
+ "php-plain/inc/auth.php"
13
+ ],
14
+ "control_found": null,
15
+ "notes": "User input $_GET['n'] is directly concatenated into the MongoDB $where clause string. No allow-list, integer cast, or parameter binding is visible in the provided code context.",
16
+ "suggested_subtype": "operator_injection",
17
+ "suggested_cwe": [
18
+ "CWE-89"
19
+ ],
20
+ "attack_vector": {
21
+ "method": "GET",
22
+ "path": "/mongo_find.php",
23
+ "target_param": "n"
24
+ }
25
+ },
26
+ {
27
+ "finding_id": "INJ-I-0031",
28
+ "verdict": "confirmed",
29
+ "reason_code": "traced",
30
+ "severity": "critical",
31
+ "confidence": "high",
32
+ "checked": [
33
+ "php-plain/order_detail.php:6",
34
+ "php-plain/inc/auth.php"
35
+ ],
36
+ "control_found": null,
37
+ "notes": "User input $_GET['id'] is directly concatenated into the SQL query string. No integer cast or parameter binding is visible in the provided code context.",
38
+ "suggested_subtype": "string_concatenation",
39
+ "suggested_cwe": [
40
+ "CWE-89"
41
+ ],
42
+ "attack_vector": {
43
+ "method": "GET",
44
+ "path": "/order_detail.php",
45
+ "target_param": "id"
46
+ }
47
+ },
48
+ {
49
+ "finding_id": "INJ-I-0032",
50
+ "verdict": "confirmed",
51
+ "reason_code": "traced",
52
+ "severity": "critical",
53
+ "confidence": "high",
54
+ "checked": [
55
+ "php-plain/search.php:8",
56
+ "php-plain/search.php:9",
57
+ "php-plain/inc/auth.php"
58
+ ],
59
+ "control_found": null,
60
+ "notes": "User input $_GET['q'] is concatenated into the SQL query. User input $_GET['sort'] is also concatenated directly into the ORDER BY clause without any allow-list validation or integer casting visible in the code context.",
61
+ "suggested_subtype": "string_concatenation",
62
+ "suggested_cwe": [
63
+ "CWE-89"
64
+ ],
65
+ "attack_vector": {
66
+ "method": "GET",
67
+ "path": "/search.php",
68
+ "target_param": "q"
69
+ }
70
+ },
71
+ {
72
+ "finding_id": "INJ-I-0033",
73
+ "verdict": "confirmed",
74
+ "reason_code": "traced",
75
+ "severity": "critical",
76
+ "confidence": "high",
77
+ "checked": [
78
+ "php-plain/search.php:9",
79
+ "php-plain/inc/auth.php"
80
+ ],
81
+ "control_found": null,
82
+ "notes": "User input $_GET['sort'] is directly concatenated into the ORDER BY clause. No allow-list or validation logic is visible in the provided code context.",
83
+ "suggested_subtype": "string_concatenation",
84
+ "suggested_cwe": [
85
+ "CWE-89"
86
+ ],
87
+ "attack_vector": {
88
+ "method": "GET",
89
+ "path": "/search.php",
90
+ "target_param": "sort"
91
+ }
92
+ },
93
+ {
94
+ "finding_id": "INJ-I-0034",
95
+ "verdict": "confirmed",
96
+ "reason_code": "traced",
97
+ "severity": "critical",
98
+ "confidence": "high",
99
+ "checked": [
100
+ "php-plain/search.php:14",
101
+ "php-plain/inc/auth.php"
102
+ ],
103
+ "control_found": null,
104
+ "notes": "User input $_GET['cat'] is interpolated directly into the SQL string using heredoc syntax. No allow-list or validation is visible in the provided code context.",
105
+ "suggested_subtype": "string_interpolation",
106
+ "suggested_cwe": [
107
+ "CWE-89"
108
+ ],
109
+ "attack_vector": {
110
+ "method": "GET",
111
+ "path": "/search.php",
112
+ "target_param": "cat"
113
+ }
114
+ }
115
+ ]
116
+ }