@hoanghainh/komagu 2.4.0 → 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (247) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/LICENSE +202 -0
  3. package/README.md +1 -0
  4. package/assess/lsa/examples/eval-run-6/gptoss-a/ai-run-stats.json +87 -0
  5. package/assess/lsa/examples/eval-run-6/gptoss-a/auth-model.md +120 -0
  6. package/assess/lsa/examples/eval-run-6/gptoss-a/batches/index.json +60 -0
  7. package/assess/lsa/examples/eval-run-6/gptoss-a/batches/injection-001.json +383 -0
  8. package/assess/lsa/examples/eval-run-6/gptoss-a/batches/injection-002.json +205 -0
  9. package/assess/lsa/examples/eval-run-6/gptoss-a/batches/privilege-001.json +838 -0
  10. package/assess/lsa/examples/eval-run-6/gptoss-a/batches/privilege-002.json +124 -0
  11. package/assess/lsa/examples/eval-run-6/gptoss-a/batches/routes-001.json +778 -0
  12. package/assess/lsa/examples/eval-run-6/gptoss-a/batches/routes-002.json +546 -0
  13. package/assess/lsa/examples/eval-run-6/gptoss-a/batches/routes-003.json +661 -0
  14. package/assess/lsa/examples/eval-run-6/gptoss-a/batches/routes-004.json +659 -0
  15. package/assess/lsa/examples/eval-run-6/gptoss-a/batches/routes-005.json +612 -0
  16. package/assess/lsa/examples/eval-run-6/gptoss-a/batches/routes-006.json +106 -0
  17. package/assess/lsa/examples/eval-run-6/gptoss-a/coverage.json +19 -0
  18. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/bola-routes-001.json +516 -0
  19. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/bola-routes-002.json +332 -0
  20. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/bola-routes-003.json +218 -0
  21. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/bola-routes-004.json +561 -0
  22. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/bola-routes-005.json +316 -0
  23. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/bola-routes-006.json +14 -0
  24. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/inj-injection-001.json +782 -0
  25. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/inj-injection-002.json +418 -0
  26. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/priv-privilege-001.json +627 -0
  27. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/priv-privilege-002.json +253 -0
  28. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-1.json +68 -0
  29. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-10.json +68 -0
  30. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-11.json +61 -0
  31. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-12.json +60 -0
  32. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-13.json +60 -0
  33. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-14.json +66 -0
  34. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-15.json +69 -0
  35. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-16.json +60 -0
  36. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-17.json +61 -0
  37. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-18.json +69 -0
  38. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-19.json +64 -0
  39. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-2.json +60 -0
  40. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-20.json +60 -0
  41. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-21.json +61 -0
  42. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-22.json +50 -0
  43. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-3.json +60 -0
  44. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-4.json +60 -0
  45. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-5.json +60 -0
  46. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-6.json +70 -0
  47. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-7.json +60 -0
  48. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-8.json +60 -0
  49. package/assess/lsa/examples/eval-run-6/gptoss-a/findings/verified-9.json +60 -0
  50. package/assess/lsa/examples/eval-run-6/gptoss-a/findings.json +4857 -0
  51. package/assess/lsa/examples/eval-run-6/gptoss-a/mass-assignment.candidates.json +232 -0
  52. package/assess/lsa/examples/eval-run-6/gptoss-a/report.ja.md +2112 -0
  53. package/assess/lsa/examples/eval-run-6/gptoss-a/report.md +2112 -0
  54. package/assess/lsa/examples/eval-run-6/gptoss-a/routes/routes-001.json +425 -0
  55. package/assess/lsa/examples/eval-run-6/gptoss-a/routes/routes-002.json +333 -0
  56. package/assess/lsa/examples/eval-run-6/gptoss-a/routes/routes-003.json +400 -0
  57. package/assess/lsa/examples/eval-run-6/gptoss-a/routes/routes-004.json +403 -0
  58. package/assess/lsa/examples/eval-run-6/gptoss-a/routes/routes-005.json +398 -0
  59. package/assess/lsa/examples/eval-run-6/gptoss-a/routes/routes-006.json +63 -0
  60. package/assess/lsa/examples/eval-run-6/gptoss-a/score.json +82 -0
  61. package/assess/lsa/examples/eval-run-6/gptoss-a/stack-profile.json +225 -0
  62. package/assess/lsa/examples/eval-run-6/gptoss-b/ai-run-stats.json +91 -0
  63. package/assess/lsa/examples/eval-run-6/gptoss-b/auth-model.md +120 -0
  64. package/assess/lsa/examples/eval-run-6/gptoss-b/batches/index.json +60 -0
  65. package/assess/lsa/examples/eval-run-6/gptoss-b/batches/injection-001.json +383 -0
  66. package/assess/lsa/examples/eval-run-6/gptoss-b/batches/injection-002.json +205 -0
  67. package/assess/lsa/examples/eval-run-6/gptoss-b/batches/privilege-001.json +838 -0
  68. package/assess/lsa/examples/eval-run-6/gptoss-b/batches/privilege-002.json +124 -0
  69. package/assess/lsa/examples/eval-run-6/gptoss-b/batches/routes-001.json +778 -0
  70. package/assess/lsa/examples/eval-run-6/gptoss-b/batches/routes-002.json +546 -0
  71. package/assess/lsa/examples/eval-run-6/gptoss-b/batches/routes-003.json +661 -0
  72. package/assess/lsa/examples/eval-run-6/gptoss-b/batches/routes-004.json +659 -0
  73. package/assess/lsa/examples/eval-run-6/gptoss-b/batches/routes-005.json +612 -0
  74. package/assess/lsa/examples/eval-run-6/gptoss-b/batches/routes-006.json +106 -0
  75. package/assess/lsa/examples/eval-run-6/gptoss-b/coverage.json +21 -0
  76. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/bola-routes-001.json +593 -0
  77. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/bola-routes-002.json +367 -0
  78. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/bola-routes-003.json +207 -0
  79. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/bola-routes-004.json +477 -0
  80. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/bola-routes-005.json +341 -0
  81. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/bola-routes-006.json +14 -0
  82. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/inj-injection-001.json +821 -0
  83. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/inj-injection-002.json +410 -0
  84. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/priv-privilege-001.json +649 -0
  85. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/priv-privilege-002.json +222 -0
  86. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-1.json +60 -0
  87. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-10.json +67 -0
  88. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-11.json +68 -0
  89. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-12.json +60 -0
  90. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-13.json +60 -0
  91. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-14.json +64 -0
  92. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-15.json +70 -0
  93. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-16.json +60 -0
  94. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-17.json +61 -0
  95. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-18.json +60 -0
  96. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-19.json +65 -0
  97. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-2.json +60 -0
  98. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-20.json +60 -0
  99. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-21.json +62 -0
  100. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-22.json +50 -0
  101. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-3.json +60 -0
  102. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-4.json +60 -0
  103. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-5.json +60 -0
  104. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-6.json +60 -0
  105. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-7.json +64 -0
  106. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-8.json +60 -0
  107. package/assess/lsa/examples/eval-run-6/gptoss-b/findings/verified-9.json +60 -0
  108. package/assess/lsa/examples/eval-run-6/gptoss-b/findings.json +4966 -0
  109. package/assess/lsa/examples/eval-run-6/gptoss-b/mass-assignment.candidates.json +232 -0
  110. package/assess/lsa/examples/eval-run-6/gptoss-b/routes/routes-001.json +425 -0
  111. package/assess/lsa/examples/eval-run-6/gptoss-b/routes/routes-002.json +333 -0
  112. package/assess/lsa/examples/eval-run-6/gptoss-b/routes/routes-003.json +400 -0
  113. package/assess/lsa/examples/eval-run-6/gptoss-b/routes/routes-004.json +403 -0
  114. package/assess/lsa/examples/eval-run-6/gptoss-b/routes/routes-005.json +398 -0
  115. package/assess/lsa/examples/eval-run-6/gptoss-b/routes/routes-006.json +63 -0
  116. package/assess/lsa/examples/eval-run-6/gptoss-b/score.json +87 -0
  117. package/assess/lsa/examples/eval-run-6/gptoss-b/stack-profile.json +225 -0
  118. package/assess/lsa/examples/eval-run-6/ground-truth.json +851 -0
  119. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/ai-run-stats.json +96 -0
  120. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/auth-model.md +191 -0
  121. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/batches/index.json +60 -0
  122. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/batches/injection-001.json +383 -0
  123. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/batches/injection-002.json +205 -0
  124. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/batches/privilege-001.json +838 -0
  125. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/batches/privilege-002.json +124 -0
  126. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/batches/routes-001.json +778 -0
  127. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/batches/routes-002.json +546 -0
  128. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/batches/routes-003.json +661 -0
  129. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/batches/routes-004.json +659 -0
  130. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/batches/routes-005.json +612 -0
  131. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/batches/routes-006.json +106 -0
  132. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/coverage.json +31 -0
  133. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/bola-routes-001.json +527 -0
  134. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/bola-routes-002.json +568 -0
  135. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/bola-routes-003.json +467 -0
  136. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/bola-routes-004.json +342 -0
  137. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/bola-routes-005.json +693 -0
  138. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/bola-routes-006.json +16 -0
  139. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/inj-injection-001.json +1123 -0
  140. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/inj-injection-002.json +391 -0
  141. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/priv-privilege-001.json +726 -0
  142. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/priv-privilege-002.json +306 -0
  143. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-1.json +137 -0
  144. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-10.json +106 -0
  145. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-11.json +81 -0
  146. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-12.json +135 -0
  147. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-13.json +135 -0
  148. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-14.json +135 -0
  149. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-15.json +110 -0
  150. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-16.json +116 -0
  151. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-17.json +141 -0
  152. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-18.json +135 -0
  153. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-19.json +140 -0
  154. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-2.json +135 -0
  155. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-20.json +82 -0
  156. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-21.json +74 -0
  157. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-22.json +99 -0
  158. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-3.json +140 -0
  159. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-4.json +145 -0
  160. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-5.json +135 -0
  161. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-6.json +135 -0
  162. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-7.json +87 -0
  163. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-8.json +125 -0
  164. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings/verified-9.json +135 -0
  165. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/findings.json +6989 -0
  166. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/mass-assignment.candidates.json +232 -0
  167. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/memory.log +36 -0
  168. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/routes/routes-001.json +425 -0
  169. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/routes/routes-002.json +333 -0
  170. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/routes/routes-003.json +400 -0
  171. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/routes/routes-004.json +403 -0
  172. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/routes/routes-005.json +398 -0
  173. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/routes/routes-006.json +63 -0
  174. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/score.json +106 -0
  175. package/assess/lsa/examples/eval-run-6/qwen-16k-nothink/stack-profile.json +225 -0
  176. package/assess/lsa/examples/eval-run-6/qwen-16k-partial/auth-model.md +517 -0
  177. package/assess/lsa/examples/eval-run-6/qwen-16k-partial/findings/bola-routes-001.json +5 -0
  178. package/assess/lsa/examples/eval-run-6/qwen-16k-partial/findings/bola-routes-002.json +428 -0
  179. package/assess/lsa/examples/eval-run-6/qwen-16k-partial/findings/bola-routes-003.json +388 -0
  180. package/assess/lsa/examples/eval-run-6/qwen-16k-partial/findings/bola-routes-004.json +463 -0
  181. package/assess/lsa/examples/eval-run-6/qwen-16k-partial/findings/bola-routes-005.json +5 -0
  182. package/assess/lsa/examples/eval-run-6/qwen-16k-partial/findings/bola-routes-006.json +67 -0
  183. package/assess/lsa/examples/eval-run-6/qwen-16k-partial/findings/inj-injection-001.json +964 -0
  184. package/assess/lsa/examples/eval-run-6/qwen-16k-partial/findings.partial.json +1872 -0
  185. package/assess/lsa/examples/eval-run-6/qwen-16k-partial/memory.log +194 -0
  186. package/assess/lsa/examples/eval-run-6/qwen-16k-partial/score.partial.json +108 -0
  187. package/assess/lsa/examples/eval-run-6/qwen-16k-partial/stack-profile.json +225 -0
  188. package/assess/lsa/scripts/detect_stack.py +13 -5
  189. package/assess/lsa/scripts/find_injection.py +35 -2
  190. package/assess/lsa/scripts/java_routes.py +323 -0
  191. package/assess/lsa/scripts/laravel_routes.py +102 -0
  192. package/assess/lsa/scripts/lsa_common.py +72 -2
  193. package/assess/lsa/scripts/map_routes.py +40 -161
  194. package/assess/lsa/scripts/merge_findings.py +2 -0
  195. package/assess/lsa/tests/EVAL-RESULTS.md +126 -0
  196. package/assess/lsa/tests/test_eval_run_6.py +104 -0
  197. package/assess/lsa/tests/test_java_legacy_realistic.py +453 -0
  198. package/assess/lsa/tests/test_laravel_routes.py +95 -0
  199. package/contracts/schemas/persona-suite.schema.json +38 -2
  200. package/examples/member-portal/backend-dotnet/Dockerfile +2 -1
  201. package/examples/member-portal/backend-spring/Dockerfile +2 -0
  202. package/examples/member-portal/docker-compose.yml +1 -1
  203. package/examples/member-portal/frontend/Dockerfile +3 -2
  204. package/examples/member-portal/frontend/package-lock.json +24 -656
  205. package/examples/member-portal/frontend/package.json +1 -1
  206. package/operate/ai/client.py +22 -9
  207. package/operate/ai/runner.py +24 -4
  208. package/operate/cli/__init__.py +1 -1
  209. package/operate/cli/commands/fix.py +4 -0
  210. package/operate/cli/commands/leak_check.py +75 -0
  211. package/operate/cli/commands/protect.py +32 -3
  212. package/operate/cli/commands/scan.py +8 -1
  213. package/operate/cli/commands/test.py +131 -15
  214. package/operate/cli/main.py +5 -3
  215. package/operate/cross_user_tester/persona_matrix.py +118 -25
  216. package/operate/cross_user_tester/runner.py +190 -7
  217. package/operate/cross_user_tester/session_config.py +180 -0
  218. package/operate/cross_user_tester/session_http.py +288 -0
  219. package/operate/devsecops/leak_check.py +314 -0
  220. package/operate/remediator/runner.py +18 -1
  221. package/operate/remediator/strategies.py +2 -2
  222. package/operate/simulate/scenarios.py +2 -2
  223. package/operate/tests/mock_legacy_session_app.py +160 -0
  224. package/operate/tests/test_ai_reasoning_effort.py +65 -0
  225. package/operate/tests/test_ai_route_inventory.py +53 -0
  226. package/operate/tests/test_cross_user_session.py +565 -0
  227. package/operate/tests/test_docker_packaging.py +3 -3
  228. package/operate/tests/test_headless_ai.py +6 -0
  229. package/operate/tests/test_leak_check.py +250 -0
  230. package/operate/tests/test_legacy_session_edge.py +192 -0
  231. package/operate/tests/test_pilot_safeguards.py +245 -0
  232. package/operate/tests/test_remediator_java_legacy.py +330 -0
  233. package/package.json +2 -1
  234. package/remediate/authz/patcher.py +120 -11
  235. package/remediate/authz/tests/test_bola_patcher.py +4 -1
  236. package/remediate/edge/coraza/Caddyfile +1 -1
  237. package/remediate/edge/coraza/Dockerfile +9 -0
  238. package/remediate/edge/coraza/rules/coraza-crs-custom.conf +12 -0
  239. package/remediate/edge/coraza/virtual_patcher.py +24 -0
  240. package/remediate/edge/docker-compose.yml +7 -2
  241. package/remediate/edge/kong/kong-legacy-session.yaml +51 -0
  242. package/remediate/edge/mock-backend/Dockerfile +2 -0
  243. package/remediate/edge/tests/test_edge_security.py +21 -1
  244. package/remediate/resilience/terraform/backup_worm.tf +39 -1
  245. package/remediate/resilience/terraform/main.tf +15 -3
  246. package/remediate/resilience/terraform/variables.tf +11 -0
  247. package/remediate/resilience/tests/test_resilience.py +16 -0
@@ -0,0 +1,821 @@
1
+ {
2
+ "batch_id": "injection-001",
3
+ "findings": [
4
+ {
5
+ "finding_id": "INJ-I-0001",
6
+ "category": "sql_injection",
7
+ "subtype": "string_concatenation",
8
+ "title": "SQL Injection in classic-asp/shop/member.asp:6",
9
+ "candidate_id": "I-0001",
10
+ "location": {
11
+ "file": "classic-asp/shop/member.asp",
12
+ "start_line": 6
13
+ },
14
+ "evidence": [
15
+ {
16
+ "file": "classic-asp/shop/member.asp",
17
+ "start_line": 6,
18
+ "code": "sql = \"UPDATE members SET name = '\" & Replace(Request.Form(\"name\"), \"'\", \"''\") & \"'\"",
19
+ "why": "Unsanitized input concatenated into query",
20
+ "line": 6
21
+ },
22
+ {
23
+ "file": "classic-asp/shop/member.asp",
24
+ "start_line": 7,
25
+ "code": "sql = sql & \" WHERE member_id = \" & Request.Form(\"member_id\")",
26
+ "why": "Unsanitized input concatenated into query",
27
+ "line": 7
28
+ }
29
+ ],
30
+ "severity": "critical",
31
+ "confidence": "high",
32
+ "cwe": [
33
+ "CWE-89"
34
+ ],
35
+ "recommendation": "Use parameterized queries or proper escaping",
36
+ "status": "unverified"
37
+ },
38
+ {
39
+ "finding_id": "INJ-I-0002",
40
+ "category": "sql_injection",
41
+ "subtype": "string_concatenation",
42
+ "title": "SQL Injection in classic-asp/shop/member.asp:7",
43
+ "candidate_id": "I-0002",
44
+ "location": {
45
+ "file": "classic-asp/shop/member.asp",
46
+ "start_line": 7
47
+ },
48
+ "evidence": [
49
+ {
50
+ "file": "classic-asp/shop/member.asp",
51
+ "start_line": 7,
52
+ "code": "sql = sql & \" WHERE member_id = \" & Request.Form(\"member_id\")",
53
+ "why": "Unsanitized input concatenated into query",
54
+ "line": 7
55
+ }
56
+ ],
57
+ "severity": "critical",
58
+ "confidence": "high",
59
+ "cwe": [
60
+ "CWE-89"
61
+ ],
62
+ "recommendation": "Use parameterized queries or proper escaping",
63
+ "status": "unverified"
64
+ },
65
+ {
66
+ "finding_id": "INJ-I-0003",
67
+ "category": "sql_injection",
68
+ "subtype": "string_concatenation",
69
+ "title": "SQL Injection in classic-asp/shop/member.asp:10",
70
+ "candidate_id": "I-0003",
71
+ "location": {
72
+ "file": "classic-asp/shop/member.asp",
73
+ "start_line": 10
74
+ },
75
+ "evidence": [
76
+ {
77
+ "file": "classic-asp/shop/member.asp",
78
+ "start_line": 10,
79
+ "code": "conn.Execute \"DELETE FROM members WHERE member_id = \" & Request.QueryString(\"member_id\")",
80
+ "why": "Unsanitized input concatenated into query",
81
+ "line": 10
82
+ }
83
+ ],
84
+ "severity": "critical",
85
+ "confidence": "high",
86
+ "cwe": [
87
+ "CWE-89"
88
+ ],
89
+ "recommendation": "Use parameterized queries or proper escaping",
90
+ "status": "unverified"
91
+ },
92
+ {
93
+ "finding_id": "INJ-I-0004",
94
+ "category": "sql_injection",
95
+ "subtype": "string_concatenation",
96
+ "title": "SQL Injection in classic-asp/shop/order.asp:6",
97
+ "candidate_id": "I-0004",
98
+ "location": {
99
+ "file": "classic-asp/shop/order.asp",
100
+ "start_line": 6
101
+ },
102
+ "evidence": [
103
+ {
104
+ "file": "classic-asp/shop/order.asp",
105
+ "start_line": 6,
106
+ "code": "Set rs = conn.Execute(\"SELECT * FROM orders WHERE id = \" & id)",
107
+ "why": "Unsanitized input concatenated into query",
108
+ "line": 6
109
+ }
110
+ ],
111
+ "severity": "critical",
112
+ "confidence": "high",
113
+ "cwe": [
114
+ "CWE-89"
115
+ ],
116
+ "recommendation": "Use parameterized queries or proper escaping",
117
+ "status": "unverified"
118
+ },
119
+ {
120
+ "finding_id": "INJ-I-0005",
121
+ "category": "sql_injection",
122
+ "subtype": "string_concatenation",
123
+ "title": "SQL Injection in classic-asp/shop/order.asp:12",
124
+ "candidate_id": "I-0005",
125
+ "location": {
126
+ "file": "classic-asp/shop/order.asp",
127
+ "start_line": 12
128
+ },
129
+ "evidence": [
130
+ {
131
+ "file": "classic-asp/shop/order.asp",
132
+ "start_line": 12,
133
+ "code": "Set rs2 = conn.Execute(\"SELECT * FROM orders WHERE id = \" & sid & \" AND user_id = \" & CLng(Session(\"UserID\")))",
134
+ "why": "Unsanitized input concatenated into query",
135
+ "line": 12
136
+ }
137
+ ],
138
+ "severity": "critical",
139
+ "confidence": "high",
140
+ "cwe": [
141
+ "CWE-89"
142
+ ],
143
+ "recommendation": "Use parameterized queries or proper escaping",
144
+ "status": "unverified"
145
+ },
146
+ {
147
+ "finding_id": "INJ-I-0006",
148
+ "category": "sql_injection",
149
+ "subtype": "string_concatenation",
150
+ "title": "SQL Injection in coldfusion/app/OrderService.cfc:5",
151
+ "candidate_id": "I-0006",
152
+ "location": {
153
+ "file": "coldfusion/app/OrderService.cfc",
154
+ "start_line": 5
155
+ },
156
+ "evidence": [
157
+ {
158
+ "file": "coldfusion/app/OrderService.cfc",
159
+ "start_line": 5,
160
+ "code": "SELECT * FROM orders WHERE id = #arguments.orderId#",
161
+ "why": "Unsanitized input concatenated into query",
162
+ "line": 5
163
+ }
164
+ ],
165
+ "severity": "critical",
166
+ "confidence": "high",
167
+ "cwe": [
168
+ "CWE-89"
169
+ ],
170
+ "recommendation": "Use cfqueryparam or parameterized queries",
171
+ "status": "unverified"
172
+ },
173
+ {
174
+ "finding_id": "INJ-I-0007",
175
+ "category": "sql_injection",
176
+ "subtype": "string_concatenation",
177
+ "title": "SQL Injection in coldfusion/app/order.cfm:3",
178
+ "candidate_id": "I-0007",
179
+ "location": {
180
+ "file": "coldfusion/app/order.cfm",
181
+ "start_line": 3
182
+ },
183
+ "evidence": [
184
+ {
185
+ "file": "coldfusion/app/order.cfm",
186
+ "start_line": 3,
187
+ "code": "SELECT * FROM orders WHERE id = #url.id#",
188
+ "why": "Unsanitized input concatenated into query",
189
+ "line": 3
190
+ }
191
+ ],
192
+ "severity": "critical",
193
+ "confidence": "high",
194
+ "cwe": [
195
+ "CWE-89"
196
+ ],
197
+ "recommendation": "Use cfqueryparam or parameterized queries",
198
+ "status": "unverified"
199
+ },
200
+ {
201
+ "finding_id": "INJ-I-0010",
202
+ "category": "sql_injection",
203
+ "subtype": "string_concatenation",
204
+ "title": "SQL Injection in dotnet-legacy/Web/Orders/EditOrder.aspx.vb:7",
205
+ "candidate_id": "I-0010",
206
+ "location": {
207
+ "file": "dotnet-legacy/Web/Orders/EditOrder.aspx.vb",
208
+ "start_line": 8
209
+ },
210
+ "evidence": [
211
+ {
212
+ "file": "dotnet-legacy/Web/Orders/EditOrder.aspx.vb",
213
+ "start_line": 7,
214
+ "code": "Dim sql As String = \"UPDATE Orders SET Note = '\" & txtNote.Text & \"'\"",
215
+ "why": "Unsanitized input concatenated into query",
216
+ "line": 7
217
+ },
218
+ {
219
+ "file": "dotnet-legacy/Web/Orders/EditOrder.aspx.vb",
220
+ "start_line": 8,
221
+ "code": "sql &= \" WHERE OrderId = \" & hfOrderId.Value",
222
+ "why": "Unsanitized input concatenated into query",
223
+ "line": 8
224
+ }
225
+ ],
226
+ "severity": "critical",
227
+ "confidence": "high",
228
+ "cwe": [
229
+ "CWE-89"
230
+ ],
231
+ "recommendation": "Use parameterized queries or proper escaping",
232
+ "status": "unverified"
233
+ },
234
+ {
235
+ "finding_id": "INJ-I-0011",
236
+ "category": "sql_injection",
237
+ "subtype": "string_concatenation",
238
+ "title": "SQL Injection in dotnet-legacy/Web/Orders/OrderDetail.aspx.cs:13",
239
+ "candidate_id": "I-0011",
240
+ "location": {
241
+ "file": "dotnet-legacy/Web/Orders/OrderDetail.aspx.cs",
242
+ "start_line": 13
243
+ },
244
+ "evidence": [
245
+ {
246
+ "file": "dotnet-legacy/Web/Orders/OrderDetail.aspx.cs",
247
+ "start_line": 13,
248
+ "code": "var cmd = new SqlCommand(\"SELECT * FROM Orders WHERE OrderId = \" + id, conn);",
249
+ "why": "Unsanitized input concatenated into query",
250
+ "line": 13
251
+ },
252
+ {
253
+ "file": "dotnet-legacy/Web/Orders/OrderDetail.aspx.cs",
254
+ "start_line": 19,
255
+ "code": "string sql2 = string.Format(\"SELECT * FROM Logs WHERE Ref = '{0}'\", Request[\"ref\"]);",
256
+ "why": "Unsanitized input concatenated into query",
257
+ "line": 19
258
+ },
259
+ {
260
+ "file": "dotnet-legacy/Web/Orders/OrderDetail.aspx.cs",
261
+ "start_line": 20,
262
+ "code": "string sql3 = $\"DELETE FROM Carts WHERE CartId = {Request.Form[\\\"cart\\\"]}\";",
263
+ "why": "Unsanitized input concatenated into query",
264
+ "line": 20
265
+ }
266
+ ],
267
+ "severity": "critical",
268
+ "confidence": "high",
269
+ "cwe": [
270
+ "CWE-89"
271
+ ],
272
+ "recommendation": "Use parameterized queries or proper escaping",
273
+ "status": "unverified"
274
+ },
275
+ {
276
+ "finding_id": "INJ-I-0012",
277
+ "category": "sql_injection",
278
+ "subtype": "string_concatenation",
279
+ "title": "SQL Injection in dotnet-legacy/Web/Orders/OrderDetail.aspx.cs:19",
280
+ "candidate_id": "I-0012",
281
+ "location": {
282
+ "file": "dotnet-legacy/Web/Orders/OrderDetail.aspx.cs",
283
+ "start_line": 19
284
+ },
285
+ "evidence": [
286
+ {
287
+ "file": "dotnet-legacy/Web/Orders/OrderDetail.aspx.cs",
288
+ "start_line": 19,
289
+ "code": "string sql2 = string.Format(\"SELECT * FROM Logs WHERE Ref = '{0}'\", Request[\"ref\"]);",
290
+ "why": "Unsanitized input concatenated into query",
291
+ "line": 19
292
+ },
293
+ {
294
+ "file": "dotnet-legacy/Web/Orders/OrderDetail.aspx.cs",
295
+ "start_line": 20,
296
+ "code": "string sql3 = $\"DELETE FROM Carts WHERE CartId = {Request.Form[\\\"cart\\\"]}\";",
297
+ "why": "Unsanitized input concatenated into query",
298
+ "line": 20
299
+ }
300
+ ],
301
+ "severity": "critical",
302
+ "confidence": "high",
303
+ "cwe": [
304
+ "CWE-89"
305
+ ],
306
+ "recommendation": "Use parameterized queries or proper escaping",
307
+ "status": "unverified"
308
+ },
309
+ {
310
+ "finding_id": "INJ-I-0013",
311
+ "category": "sql_injection",
312
+ "subtype": "string_concatenation",
313
+ "title": "SQL Injection in dotnet-legacy/Web/Orders/OrderDetail.aspx.cs:20",
314
+ "candidate_id": "I-0013",
315
+ "location": {
316
+ "file": "dotnet-legacy/Web/Orders/OrderDetail.aspx.cs",
317
+ "start_line": 20
318
+ },
319
+ "evidence": [
320
+ {
321
+ "file": "dotnet-legacy/Web/Orders/OrderDetail.aspx.cs",
322
+ "start_line": 20,
323
+ "code": "string sql3 = $\"DELETE FROM Carts WHERE CartId = {Request.Form[\\\"cart\\\"]}\";",
324
+ "why": "Unsanitized input concatenated into query",
325
+ "line": 20
326
+ }
327
+ ],
328
+ "severity": "critical",
329
+ "confidence": "high",
330
+ "cwe": [
331
+ "CWE-89"
332
+ ],
333
+ "recommendation": "Use parameterized queries or proper escaping",
334
+ "status": "unverified"
335
+ },
336
+ {
337
+ "finding_id": "INJ-I-0014",
338
+ "category": "sql_injection",
339
+ "subtype": "string_concatenation",
340
+ "title": "SQL Injection in java-legacy/WebContent/order/detail.jsp:5",
341
+ "candidate_id": "I-0014",
342
+ "location": {
343
+ "file": "java-legacy/WebContent/order/detail.jsp",
344
+ "start_line": 5
345
+ },
346
+ "evidence": [
347
+ {
348
+ "file": "java-legacy/WebContent/order/detail.jsp",
349
+ "start_line": 5,
350
+ "code": "ResultSet rs = c.createStatement().executeQuery(\"SELECT * FROM orders WHERE order_no = '\" + no + \"'\");",
351
+ "why": "Unsanitized input concatenated into query",
352
+ "line": 5
353
+ }
354
+ ],
355
+ "severity": "critical",
356
+ "confidence": "high",
357
+ "cwe": [
358
+ "CWE-89"
359
+ ],
360
+ "recommendation": "Use prepared statements or parameterized queries",
361
+ "status": "unverified"
362
+ },
363
+ {
364
+ "finding_id": "INJ-I-0016",
365
+ "category": "sql_injection",
366
+ "subtype": "string_concatenation",
367
+ "title": "SQL Injection in java-legacy/src/com/acme/struts/EditUserAction.java:13",
368
+ "candidate_id": "I-0016",
369
+ "location": {
370
+ "file": "java-legacy/src/com/acme/struts/EditUserAction.java",
371
+ "start_line": 13
372
+ },
373
+ "evidence": [
374
+ {
375
+ "file": "java-legacy/src/com/acme/struts/EditUserAction.java",
376
+ "start_line": 13,
377
+ "code": "PreparedStatement ps = conn.prepareStatement(\"UPDATE users SET email = '\" + email + \"' WHERE id = \" + userId);",
378
+ "why": "Unsanitized input concatenated into query",
379
+ "line": 13
380
+ }
381
+ ],
382
+ "severity": "critical",
383
+ "confidence": "high",
384
+ "cwe": [
385
+ "CWE-89"
386
+ ],
387
+ "recommendation": "Use parameterized queries or proper escaping",
388
+ "status": "unverified"
389
+ },
390
+ {
391
+ "finding_id": "INJ-I-0017",
392
+ "category": "sql_injection",
393
+ "subtype": "string_concatenation",
394
+ "title": "SQL Injection in java-legacy/src/com/acme/web/InvoiceController.java:29",
395
+ "candidate_id": "I-0017",
396
+ "location": {
397
+ "file": "java-legacy/src/com/acme/web/InvoiceController.java",
398
+ "start_line": 29
399
+ },
400
+ "evidence": [
401
+ {
402
+ "file": "java-legacy/src/com/acme/web/InvoiceController.java",
403
+ "start_line": 29,
404
+ "code": "model.addAttribute(\"list\", session.createQuery(\"from Invoice i where i.customer = '\" + customer + \"'\").list());",
405
+ "why": "Unsanitized input concatenated into query",
406
+ "line": 29
407
+ }
408
+ ],
409
+ "severity": "critical",
410
+ "confidence": "high",
411
+ "cwe": [
412
+ "CWE-89"
413
+ ],
414
+ "recommendation": "Use parameterized queries or proper escaping",
415
+ "status": "unverified"
416
+ },
417
+ {
418
+ "finding_id": "INJ-I-0020",
419
+ "category": "sql_injection",
420
+ "subtype": "string_concatenation",
421
+ "title": "SQL Injection in node-express/routes/orders.js:17",
422
+ "candidate_id": "I-0020",
423
+ "location": {
424
+ "file": "node-express/routes/orders.js",
425
+ "start_line": 17
426
+ },
427
+ "evidence": [
428
+ {
429
+ "file": "node-express/routes/orders.js",
430
+ "start_line": 17,
431
+ "code": "db.query(\"SELECT * FROM reports WHERE month = '\" + req.query.month + \"'\", function (e, rows) { res.json(rows); });",
432
+ "why": "Unsanitized input concatenated into query",
433
+ "line": 17
434
+ },
435
+ {
436
+ "file": "node-express/routes/orders.js",
437
+ "start_line": 29,
438
+ "code": "db.query(`SELECT COUNT(*) AS n FROM orders WHERE shop_id = ${req.query.shop}`, function (e, r) { res.json(r); });",
439
+ "why": "Unsanitized input concatenated into query",
440
+ "line": 29
441
+ }
442
+ ],
443
+ "severity": "critical",
444
+ "confidence": "high",
445
+ "cwe": [
446
+ "CWE-89"
447
+ ],
448
+ "recommendation": "Use parameterized queries or proper escaping",
449
+ "status": "unverified"
450
+ },
451
+ {
452
+ "finding_id": "INJ-I-0021",
453
+ "category": "sql_injection",
454
+ "subtype": "string_concatenation",
455
+ "title": "SQL Injection in node-express/routes/orders.js:17",
456
+ "candidate_id": "I-0021",
457
+ "location": {
458
+ "file": "node-express/routes/orders.js",
459
+ "start_line": 29
460
+ },
461
+ "evidence": [
462
+ {
463
+ "file": "node-express/routes/orders.js",
464
+ "start_line": 17,
465
+ "code": "db.query(\"SELECT * FROM reports WHERE month = '\" + req.query.month + \"'\", function (e, rows) { res.json(rows); });",
466
+ "why": "Unsanitized input concatenated into query",
467
+ "line": 17
468
+ },
469
+ {
470
+ "file": "node-express/routes/orders.js",
471
+ "start_line": 29,
472
+ "code": "db.query(`SELECT COUNT(*) AS n FROM orders WHERE shop_id = ${req.query.shop}`, function (e, r) { res.json(r); });",
473
+ "why": "Unsanitized input concatenated into query",
474
+ "line": 29
475
+ }
476
+ ],
477
+ "severity": "critical",
478
+ "confidence": "high",
479
+ "cwe": [
480
+ "CWE-89"
481
+ ],
482
+ "recommendation": "Use parameterized queries or proper escaping",
483
+ "status": "unverified"
484
+ },
485
+ {
486
+ "finding_id": "INJ-I-0022",
487
+ "category": "sql_injection",
488
+ "subtype": "string_concatenation",
489
+ "title": "SQL Injection in node-express/routes/orders.js:17",
490
+ "candidate_id": "I-0022",
491
+ "location": {
492
+ "file": "node-express/routes/orders.js",
493
+ "start_line": 21
494
+ },
495
+ "evidence": [
496
+ {
497
+ "file": "node-express/routes/orders.js",
498
+ "start_line": 17,
499
+ "code": "db.query(\"SELECT * FROM reports WHERE month = '\" + req.query.month + \"'\", function (e, rows) { res.json(rows); });",
500
+ "why": "Unsanitized input concatenated into query",
501
+ "line": 17
502
+ },
503
+ {
504
+ "file": "node-express/routes/orders.js",
505
+ "start_line": 29,
506
+ "code": "db.query(`SELECT COUNT(*) AS n FROM orders WHERE shop_id = ${req.query.shop}`, function (e, r) { res.json(r); });",
507
+ "why": "Unsanitized input concatenated into query",
508
+ "line": 29
509
+ }
510
+ ],
511
+ "severity": "critical",
512
+ "confidence": "high",
513
+ "cwe": [
514
+ "CWE-89"
515
+ ],
516
+ "recommendation": "Use parameterized queries or proper escaping",
517
+ "status": "unverified"
518
+ },
519
+ {
520
+ "finding_id": "INJ-I-0023",
521
+ "category": "sql_injection",
522
+ "subtype": "string_concatenation",
523
+ "title": "SQL Injection in node-express/routes/orders.js:25",
524
+ "candidate_id": "I-0023",
525
+ "location": {
526
+ "file": "node-express/routes/orders.js",
527
+ "start_line": 25
528
+ },
529
+ "evidence": [
530
+ {
531
+ "file": "node-express/routes/orders.js",
532
+ "start_line": 25,
533
+ "code": "db.collection('items').find({ $where: \"this.name == '\" + req.query.n + \"'\" }).toArray(function (e, r) { res.json(r); });",
534
+ "why": "Unsanitized input concatenated into query",
535
+ "line": 25
536
+ }
537
+ ],
538
+ "severity": "critical",
539
+ "confidence": "high",
540
+ "cwe": [
541
+ "CWE-89"
542
+ ],
543
+ "recommendation": "Use parameterized queries or proper escaping",
544
+ "status": "unverified"
545
+ },
546
+ {
547
+ "finding_id": "INJ-I-0024",
548
+ "category": "sql_injection",
549
+ "subtype": "string_concatenation",
550
+ "title": "SQL Injection in perl-cgi/cgi-bin/order.cgi:13",
551
+ "candidate_id": "I-0024",
552
+ "location": {
553
+ "file": "perl-cgi/cgi-bin/order.cgi",
554
+ "start_line": 13
555
+ },
556
+ "evidence": [
557
+ {
558
+ "file": "perl-cgi/cgi-bin/order.cgi",
559
+ "start_line": 13,
560
+ "code": "my $sth = $dbh->prepare(\"SELECT * FROM orders WHERE id = $id\");",
561
+ "why": "Unsanitized input concatenated into query",
562
+ "line": 13
563
+ },
564
+ {
565
+ "file": "perl-cgi/cgi-bin/order.cgi",
566
+ "start_line": 19,
567
+ "code": "$dbh->do(\"DELETE FROM carts WHERE cart_id = \" . $q->param('cart'))",
568
+ "why": "Unsanitized input concatenated into query",
569
+ "line": 19
570
+ }
571
+ ],
572
+ "severity": "critical",
573
+ "confidence": "high",
574
+ "cwe": [
575
+ "CWE-89"
576
+ ],
577
+ "recommendation": "Use parameterized queries or proper escaping",
578
+ "status": "unverified"
579
+ },
580
+ {
581
+ "finding_id": "INJ-I-0025",
582
+ "category": "sql_injection",
583
+ "subtype": "string_concatenation",
584
+ "title": "SQL Injection in perl-cgi/cgi-bin/order.cgi:19",
585
+ "candidate_id": "I-0025",
586
+ "location": {
587
+ "file": "perl-cgi/cgi-bin/order.cgi",
588
+ "start_line": 19
589
+ },
590
+ "evidence": [
591
+ {
592
+ "file": "perl-cgi/cgi-bin/order.cgi",
593
+ "start_line": 19,
594
+ "code": "$dbh->do(\"DELETE FROM carts WHERE cart_id = \" . $q->param('cart'))",
595
+ "why": "Unsanitized input concatenated into query",
596
+ "line": 19
597
+ }
598
+ ],
599
+ "severity": "critical",
600
+ "confidence": "high",
601
+ "cwe": [
602
+ "CWE-89"
603
+ ],
604
+ "recommendation": "Use parameterized queries or proper escaping",
605
+ "status": "unverified"
606
+ },
607
+ {
608
+ "finding_id": "INJ-I-0027",
609
+ "category": "sql_injection",
610
+ "subtype": "string_concatenation",
611
+ "title": "SQL Injection in php-plain/admin.php:8",
612
+ "candidate_id": "I-0027",
613
+ "location": {
614
+ "file": "php-plain/admin.php",
615
+ "start_line": 8
616
+ },
617
+ "evidence": [
618
+ {
619
+ "file": "php-plain/admin.php",
620
+ "start_line": 8,
621
+ "code": "$r = mysql_query(\"SELECT * FROM users WHERE id = \" . $uid);",
622
+ "why": "Unsanitized input concatenated into query",
623
+ "line": 8
624
+ },
625
+ {
626
+ "file": "php-plain/admin.php",
627
+ "start_line": 12,
628
+ "code": "mysql_query(\"DELETE FROM users WHERE id = $id\");",
629
+ "why": "Unsanitized input concatenated into query",
630
+ "line": 12
631
+ }
632
+ ],
633
+ "severity": "critical",
634
+ "confidence": "high",
635
+ "cwe": [
636
+ "CWE-89"
637
+ ],
638
+ "recommendation": "Use parameterized queries or proper escaping",
639
+ "status": "unverified"
640
+ },
641
+ {
642
+ "finding_id": "INJ-I-0028",
643
+ "category": "sql_injection",
644
+ "subtype": "string_concatenation",
645
+ "title": "SQL Injection in php-plain/admin.php:12",
646
+ "candidate_id": "I-0028",
647
+ "location": {
648
+ "file": "php-plain/admin.php",
649
+ "start_line": 12
650
+ },
651
+ "evidence": [
652
+ {
653
+ "file": "php-plain/admin.php",
654
+ "start_line": 12,
655
+ "code": "mysql_query(\"DELETE FROM users WHERE id = $id\");",
656
+ "why": "Unsanitized input concatenated into query",
657
+ "line": 12
658
+ }
659
+ ],
660
+ "severity": "critical",
661
+ "confidence": "high",
662
+ "cwe": [
663
+ "CWE-89"
664
+ ],
665
+ "recommendation": "Use parameterized queries or proper escaping",
666
+ "status": "unverified"
667
+ },
668
+ {
669
+ "finding_id": "INJ-I-0029",
670
+ "category": "nosql_injection",
671
+ "subtype": "string_concatenation",
672
+ "title": "NoSQL Injection in php-plain/mongo_find.php:6",
673
+ "candidate_id": "I-0029",
674
+ "location": {
675
+ "file": "php-plain/mongo_find.php",
676
+ "start_line": 5
677
+ },
678
+ "evidence": [
679
+ {
680
+ "file": "php-plain/mongo_find.php",
681
+ "start_line": 6,
682
+ "code": "$docs = $coll->find(array('$where' => \"this.name == '\" . $_GET['n'] . \"'\"));",
683
+ "why": "Unsanitized input concatenated into query",
684
+ "line": 6
685
+ }
686
+ ],
687
+ "severity": "critical",
688
+ "confidence": "high",
689
+ "cwe": [
690
+ "CWE-89"
691
+ ],
692
+ "recommendation": "Use parameterized queries or proper escaping",
693
+ "status": "unverified"
694
+ },
695
+ {
696
+ "finding_id": "INJ-I-0030",
697
+ "category": "nosql_injection",
698
+ "subtype": "string_concatenation",
699
+ "title": "NoSQL Injection in php-plain/mongo_find.php:6",
700
+ "candidate_id": "I-0030",
701
+ "location": {
702
+ "file": "php-plain/mongo_find.php",
703
+ "start_line": 6
704
+ },
705
+ "evidence": [
706
+ {
707
+ "file": "php-plain/mongo_find.php",
708
+ "start_line": 6,
709
+ "code": "$docs = $coll->find(array('$where' => \"this.name == '\" . $_GET['n'] . \"'\"));",
710
+ "why": "Unsanitized input concatenated into query",
711
+ "line": 6
712
+ }
713
+ ],
714
+ "severity": "critical",
715
+ "confidence": "high",
716
+ "cwe": [
717
+ "CWE-89"
718
+ ],
719
+ "recommendation": "Use parameterized queries or proper escaping",
720
+ "status": "unverified"
721
+ }
722
+ ],
723
+ "candidate_verdicts": [
724
+ {
725
+ "candidate_id": "I-0001",
726
+ "verdict": "vulnerable"
727
+ },
728
+ {
729
+ "candidate_id": "I-0002",
730
+ "verdict": "vulnerable"
731
+ },
732
+ {
733
+ "candidate_id": "I-0003",
734
+ "verdict": "vulnerable"
735
+ },
736
+ {
737
+ "candidate_id": "I-0004",
738
+ "verdict": "vulnerable"
739
+ },
740
+ {
741
+ "candidate_id": "I-0005",
742
+ "verdict": "vulnerable"
743
+ },
744
+ {
745
+ "candidate_id": "I-0006",
746
+ "verdict": "vulnerable"
747
+ },
748
+ {
749
+ "candidate_id": "I-0007",
750
+ "verdict": "vulnerable"
751
+ },
752
+ {
753
+ "candidate_id": "I-0010",
754
+ "verdict": "vulnerable"
755
+ },
756
+ {
757
+ "candidate_id": "I-0011",
758
+ "verdict": "vulnerable"
759
+ },
760
+ {
761
+ "candidate_id": "I-0012",
762
+ "verdict": "vulnerable"
763
+ },
764
+ {
765
+ "candidate_id": "I-0013",
766
+ "verdict": "vulnerable"
767
+ },
768
+ {
769
+ "candidate_id": "I-0014",
770
+ "verdict": "vulnerable"
771
+ },
772
+ {
773
+ "candidate_id": "I-0016",
774
+ "verdict": "vulnerable"
775
+ },
776
+ {
777
+ "candidate_id": "I-0017",
778
+ "verdict": "vulnerable"
779
+ },
780
+ {
781
+ "candidate_id": "I-0020",
782
+ "verdict": "vulnerable"
783
+ },
784
+ {
785
+ "candidate_id": "I-0021",
786
+ "verdict": "vulnerable"
787
+ },
788
+ {
789
+ "candidate_id": "I-0022",
790
+ "verdict": "vulnerable"
791
+ },
792
+ {
793
+ "candidate_id": "I-0023",
794
+ "verdict": "vulnerable"
795
+ },
796
+ {
797
+ "candidate_id": "I-0024",
798
+ "verdict": "vulnerable"
799
+ },
800
+ {
801
+ "candidate_id": "I-0025",
802
+ "verdict": "vulnerable"
803
+ },
804
+ {
805
+ "candidate_id": "I-0027",
806
+ "verdict": "vulnerable"
807
+ },
808
+ {
809
+ "candidate_id": "I-0028",
810
+ "verdict": "vulnerable"
811
+ },
812
+ {
813
+ "candidate_id": "I-0029",
814
+ "verdict": "vulnerable"
815
+ },
816
+ {
817
+ "candidate_id": "I-0030",
818
+ "verdict": "vulnerable"
819
+ }
820
+ ]
821
+ }