codeslick-cli 1.0.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 (455) hide show
  1. package/README.md +458 -0
  2. package/__tests__/cli-reporter.test.ts +86 -0
  3. package/__tests__/config-loader.test.ts +247 -0
  4. package/__tests__/local-scanner.test.ts +245 -0
  5. package/bin/codeslick.cjs +153 -0
  6. package/dist/packages/cli/src/commands/auth.d.ts +36 -0
  7. package/dist/packages/cli/src/commands/auth.d.ts.map +1 -0
  8. package/dist/packages/cli/src/commands/auth.js +226 -0
  9. package/dist/packages/cli/src/commands/auth.js.map +1 -0
  10. package/dist/packages/cli/src/commands/config.d.ts +37 -0
  11. package/dist/packages/cli/src/commands/config.d.ts.map +1 -0
  12. package/dist/packages/cli/src/commands/config.js +196 -0
  13. package/dist/packages/cli/src/commands/config.js.map +1 -0
  14. package/dist/packages/cli/src/commands/init.d.ts +32 -0
  15. package/dist/packages/cli/src/commands/init.d.ts.map +1 -0
  16. package/dist/packages/cli/src/commands/init.js +171 -0
  17. package/dist/packages/cli/src/commands/init.js.map +1 -0
  18. package/dist/packages/cli/src/commands/scan.d.ts +40 -0
  19. package/dist/packages/cli/src/commands/scan.d.ts.map +1 -0
  20. package/dist/packages/cli/src/commands/scan.js +204 -0
  21. package/dist/packages/cli/src/commands/scan.js.map +1 -0
  22. package/dist/packages/cli/src/config/config-loader.d.ts +67 -0
  23. package/dist/packages/cli/src/config/config-loader.d.ts.map +1 -0
  24. package/dist/packages/cli/src/config/config-loader.js +146 -0
  25. package/dist/packages/cli/src/config/config-loader.js.map +1 -0
  26. package/dist/packages/cli/src/reporters/cli-reporter.d.ts +69 -0
  27. package/dist/packages/cli/src/reporters/cli-reporter.d.ts.map +1 -0
  28. package/dist/packages/cli/src/reporters/cli-reporter.js +244 -0
  29. package/dist/packages/cli/src/reporters/cli-reporter.js.map +1 -0
  30. package/dist/packages/cli/src/scanner/local-scanner.d.ts +92 -0
  31. package/dist/packages/cli/src/scanner/local-scanner.d.ts.map +1 -0
  32. package/dist/packages/cli/src/scanner/local-scanner.js +221 -0
  33. package/dist/packages/cli/src/scanner/local-scanner.js.map +1 -0
  34. package/dist/src/lib/analyzers/helpers/ai-code-detection-utils.d.ts +88 -0
  35. package/dist/src/lib/analyzers/helpers/ai-code-detection-utils.d.ts.map +1 -0
  36. package/dist/src/lib/analyzers/helpers/ai-code-detection-utils.js +371 -0
  37. package/dist/src/lib/analyzers/helpers/ai-code-detection-utils.js.map +1 -0
  38. package/dist/src/lib/analyzers/helpers/jsx-helpers.d.ts +63 -0
  39. package/dist/src/lib/analyzers/helpers/jsx-helpers.d.ts.map +1 -0
  40. package/dist/src/lib/analyzers/helpers/jsx-helpers.js +95 -0
  41. package/dist/src/lib/analyzers/helpers/jsx-helpers.js.map +1 -0
  42. package/dist/src/lib/analyzers/helpers/variable-tracker.d.ts +59 -0
  43. package/dist/src/lib/analyzers/helpers/variable-tracker.d.ts.map +1 -0
  44. package/dist/src/lib/analyzers/helpers/variable-tracker.js +231 -0
  45. package/dist/src/lib/analyzers/helpers/variable-tracker.js.map +1 -0
  46. package/dist/src/lib/analyzers/java/security-checks/access-control.d.ts +20 -0
  47. package/dist/src/lib/analyzers/java/security-checks/access-control.d.ts.map +1 -0
  48. package/dist/src/lib/analyzers/java/security-checks/access-control.js +129 -0
  49. package/dist/src/lib/analyzers/java/security-checks/access-control.js.map +1 -0
  50. package/dist/src/lib/analyzers/java/security-checks/ai-generated-code.d.ts +25 -0
  51. package/dist/src/lib/analyzers/java/security-checks/ai-generated-code.d.ts.map +1 -0
  52. package/dist/src/lib/analyzers/java/security-checks/ai-generated-code.js +221 -0
  53. package/dist/src/lib/analyzers/java/security-checks/ai-generated-code.js.map +1 -0
  54. package/dist/src/lib/analyzers/java/security-checks/code-quality.d.ts +18 -0
  55. package/dist/src/lib/analyzers/java/security-checks/code-quality.d.ts.map +1 -0
  56. package/dist/src/lib/analyzers/java/security-checks/code-quality.js +84 -0
  57. package/dist/src/lib/analyzers/java/security-checks/code-quality.js.map +1 -0
  58. package/dist/src/lib/analyzers/java/security-checks/crypto-validation.d.ts +18 -0
  59. package/dist/src/lib/analyzers/java/security-checks/crypto-validation.d.ts.map +1 -0
  60. package/dist/src/lib/analyzers/java/security-checks/crypto-validation.js +161 -0
  61. package/dist/src/lib/analyzers/java/security-checks/crypto-validation.js.map +1 -0
  62. package/dist/src/lib/analyzers/java/security-checks/deserialization-xxe.d.ts +20 -0
  63. package/dist/src/lib/analyzers/java/security-checks/deserialization-xxe.d.ts.map +1 -0
  64. package/dist/src/lib/analyzers/java/security-checks/deserialization-xxe.js +163 -0
  65. package/dist/src/lib/analyzers/java/security-checks/deserialization-xxe.js.map +1 -0
  66. package/dist/src/lib/analyzers/java/security-checks/enhanced-supply-chain.d.ts +24 -0
  67. package/dist/src/lib/analyzers/java/security-checks/enhanced-supply-chain.d.ts.map +1 -0
  68. package/dist/src/lib/analyzers/java/security-checks/enhanced-supply-chain.js +178 -0
  69. package/dist/src/lib/analyzers/java/security-checks/enhanced-supply-chain.js.map +1 -0
  70. package/dist/src/lib/analyzers/java/security-checks/exception-handling.d.ts +25 -0
  71. package/dist/src/lib/analyzers/java/security-checks/exception-handling.d.ts.map +1 -0
  72. package/dist/src/lib/analyzers/java/security-checks/exception-handling.js +179 -0
  73. package/dist/src/lib/analyzers/java/security-checks/exception-handling.js.map +1 -0
  74. package/dist/src/lib/analyzers/java/security-checks/file-operations.d.ts +17 -0
  75. package/dist/src/lib/analyzers/java/security-checks/file-operations.d.ts.map +1 -0
  76. package/dist/src/lib/analyzers/java/security-checks/file-operations.js +67 -0
  77. package/dist/src/lib/analyzers/java/security-checks/file-operations.js.map +1 -0
  78. package/dist/src/lib/analyzers/java/security-checks/framework-security.d.ts +25 -0
  79. package/dist/src/lib/analyzers/java/security-checks/framework-security.d.ts.map +1 -0
  80. package/dist/src/lib/analyzers/java/security-checks/framework-security.js +396 -0
  81. package/dist/src/lib/analyzers/java/security-checks/framework-security.js.map +1 -0
  82. package/dist/src/lib/analyzers/java/security-checks/hardcoded-credentials.d.ts +20 -0
  83. package/dist/src/lib/analyzers/java/security-checks/hardcoded-credentials.d.ts.map +1 -0
  84. package/dist/src/lib/analyzers/java/security-checks/hardcoded-credentials.js +123 -0
  85. package/dist/src/lib/analyzers/java/security-checks/hardcoded-credentials.js.map +1 -0
  86. package/dist/src/lib/analyzers/java/security-checks/injection-attacks.d.ts +23 -0
  87. package/dist/src/lib/analyzers/java/security-checks/injection-attacks.d.ts.map +1 -0
  88. package/dist/src/lib/analyzers/java/security-checks/injection-attacks.js +201 -0
  89. package/dist/src/lib/analyzers/java/security-checks/injection-attacks.js.map +1 -0
  90. package/dist/src/lib/analyzers/java/security-checks/insecure-design.d.ts +20 -0
  91. package/dist/src/lib/analyzers/java/security-checks/insecure-design.d.ts.map +1 -0
  92. package/dist/src/lib/analyzers/java/security-checks/insecure-design.js +121 -0
  93. package/dist/src/lib/analyzers/java/security-checks/insecure-design.js.map +1 -0
  94. package/dist/src/lib/analyzers/java/security-checks/logging-failures.d.ts +20 -0
  95. package/dist/src/lib/analyzers/java/security-checks/logging-failures.d.ts.map +1 -0
  96. package/dist/src/lib/analyzers/java/security-checks/logging-failures.js +89 -0
  97. package/dist/src/lib/analyzers/java/security-checks/logging-failures.js.map +1 -0
  98. package/dist/src/lib/analyzers/java/security-checks/security-misconfiguration.d.ts +26 -0
  99. package/dist/src/lib/analyzers/java/security-checks/security-misconfiguration.d.ts.map +1 -0
  100. package/dist/src/lib/analyzers/java/security-checks/security-misconfiguration.js +309 -0
  101. package/dist/src/lib/analyzers/java/security-checks/security-misconfiguration.js.map +1 -0
  102. package/dist/src/lib/analyzers/java/security-checks/unsafe-patterns.d.ts +18 -0
  103. package/dist/src/lib/analyzers/java/security-checks/unsafe-patterns.d.ts.map +1 -0
  104. package/dist/src/lib/analyzers/java/security-checks/unsafe-patterns.js +114 -0
  105. package/dist/src/lib/analyzers/java/security-checks/unsafe-patterns.js.map +1 -0
  106. package/dist/src/lib/analyzers/java/utils/createVulnerability.d.ts +58 -0
  107. package/dist/src/lib/analyzers/java/utils/createVulnerability.d.ts.map +1 -0
  108. package/dist/src/lib/analyzers/java/utils/createVulnerability.js +71 -0
  109. package/dist/src/lib/analyzers/java/utils/createVulnerability.js.map +1 -0
  110. package/dist/src/lib/analyzers/java-analyzer.d.ts +209 -0
  111. package/dist/src/lib/analyzers/java-analyzer.d.ts.map +1 -0
  112. package/dist/src/lib/analyzers/java-analyzer.js +1720 -0
  113. package/dist/src/lib/analyzers/java-analyzer.js.map +1 -0
  114. package/dist/src/lib/analyzers/javascript/quality-checks/ai-hallucinations.d.ts +27 -0
  115. package/dist/src/lib/analyzers/javascript/quality-checks/ai-hallucinations.d.ts.map +1 -0
  116. package/dist/src/lib/analyzers/javascript/quality-checks/ai-hallucinations.js +123 -0
  117. package/dist/src/lib/analyzers/javascript/quality-checks/ai-hallucinations.js.map +1 -0
  118. package/dist/src/lib/analyzers/javascript/quality-checks/async-patterns.d.ts +44 -0
  119. package/dist/src/lib/analyzers/javascript/quality-checks/async-patterns.d.ts.map +1 -0
  120. package/dist/src/lib/analyzers/javascript/quality-checks/async-patterns.js +224 -0
  121. package/dist/src/lib/analyzers/javascript/quality-checks/async-patterns.js.map +1 -0
  122. package/dist/src/lib/analyzers/javascript/quality-checks/code-patterns.d.ts +50 -0
  123. package/dist/src/lib/analyzers/javascript/quality-checks/code-patterns.d.ts.map +1 -0
  124. package/dist/src/lib/analyzers/javascript/quality-checks/code-patterns.js +284 -0
  125. package/dist/src/lib/analyzers/javascript/quality-checks/code-patterns.js.map +1 -0
  126. package/dist/src/lib/analyzers/javascript/quality-checks/comparison-issues.d.ts +27 -0
  127. package/dist/src/lib/analyzers/javascript/quality-checks/comparison-issues.d.ts.map +1 -0
  128. package/dist/src/lib/analyzers/javascript/quality-checks/comparison-issues.js +86 -0
  129. package/dist/src/lib/analyzers/javascript/quality-checks/comparison-issues.js.map +1 -0
  130. package/dist/src/lib/analyzers/javascript/quality-checks/reference-errors.d.ts +32 -0
  131. package/dist/src/lib/analyzers/javascript/quality-checks/reference-errors.d.ts.map +1 -0
  132. package/dist/src/lib/analyzers/javascript/quality-checks/reference-errors.js +44 -0
  133. package/dist/src/lib/analyzers/javascript/quality-checks/reference-errors.js.map +1 -0
  134. package/dist/src/lib/analyzers/javascript/security-checks/access-control.d.ts +22 -0
  135. package/dist/src/lib/analyzers/javascript/security-checks/access-control.d.ts.map +1 -0
  136. package/dist/src/lib/analyzers/javascript/security-checks/access-control.js +168 -0
  137. package/dist/src/lib/analyzers/javascript/security-checks/access-control.js.map +1 -0
  138. package/dist/src/lib/analyzers/javascript/security-checks/ai-generated-code.d.ts +25 -0
  139. package/dist/src/lib/analyzers/javascript/security-checks/ai-generated-code.d.ts.map +1 -0
  140. package/dist/src/lib/analyzers/javascript/security-checks/ai-generated-code.js +232 -0
  141. package/dist/src/lib/analyzers/javascript/security-checks/ai-generated-code.js.map +1 -0
  142. package/dist/src/lib/analyzers/javascript/security-checks/authentication-failures.d.ts +27 -0
  143. package/dist/src/lib/analyzers/javascript/security-checks/authentication-failures.d.ts.map +1 -0
  144. package/dist/src/lib/analyzers/javascript/security-checks/authentication-failures.js +222 -0
  145. package/dist/src/lib/analyzers/javascript/security-checks/authentication-failures.js.map +1 -0
  146. package/dist/src/lib/analyzers/javascript/security-checks/credential-crypto.d.ts +28 -0
  147. package/dist/src/lib/analyzers/javascript/security-checks/credential-crypto.d.ts.map +1 -0
  148. package/dist/src/lib/analyzers/javascript/security-checks/credential-crypto.js +176 -0
  149. package/dist/src/lib/analyzers/javascript/security-checks/credential-crypto.js.map +1 -0
  150. package/dist/src/lib/analyzers/javascript/security-checks/enhanced-supply-chain.d.ts +23 -0
  151. package/dist/src/lib/analyzers/javascript/security-checks/enhanced-supply-chain.d.ts.map +1 -0
  152. package/dist/src/lib/analyzers/javascript/security-checks/enhanced-supply-chain.js +113 -0
  153. package/dist/src/lib/analyzers/javascript/security-checks/enhanced-supply-chain.js.map +1 -0
  154. package/dist/src/lib/analyzers/javascript/security-checks/exception-handling.d.ts +28 -0
  155. package/dist/src/lib/analyzers/javascript/security-checks/exception-handling.d.ts.map +1 -0
  156. package/dist/src/lib/analyzers/javascript/security-checks/exception-handling.js +227 -0
  157. package/dist/src/lib/analyzers/javascript/security-checks/exception-handling.js.map +1 -0
  158. package/dist/src/lib/analyzers/javascript/security-checks/injection-attacks.d.ts +32 -0
  159. package/dist/src/lib/analyzers/javascript/security-checks/injection-attacks.d.ts.map +1 -0
  160. package/dist/src/lib/analyzers/javascript/security-checks/injection-attacks.js +260 -0
  161. package/dist/src/lib/analyzers/javascript/security-checks/injection-attacks.js.map +1 -0
  162. package/dist/src/lib/analyzers/javascript/security-checks/insecure-design.d.ts +26 -0
  163. package/dist/src/lib/analyzers/javascript/security-checks/insecure-design.d.ts.map +1 -0
  164. package/dist/src/lib/analyzers/javascript/security-checks/insecure-design.js +164 -0
  165. package/dist/src/lib/analyzers/javascript/security-checks/insecure-design.js.map +1 -0
  166. package/dist/src/lib/analyzers/javascript/security-checks/security-misconfiguration.d.ts +26 -0
  167. package/dist/src/lib/analyzers/javascript/security-checks/security-misconfiguration.d.ts.map +1 -0
  168. package/dist/src/lib/analyzers/javascript/security-checks/security-misconfiguration.js +775 -0
  169. package/dist/src/lib/analyzers/javascript/security-checks/security-misconfiguration.js.map +1 -0
  170. package/dist/src/lib/analyzers/javascript/security-checks/software-integrity.d.ts +25 -0
  171. package/dist/src/lib/analyzers/javascript/security-checks/software-integrity.d.ts.map +1 -0
  172. package/dist/src/lib/analyzers/javascript/security-checks/software-integrity.js +168 -0
  173. package/dist/src/lib/analyzers/javascript/security-checks/software-integrity.js.map +1 -0
  174. package/dist/src/lib/analyzers/javascript/security-checks/storage-security.d.ts +27 -0
  175. package/dist/src/lib/analyzers/javascript/security-checks/storage-security.d.ts.map +1 -0
  176. package/dist/src/lib/analyzers/javascript/security-checks/storage-security.js +108 -0
  177. package/dist/src/lib/analyzers/javascript/security-checks/storage-security.js.map +1 -0
  178. package/dist/src/lib/analyzers/javascript/security-checks/xss-dom-security.d.ts +28 -0
  179. package/dist/src/lib/analyzers/javascript/security-checks/xss-dom-security.d.ts.map +1 -0
  180. package/dist/src/lib/analyzers/javascript/security-checks/xss-dom-security.js +143 -0
  181. package/dist/src/lib/analyzers/javascript/security-checks/xss-dom-security.js.map +1 -0
  182. package/dist/src/lib/analyzers/javascript/syntax/syntax-helpers.d.ts +53 -0
  183. package/dist/src/lib/analyzers/javascript/syntax/syntax-helpers.d.ts.map +1 -0
  184. package/dist/src/lib/analyzers/javascript/syntax/syntax-helpers.js +144 -0
  185. package/dist/src/lib/analyzers/javascript/syntax/syntax-helpers.js.map +1 -0
  186. package/dist/src/lib/analyzers/javascript/syntax/typescript-syntax.d.ts +72 -0
  187. package/dist/src/lib/analyzers/javascript/syntax/typescript-syntax.d.ts.map +1 -0
  188. package/dist/src/lib/analyzers/javascript/syntax/typescript-syntax.js +314 -0
  189. package/dist/src/lib/analyzers/javascript/syntax/typescript-syntax.js.map +1 -0
  190. package/dist/src/lib/analyzers/javascript/utils/createVulnerability.d.ts +58 -0
  191. package/dist/src/lib/analyzers/javascript/utils/createVulnerability.d.ts.map +1 -0
  192. package/dist/src/lib/analyzers/javascript/utils/createVulnerability.js +71 -0
  193. package/dist/src/lib/analyzers/javascript/utils/createVulnerability.js.map +1 -0
  194. package/dist/src/lib/analyzers/javascript/utils/metrics-calculator.d.ts +36 -0
  195. package/dist/src/lib/analyzers/javascript/utils/metrics-calculator.d.ts.map +1 -0
  196. package/dist/src/lib/analyzers/javascript/utils/metrics-calculator.js +70 -0
  197. package/dist/src/lib/analyzers/javascript/utils/metrics-calculator.js.map +1 -0
  198. package/dist/src/lib/analyzers/javascript/utils/performance-analyzer.d.ts +29 -0
  199. package/dist/src/lib/analyzers/javascript/utils/performance-analyzer.d.ts.map +1 -0
  200. package/dist/src/lib/analyzers/javascript/utils/performance-analyzer.js +55 -0
  201. package/dist/src/lib/analyzers/javascript/utils/performance-analyzer.js.map +1 -0
  202. package/dist/src/lib/analyzers/javascript-analyzer.d.ts +95 -0
  203. package/dist/src/lib/analyzers/javascript-analyzer.d.ts.map +1 -0
  204. package/dist/src/lib/analyzers/javascript-analyzer.js +2141 -0
  205. package/dist/src/lib/analyzers/javascript-analyzer.js.map +1 -0
  206. package/dist/src/lib/analyzers/python/security-checks/access-control.d.ts +21 -0
  207. package/dist/src/lib/analyzers/python/security-checks/access-control.d.ts.map +1 -0
  208. package/dist/src/lib/analyzers/python/security-checks/access-control.js +305 -0
  209. package/dist/src/lib/analyzers/python/security-checks/access-control.js.map +1 -0
  210. package/dist/src/lib/analyzers/python/security-checks/ai-generated-code.d.ts +25 -0
  211. package/dist/src/lib/analyzers/python/security-checks/ai-generated-code.d.ts.map +1 -0
  212. package/dist/src/lib/analyzers/python/security-checks/ai-generated-code.js +242 -0
  213. package/dist/src/lib/analyzers/python/security-checks/ai-generated-code.js.map +1 -0
  214. package/dist/src/lib/analyzers/python/security-checks/authentication-flaws.d.ts +24 -0
  215. package/dist/src/lib/analyzers/python/security-checks/authentication-flaws.d.ts.map +1 -0
  216. package/dist/src/lib/analyzers/python/security-checks/authentication-flaws.js +207 -0
  217. package/dist/src/lib/analyzers/python/security-checks/authentication-flaws.js.map +1 -0
  218. package/dist/src/lib/analyzers/python/security-checks/code-quality.d.ts +27 -0
  219. package/dist/src/lib/analyzers/python/security-checks/code-quality.d.ts.map +1 -0
  220. package/dist/src/lib/analyzers/python/security-checks/code-quality.js +206 -0
  221. package/dist/src/lib/analyzers/python/security-checks/code-quality.js.map +1 -0
  222. package/dist/src/lib/analyzers/python/security-checks/credentials-crypto.d.ts +24 -0
  223. package/dist/src/lib/analyzers/python/security-checks/credentials-crypto.d.ts.map +1 -0
  224. package/dist/src/lib/analyzers/python/security-checks/credentials-crypto.js +113 -0
  225. package/dist/src/lib/analyzers/python/security-checks/credentials-crypto.js.map +1 -0
  226. package/dist/src/lib/analyzers/python/security-checks/crypto-failures.d.ts +20 -0
  227. package/dist/src/lib/analyzers/python/security-checks/crypto-failures.d.ts.map +1 -0
  228. package/dist/src/lib/analyzers/python/security-checks/crypto-failures.js +129 -0
  229. package/dist/src/lib/analyzers/python/security-checks/crypto-failures.js.map +1 -0
  230. package/dist/src/lib/analyzers/python/security-checks/data-integrity.d.ts +19 -0
  231. package/dist/src/lib/analyzers/python/security-checks/data-integrity.d.ts.map +1 -0
  232. package/dist/src/lib/analyzers/python/security-checks/data-integrity.js +90 -0
  233. package/dist/src/lib/analyzers/python/security-checks/data-integrity.js.map +1 -0
  234. package/dist/src/lib/analyzers/python/security-checks/deserialization.d.ts +20 -0
  235. package/dist/src/lib/analyzers/python/security-checks/deserialization.d.ts.map +1 -0
  236. package/dist/src/lib/analyzers/python/security-checks/deserialization.js +68 -0
  237. package/dist/src/lib/analyzers/python/security-checks/deserialization.js.map +1 -0
  238. package/dist/src/lib/analyzers/python/security-checks/django-security.d.ts +25 -0
  239. package/dist/src/lib/analyzers/python/security-checks/django-security.d.ts.map +1 -0
  240. package/dist/src/lib/analyzers/python/security-checks/django-security.js +180 -0
  241. package/dist/src/lib/analyzers/python/security-checks/django-security.js.map +1 -0
  242. package/dist/src/lib/analyzers/python/security-checks/enhanced-supply-chain.d.ts +23 -0
  243. package/dist/src/lib/analyzers/python/security-checks/enhanced-supply-chain.d.ts.map +1 -0
  244. package/dist/src/lib/analyzers/python/security-checks/enhanced-supply-chain.js +127 -0
  245. package/dist/src/lib/analyzers/python/security-checks/enhanced-supply-chain.js.map +1 -0
  246. package/dist/src/lib/analyzers/python/security-checks/exception-handling.d.ts +23 -0
  247. package/dist/src/lib/analyzers/python/security-checks/exception-handling.d.ts.map +1 -0
  248. package/dist/src/lib/analyzers/python/security-checks/exception-handling.js +120 -0
  249. package/dist/src/lib/analyzers/python/security-checks/exception-handling.js.map +1 -0
  250. package/dist/src/lib/analyzers/python/security-checks/flask-security.d.ts +24 -0
  251. package/dist/src/lib/analyzers/python/security-checks/flask-security.d.ts.map +1 -0
  252. package/dist/src/lib/analyzers/python/security-checks/flask-security.js +143 -0
  253. package/dist/src/lib/analyzers/python/security-checks/flask-security.js.map +1 -0
  254. package/dist/src/lib/analyzers/python/security-checks/injection-attacks.d.ts +28 -0
  255. package/dist/src/lib/analyzers/python/security-checks/injection-attacks.d.ts.map +1 -0
  256. package/dist/src/lib/analyzers/python/security-checks/injection-attacks.js +174 -0
  257. package/dist/src/lib/analyzers/python/security-checks/injection-attacks.js.map +1 -0
  258. package/dist/src/lib/analyzers/python/security-checks/insecure-design.d.ts +20 -0
  259. package/dist/src/lib/analyzers/python/security-checks/insecure-design.d.ts.map +1 -0
  260. package/dist/src/lib/analyzers/python/security-checks/insecure-design.js +160 -0
  261. package/dist/src/lib/analyzers/python/security-checks/insecure-design.js.map +1 -0
  262. package/dist/src/lib/analyzers/python/security-checks/logging-failures.d.ts +20 -0
  263. package/dist/src/lib/analyzers/python/security-checks/logging-failures.d.ts.map +1 -0
  264. package/dist/src/lib/analyzers/python/security-checks/logging-failures.js +121 -0
  265. package/dist/src/lib/analyzers/python/security-checks/logging-failures.js.map +1 -0
  266. package/dist/src/lib/analyzers/python/security-checks/nosql-injection.d.ts +26 -0
  267. package/dist/src/lib/analyzers/python/security-checks/nosql-injection.d.ts.map +1 -0
  268. package/dist/src/lib/analyzers/python/security-checks/nosql-injection.js +248 -0
  269. package/dist/src/lib/analyzers/python/security-checks/nosql-injection.js.map +1 -0
  270. package/dist/src/lib/analyzers/python/security-checks/security-misconfiguration.d.ts +26 -0
  271. package/dist/src/lib/analyzers/python/security-checks/security-misconfiguration.d.ts.map +1 -0
  272. package/dist/src/lib/analyzers/python/security-checks/security-misconfiguration.js +375 -0
  273. package/dist/src/lib/analyzers/python/security-checks/security-misconfiguration.js.map +1 -0
  274. package/dist/src/lib/analyzers/python/security-checks/ssrf-detection.d.ts +26 -0
  275. package/dist/src/lib/analyzers/python/security-checks/ssrf-detection.d.ts.map +1 -0
  276. package/dist/src/lib/analyzers/python/security-checks/ssrf-detection.js +160 -0
  277. package/dist/src/lib/analyzers/python/security-checks/ssrf-detection.js.map +1 -0
  278. package/dist/src/lib/analyzers/python/security-checks/web-security.d.ts +23 -0
  279. package/dist/src/lib/analyzers/python/security-checks/web-security.d.ts.map +1 -0
  280. package/dist/src/lib/analyzers/python/security-checks/web-security.js +117 -0
  281. package/dist/src/lib/analyzers/python/security-checks/web-security.js.map +1 -0
  282. package/dist/src/lib/analyzers/python/utils/createVulnerability.d.ts +58 -0
  283. package/dist/src/lib/analyzers/python/utils/createVulnerability.d.ts.map +1 -0
  284. package/dist/src/lib/analyzers/python/utils/createVulnerability.js +71 -0
  285. package/dist/src/lib/analyzers/python/utils/createVulnerability.js.map +1 -0
  286. package/dist/src/lib/analyzers/python-analyzer.d.ts +111 -0
  287. package/dist/src/lib/analyzers/python-analyzer.d.ts.map +1 -0
  288. package/dist/src/lib/analyzers/python-analyzer.js +1600 -0
  289. package/dist/src/lib/analyzers/python-analyzer.js.map +1 -0
  290. package/dist/src/lib/analyzers/secrets/patterns/api-keys/ai-providers.d.ts +14 -0
  291. package/dist/src/lib/analyzers/secrets/patterns/api-keys/ai-providers.d.ts.map +1 -0
  292. package/dist/src/lib/analyzers/secrets/patterns/api-keys/ai-providers.js +47 -0
  293. package/dist/src/lib/analyzers/secrets/patterns/api-keys/ai-providers.js.map +1 -0
  294. package/dist/src/lib/analyzers/secrets/patterns/api-keys/aws.d.ts +13 -0
  295. package/dist/src/lib/analyzers/secrets/patterns/api-keys/aws.d.ts.map +1 -0
  296. package/dist/src/lib/analyzers/secrets/patterns/api-keys/aws.js +36 -0
  297. package/dist/src/lib/analyzers/secrets/patterns/api-keys/aws.js.map +1 -0
  298. package/dist/src/lib/analyzers/secrets/patterns/api-keys/cloud-providers.d.ts +15 -0
  299. package/dist/src/lib/analyzers/secrets/patterns/api-keys/cloud-providers.d.ts.map +1 -0
  300. package/dist/src/lib/analyzers/secrets/patterns/api-keys/cloud-providers.js +68 -0
  301. package/dist/src/lib/analyzers/secrets/patterns/api-keys/cloud-providers.js.map +1 -0
  302. package/dist/src/lib/analyzers/secrets/patterns/api-keys/communication.d.ts +15 -0
  303. package/dist/src/lib/analyzers/secrets/patterns/api-keys/communication.d.ts.map +1 -0
  304. package/dist/src/lib/analyzers/secrets/patterns/api-keys/communication.js +68 -0
  305. package/dist/src/lib/analyzers/secrets/patterns/api-keys/communication.js.map +1 -0
  306. package/dist/src/lib/analyzers/secrets/patterns/api-keys/generic.d.ts +12 -0
  307. package/dist/src/lib/analyzers/secrets/patterns/api-keys/generic.d.ts.map +1 -0
  308. package/dist/src/lib/analyzers/secrets/patterns/api-keys/generic.js +45 -0
  309. package/dist/src/lib/analyzers/secrets/patterns/api-keys/generic.js.map +1 -0
  310. package/dist/src/lib/analyzers/secrets/patterns/api-keys/github.d.ts +14 -0
  311. package/dist/src/lib/analyzers/secrets/patterns/api-keys/github.d.ts.map +1 -0
  312. package/dist/src/lib/analyzers/secrets/patterns/api-keys/github.js +47 -0
  313. package/dist/src/lib/analyzers/secrets/patterns/api-keys/github.js.map +1 -0
  314. package/dist/src/lib/analyzers/secrets/patterns/api-keys/stripe.d.ts +13 -0
  315. package/dist/src/lib/analyzers/secrets/patterns/api-keys/stripe.d.ts.map +1 -0
  316. package/dist/src/lib/analyzers/secrets/patterns/api-keys/stripe.js +36 -0
  317. package/dist/src/lib/analyzers/secrets/patterns/api-keys/stripe.js.map +1 -0
  318. package/dist/src/lib/analyzers/secrets/patterns/api-keys.d.ts +15 -0
  319. package/dist/src/lib/analyzers/secrets/patterns/api-keys.d.ts.map +1 -0
  320. package/dist/src/lib/analyzers/secrets/patterns/api-keys.js +32 -0
  321. package/dist/src/lib/analyzers/secrets/patterns/api-keys.js.map +1 -0
  322. package/dist/src/lib/analyzers/secrets/patterns/credentials.d.ts +15 -0
  323. package/dist/src/lib/analyzers/secrets/patterns/credentials.d.ts.map +1 -0
  324. package/dist/src/lib/analyzers/secrets/patterns/credentials.js +68 -0
  325. package/dist/src/lib/analyzers/secrets/patterns/credentials.js.map +1 -0
  326. package/dist/src/lib/analyzers/secrets/patterns/private-keys.d.ts +16 -0
  327. package/dist/src/lib/analyzers/secrets/patterns/private-keys.d.ts.map +1 -0
  328. package/dist/src/lib/analyzers/secrets/patterns/private-keys.js +79 -0
  329. package/dist/src/lib/analyzers/secrets/patterns/private-keys.js.map +1 -0
  330. package/dist/src/lib/analyzers/secrets/patterns/tokens.d.ts +15 -0
  331. package/dist/src/lib/analyzers/secrets/patterns/tokens.d.ts.map +1 -0
  332. package/dist/src/lib/analyzers/secrets/patterns/tokens.js +58 -0
  333. package/dist/src/lib/analyzers/secrets/patterns/tokens.js.map +1 -0
  334. package/dist/src/lib/analyzers/secrets/secrets-analyzer.d.ts +88 -0
  335. package/dist/src/lib/analyzers/secrets/secrets-analyzer.d.ts.map +1 -0
  336. package/dist/src/lib/analyzers/secrets/secrets-analyzer.js +162 -0
  337. package/dist/src/lib/analyzers/secrets/secrets-analyzer.js.map +1 -0
  338. package/dist/src/lib/analyzers/secrets/validators/context-checker.d.ts +56 -0
  339. package/dist/src/lib/analyzers/secrets/validators/context-checker.d.ts.map +1 -0
  340. package/dist/src/lib/analyzers/secrets/validators/context-checker.js +199 -0
  341. package/dist/src/lib/analyzers/secrets/validators/context-checker.js.map +1 -0
  342. package/dist/src/lib/analyzers/secrets/validators/entropy-checker.d.ts +56 -0
  343. package/dist/src/lib/analyzers/secrets/validators/entropy-checker.d.ts.map +1 -0
  344. package/dist/src/lib/analyzers/secrets/validators/entropy-checker.js +102 -0
  345. package/dist/src/lib/analyzers/secrets/validators/entropy-checker.js.map +1 -0
  346. package/dist/src/lib/analyzers/security-checks/es6-security.d.ts +38 -0
  347. package/dist/src/lib/analyzers/security-checks/es6-security.d.ts.map +1 -0
  348. package/dist/src/lib/analyzers/security-checks/es6-security.js +125 -0
  349. package/dist/src/lib/analyzers/security-checks/es6-security.js.map +1 -0
  350. package/dist/src/lib/analyzers/security-checks/python-async-security.d.ts +46 -0
  351. package/dist/src/lib/analyzers/security-checks/python-async-security.d.ts.map +1 -0
  352. package/dist/src/lib/analyzers/security-checks/python-async-security.js +92 -0
  353. package/dist/src/lib/analyzers/security-checks/python-async-security.js.map +1 -0
  354. package/dist/src/lib/analyzers/security-checks/react-security.d.ts +49 -0
  355. package/dist/src/lib/analyzers/security-checks/react-security.d.ts.map +1 -0
  356. package/dist/src/lib/analyzers/security-checks/react-security.js +125 -0
  357. package/dist/src/lib/analyzers/security-checks/react-security.js.map +1 -0
  358. package/dist/src/lib/analyzers/types.d.ts +92 -0
  359. package/dist/src/lib/analyzers/types.d.ts.map +1 -0
  360. package/dist/src/lib/analyzers/types.js +3 -0
  361. package/dist/src/lib/analyzers/types.js.map +1 -0
  362. package/dist/src/lib/analyzers/typescript/security-checks/access-control.d.ts +19 -0
  363. package/dist/src/lib/analyzers/typescript/security-checks/access-control.d.ts.map +1 -0
  364. package/dist/src/lib/analyzers/typescript/security-checks/access-control.js +210 -0
  365. package/dist/src/lib/analyzers/typescript/security-checks/access-control.js.map +1 -0
  366. package/dist/src/lib/analyzers/typescript/security-checks/ai-generated-code.d.ts +25 -0
  367. package/dist/src/lib/analyzers/typescript/security-checks/ai-generated-code.d.ts.map +1 -0
  368. package/dist/src/lib/analyzers/typescript/security-checks/ai-generated-code.js +242 -0
  369. package/dist/src/lib/analyzers/typescript/security-checks/ai-generated-code.js.map +1 -0
  370. package/dist/src/lib/analyzers/typescript/security-checks/authentication.d.ts +28 -0
  371. package/dist/src/lib/analyzers/typescript/security-checks/authentication.d.ts.map +1 -0
  372. package/dist/src/lib/analyzers/typescript/security-checks/authentication.js +357 -0
  373. package/dist/src/lib/analyzers/typescript/security-checks/authentication.js.map +1 -0
  374. package/dist/src/lib/analyzers/typescript/security-checks/code-injection.d.ts +26 -0
  375. package/dist/src/lib/analyzers/typescript/security-checks/code-injection.d.ts.map +1 -0
  376. package/dist/src/lib/analyzers/typescript/security-checks/code-injection.js +380 -0
  377. package/dist/src/lib/analyzers/typescript/security-checks/code-injection.js.map +1 -0
  378. package/dist/src/lib/analyzers/typescript/security-checks/code-quality.d.ts +23 -0
  379. package/dist/src/lib/analyzers/typescript/security-checks/code-quality.d.ts.map +1 -0
  380. package/dist/src/lib/analyzers/typescript/security-checks/code-quality.js +109 -0
  381. package/dist/src/lib/analyzers/typescript/security-checks/code-quality.js.map +1 -0
  382. package/dist/src/lib/analyzers/typescript/security-checks/credentials-crypto.d.ts +21 -0
  383. package/dist/src/lib/analyzers/typescript/security-checks/credentials-crypto.d.ts.map +1 -0
  384. package/dist/src/lib/analyzers/typescript/security-checks/credentials-crypto.js +153 -0
  385. package/dist/src/lib/analyzers/typescript/security-checks/credentials-crypto.js.map +1 -0
  386. package/dist/src/lib/analyzers/typescript/security-checks/enhanced-supply-chain.d.ts +23 -0
  387. package/dist/src/lib/analyzers/typescript/security-checks/enhanced-supply-chain.d.ts.map +1 -0
  388. package/dist/src/lib/analyzers/typescript/security-checks/enhanced-supply-chain.js +146 -0
  389. package/dist/src/lib/analyzers/typescript/security-checks/enhanced-supply-chain.js.map +1 -0
  390. package/dist/src/lib/analyzers/typescript/security-checks/exception-handling.d.ts +23 -0
  391. package/dist/src/lib/analyzers/typescript/security-checks/exception-handling.d.ts.map +1 -0
  392. package/dist/src/lib/analyzers/typescript/security-checks/exception-handling.js +187 -0
  393. package/dist/src/lib/analyzers/typescript/security-checks/exception-handling.js.map +1 -0
  394. package/dist/src/lib/analyzers/typescript/security-checks/information-disclosure.d.ts +19 -0
  395. package/dist/src/lib/analyzers/typescript/security-checks/information-disclosure.d.ts.map +1 -0
  396. package/dist/src/lib/analyzers/typescript/security-checks/information-disclosure.js +97 -0
  397. package/dist/src/lib/analyzers/typescript/security-checks/information-disclosure.js.map +1 -0
  398. package/dist/src/lib/analyzers/typescript/security-checks/injection-attacks.d.ts +29 -0
  399. package/dist/src/lib/analyzers/typescript/security-checks/injection-attacks.d.ts.map +1 -0
  400. package/dist/src/lib/analyzers/typescript/security-checks/injection-attacks.js +319 -0
  401. package/dist/src/lib/analyzers/typescript/security-checks/injection-attacks.js.map +1 -0
  402. package/dist/src/lib/analyzers/typescript/security-checks/logging-failures.d.ts +21 -0
  403. package/dist/src/lib/analyzers/typescript/security-checks/logging-failures.d.ts.map +1 -0
  404. package/dist/src/lib/analyzers/typescript/security-checks/logging-failures.js +121 -0
  405. package/dist/src/lib/analyzers/typescript/security-checks/logging-failures.js.map +1 -0
  406. package/dist/src/lib/analyzers/typescript/security-checks/security-misconfiguration.d.ts +27 -0
  407. package/dist/src/lib/analyzers/typescript/security-checks/security-misconfiguration.d.ts.map +1 -0
  408. package/dist/src/lib/analyzers/typescript/security-checks/security-misconfiguration.js +213 -0
  409. package/dist/src/lib/analyzers/typescript/security-checks/security-misconfiguration.js.map +1 -0
  410. package/dist/src/lib/analyzers/typescript/security-checks/type-security.d.ts +19 -0
  411. package/dist/src/lib/analyzers/typescript/security-checks/type-security.d.ts.map +1 -0
  412. package/dist/src/lib/analyzers/typescript/security-checks/type-security.js +59 -0
  413. package/dist/src/lib/analyzers/typescript/security-checks/type-security.js.map +1 -0
  414. package/dist/src/lib/analyzers/typescript/type-checker.d.ts +17 -0
  415. package/dist/src/lib/analyzers/typescript/type-checker.d.ts.map +1 -0
  416. package/dist/src/lib/analyzers/typescript/type-checker.js +515 -0
  417. package/dist/src/lib/analyzers/typescript/type-checker.js.map +1 -0
  418. package/dist/src/lib/analyzers/typescript/utils/createVulnerability.d.ts +58 -0
  419. package/dist/src/lib/analyzers/typescript/utils/createVulnerability.d.ts.map +1 -0
  420. package/dist/src/lib/analyzers/typescript/utils/createVulnerability.js +71 -0
  421. package/dist/src/lib/analyzers/typescript/utils/createVulnerability.js.map +1 -0
  422. package/dist/src/lib/analyzers/typescript-analyzer.d.ts +116 -0
  423. package/dist/src/lib/analyzers/typescript-analyzer.d.ts.map +1 -0
  424. package/dist/src/lib/analyzers/typescript-analyzer.js +1660 -0
  425. package/dist/src/lib/analyzers/typescript-analyzer.js.map +1 -0
  426. package/dist/src/lib/security/compliance-mapping.d.ts +29 -0
  427. package/dist/src/lib/security/compliance-mapping.d.ts.map +1 -0
  428. package/dist/src/lib/security/compliance-mapping.js +1342 -0
  429. package/dist/src/lib/security/compliance-mapping.js.map +1 -0
  430. package/dist/src/lib/security/severity-scoring.d.ts +47 -0
  431. package/dist/src/lib/security/severity-scoring.d.ts.map +1 -0
  432. package/dist/src/lib/security/severity-scoring.js +965 -0
  433. package/dist/src/lib/security/severity-scoring.js.map +1 -0
  434. package/dist/src/lib/standards/references.d.ts +16 -0
  435. package/dist/src/lib/standards/references.d.ts.map +1 -0
  436. package/dist/src/lib/standards/references.js +1161 -0
  437. package/dist/src/lib/standards/references.js.map +1 -0
  438. package/dist/src/lib/types/index.d.ts +167 -0
  439. package/dist/src/lib/types/index.d.ts.map +1 -0
  440. package/dist/src/lib/types/index.js +3 -0
  441. package/dist/src/lib/types/index.js.map +1 -0
  442. package/dist/src/lib/utils/code-cleaner.d.ts +59 -0
  443. package/dist/src/lib/utils/code-cleaner.d.ts.map +1 -0
  444. package/dist/src/lib/utils/code-cleaner.js +283 -0
  445. package/dist/src/lib/utils/code-cleaner.js.map +1 -0
  446. package/package.json +51 -0
  447. package/src/commands/auth.ts +308 -0
  448. package/src/commands/config.ts +226 -0
  449. package/src/commands/init.ts +202 -0
  450. package/src/commands/scan.ts +238 -0
  451. package/src/config/config-loader.ts +175 -0
  452. package/src/reporters/cli-reporter.ts +282 -0
  453. package/src/scanner/local-scanner.ts +250 -0
  454. package/tsconfig.json +24 -0
  455. package/tsconfig.tsbuildinfo +1 -0
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ /**
3
+ * Java Logging Failures Security Checks
4
+ * OWASP A09:2025 - Security Logging and Monitoring Failures
5
+ *
6
+ * Detects logging security failures in Java applications.
7
+ * Updated for OWASP 2025 with security logging patterns (Phase 7B Day 9).
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.checkLoggingFailures = checkLoggingFailures;
11
+ const createVulnerability_1 = require("../utils/createVulnerability");
12
+ /**
13
+ * Checks for logging security vulnerabilities in Java code
14
+ *
15
+ * Covers:
16
+ * - Check #1: Missing security event logging (MEDIUM)
17
+ * - Check #2: System.out.println in production (LOW)
18
+ *
19
+ * @param lines - Array of code lines
20
+ * @returns Array of security vulnerabilities found
21
+ */
22
+ function checkLoggingFailures(lines) {
23
+ const vulnerabilities = [];
24
+ let inMultiLineComment = false;
25
+ lines.forEach((line, index) => {
26
+ const trimmedLine = line.trim();
27
+ // CRITICAL: Track multi-line comment blocks (/* ... */)
28
+ if (trimmedLine.includes('/*')) {
29
+ inMultiLineComment = true;
30
+ }
31
+ if (trimmedLine.includes('*/')) {
32
+ inMultiLineComment = false;
33
+ return; // Skip the line with */
34
+ }
35
+ // CRITICAL: Skip all lines inside multi-line comments and single-line comments
36
+ if (!trimmedLine ||
37
+ inMultiLineComment ||
38
+ trimmedLine.startsWith('//')) {
39
+ return;
40
+ }
41
+ const lowerLine = trimmedLine.toLowerCase();
42
+ // Check #1: Missing security event logging
43
+ // Look for security-sensitive operations without logging
44
+ const securityKeywords = [
45
+ 'login', 'authenticate', 'authorization', 'accessdenied',
46
+ 'deleteuser', 'deleteaccount', 'resetpassword', 'changepassword'
47
+ ];
48
+ const hasSecurityOperation = securityKeywords.some(keyword => lowerLine.includes(keyword));
49
+ if (hasSecurityOperation) {
50
+ // Check if it's a method declaration
51
+ const isMethodDeclaration = lowerLine.match(/^(public|private|protected)\s+\w+\s+\w+\s*\(/);
52
+ if (isMethodDeclaration) {
53
+ // Look for logging in the next 10 lines (method body)
54
+ const nextLines = lines.slice(index + 1, Math.min(index + 11, lines.length));
55
+ const hasLogging = nextLines.some(nextLine => {
56
+ const lowerNext = nextLine.toLowerCase();
57
+ return lowerNext.includes('logger.') ||
58
+ lowerNext.includes('log.info') ||
59
+ lowerNext.includes('log.warn') ||
60
+ lowerNext.includes('log.error') ||
61
+ lowerNext.includes('log.debug');
62
+ });
63
+ if (!hasLogging) {
64
+ vulnerabilities.push((0, createVulnerability_1.createJavaSecurityVulnerability)('missing-security-logging', 'security event missing audit logging', 'Add logger statements for security events (authentication, authorization, access control)', index + 1, 'Missing security event logging prevents detection of attacks, makes incident response impossible, and violates compliance requirements (PCI-DSS, HIPAA, SOC 2)', 'public void login(String user, String pass) {\n authenticate(user, pass); // No logging!\n}', [
65
+ 'Cannot detect ongoing attacks or breaches',
66
+ 'No audit trail for compliance (PCI-DSS 10.2)',
67
+ 'Incident response and forensics impossible',
68
+ 'Cannot identify compromised accounts',
69
+ 'Violations go undetected'
70
+ ], 'public void login(String username, String password) {\n User user = authenticate(username, password);\n}', 'public void login(String username, String password) {\n logger.info("Login attempt for user: {}", username);\n User user = authenticate(username, password);\n logger.info("Successful login for user: {}", username);\n}', 'Always log security events: authentication, authorization failures, access control violations, data modifications'));
71
+ }
72
+ }
73
+ }
74
+ // Check #2: System.out.println / System.err.println in production
75
+ if (lowerLine.includes('system.out.println') ||
76
+ lowerLine.includes('system.err.println') ||
77
+ lowerLine.includes('.printstacktrace()')) {
78
+ vulnerabilities.push((0, createVulnerability_1.createJavaSecurityVulnerability)('system-out-println', 'System.out/err.println detected - use proper logging framework', 'Replace with SLF4J logger (logger.info, logger.error)', index + 1, 'System.out.println writes to stdout which is not captured by logging systems, cannot be configured, filtered, or monitored. Production systems need centralized logging for monitoring and alerting', 'System.out.println("Processing order: " + orderId); // Lost in production!', [
79
+ 'No centralized logging or monitoring',
80
+ 'Cannot be filtered by severity or category',
81
+ 'No log rotation or retention policies',
82
+ 'Performance impact (synchronous, blocking I/O)',
83
+ 'Violates 12-factor app principles'
84
+ ], 'System.out.println("User logged in: " + username);', 'logger.info("User logged in: {}", username);', 'Use SLF4J or similar logging frameworks that support log levels, filtering, rotation, and centralized aggregation'));
85
+ }
86
+ });
87
+ return vulnerabilities;
88
+ }
89
+ //# sourceMappingURL=logging-failures.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging-failures.js","sourceRoot":"","sources":["../../../../../../../../src/lib/analyzers/java/security-checks/logging-failures.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Java Security Misconfiguration Checks
3
+ * OWASP A02:2025 - Security Misconfiguration
4
+ *
5
+ * Detects security misconfigurations that moved from #5 to #2 in OWASP 2025.
6
+ * Focus: Spring Security configs, logging levels, default settings, etc.
7
+ */
8
+ import { SecurityVulnerability } from '../../types';
9
+ /**
10
+ * Checks for security misconfiguration vulnerabilities in Java code
11
+ *
12
+ * Covers:
13
+ * - Check #1: Spring Security disabled (HIGH)
14
+ * - Check #2: Debug logging enabled (MEDIUM)
15
+ * - Check #3: Default admin credentials (CRITICAL)
16
+ * - Check #4: Insecure random for security tokens (MEDIUM)
17
+ * - Check #5: Weak SSL/TLS configuration (HIGH)
18
+ * - Check #6: Exposed management endpoints (HIGH)
19
+ * - Check #7: Error details in exceptions (MEDIUM)
20
+ * - Check #8: Insecure deserialization settings (HIGH)
21
+ *
22
+ * @param lines - Array of code lines
23
+ * @returns Array of security vulnerabilities found
24
+ */
25
+ export declare function checkSecurityMisconfiguration(lines: string[]): SecurityVulnerability[];
26
+ //# sourceMappingURL=security-misconfiguration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"security-misconfiguration.d.ts","sourceRoot":"","sources":["../../../../../../../../src/lib/analyzers/java/security-checks/security-misconfiguration.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAGpD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,MAAM,EAAE,GACd,qBAAqB,EAAE,CA2TzB"}
@@ -0,0 +1,309 @@
1
+ "use strict";
2
+ /**
3
+ * Java Security Misconfiguration Checks
4
+ * OWASP A02:2025 - Security Misconfiguration
5
+ *
6
+ * Detects security misconfigurations that moved from #5 to #2 in OWASP 2025.
7
+ * Focus: Spring Security configs, logging levels, default settings, etc.
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.checkSecurityMisconfiguration = checkSecurityMisconfiguration;
11
+ const createVulnerability_1 = require("../utils/createVulnerability");
12
+ /**
13
+ * Checks for security misconfiguration vulnerabilities in Java code
14
+ *
15
+ * Covers:
16
+ * - Check #1: Spring Security disabled (HIGH)
17
+ * - Check #2: Debug logging enabled (MEDIUM)
18
+ * - Check #3: Default admin credentials (CRITICAL)
19
+ * - Check #4: Insecure random for security tokens (MEDIUM)
20
+ * - Check #5: Weak SSL/TLS configuration (HIGH)
21
+ * - Check #6: Exposed management endpoints (HIGH)
22
+ * - Check #7: Error details in exceptions (MEDIUM)
23
+ * - Check #8: Insecure deserialization settings (HIGH)
24
+ *
25
+ * @param lines - Array of code lines
26
+ * @returns Array of security vulnerabilities found
27
+ */
28
+ function checkSecurityMisconfiguration(lines) {
29
+ const vulnerabilities = [];
30
+ let inMultiLineComment = false;
31
+ lines.forEach((line, index) => {
32
+ const trimmedLine = line.trim();
33
+ // CRITICAL: Track multi-line comment blocks (/* ... */)
34
+ if (trimmedLine.includes('/*')) {
35
+ inMultiLineComment = true;
36
+ }
37
+ if (trimmedLine.includes('*/')) {
38
+ inMultiLineComment = false;
39
+ return; // Skip the line with */
40
+ }
41
+ // CRITICAL: Skip all lines inside multi-line comments and single-line comments
42
+ // FIX (Dec 6, 2025): Removed trimmedLine.startsWith('*') check
43
+ // Reason: Lines in multi-line comments can start with '-', text, etc. (not just '*')
44
+ // Example: "- Default credentials: String password = \"admin\"" in documentation was being detected
45
+ // Solution: Rely on inMultiLineComment flag only
46
+ if (!trimmedLine ||
47
+ inMultiLineComment ||
48
+ trimmedLine.startsWith('//')) {
49
+ return;
50
+ }
51
+ const lowerLine = trimmedLine.toLowerCase();
52
+ // Check #1: Spring Security disabled or misconfigured
53
+ if ((lowerLine.includes('@enablewebsecurity') && lowerLine.includes('false')) ||
54
+ (lowerLine.includes('security') && lowerLine.includes('disable')) ||
55
+ lowerLine.includes('permitall()')) {
56
+ vulnerabilities.push((0, createVulnerability_1.createJavaSecurityVulnerability)({
57
+ category: 'Security Misconfiguration',
58
+ severity: 'HIGH',
59
+ confidence: 'HIGH',
60
+ message: 'Spring Security may be disabled or misconfigured',
61
+ line: index + 1,
62
+ suggestion: 'Review security configuration and ensure proper authentication/authorization',
63
+ owasp: 'A02:2025',
64
+ cwe: 'CWE-16',
65
+ pciDss: 'Requirement 7.1',
66
+ remediation: {
67
+ explanation: 'Disabling security controls exposes application to unauthorized access',
68
+ before: 'http.authorizeRequests().anyRequest().permitAll()',
69
+ after: 'http.authorizeRequests().anyRequest().authenticated()'
70
+ },
71
+ attackVector: {
72
+ description: 'Disabled security controls allow unauthorized access to protected resources',
73
+ realWorldImpact: [
74
+ 'Complete bypass of authentication mechanisms',
75
+ 'Unauthorized access to sensitive endpoints',
76
+ 'Administrative function exposure',
77
+ 'Data access without authorization'
78
+ ]
79
+ }
80
+ }));
81
+ }
82
+ // Check #2: Debug logging enabled in production
83
+ if ((lowerLine.includes('logger.setlevel') && lowerLine.includes('debug')) ||
84
+ (lowerLine.includes('log4j') && lowerLine.includes('debug')) ||
85
+ (lowerLine.includes('logging.level') && lowerLine.includes('debug'))) {
86
+ vulnerabilities.push((0, createVulnerability_1.createJavaSecurityVulnerability)({
87
+ category: 'Security Misconfiguration',
88
+ severity: 'MEDIUM',
89
+ confidence: 'MEDIUM',
90
+ message: 'Debug logging may be enabled in production environment',
91
+ line: index + 1,
92
+ suggestion: 'Use INFO or WARN level logging in production environments',
93
+ owasp: 'A02:2025',
94
+ cwe: 'CWE-489',
95
+ pciDss: 'Requirement 6.1',
96
+ remediation: {
97
+ explanation: 'Debug logging can expose sensitive information and impact performance',
98
+ before: 'logger.setLevel(Level.DEBUG)',
99
+ after: 'logger.setLevel(Level.INFO) // or use configuration files'
100
+ },
101
+ attackVector: {
102
+ description: 'Debug logs may contain sensitive data, stack traces, and system internals',
103
+ realWorldImpact: [
104
+ 'Sensitive data exposure in log files',
105
+ 'System architecture revelation',
106
+ 'Performance degradation',
107
+ 'Storage space exhaustion'
108
+ ]
109
+ }
110
+ }));
111
+ }
112
+ // Check #3: Default admin credentials
113
+ if ((lowerLine.includes('username') &&
114
+ (lowerLine.includes('"admin"') || lowerLine.includes("'admin'"))) ||
115
+ (lowerLine.includes('password') &&
116
+ (lowerLine.includes('"admin"') || lowerLine.includes("'admin'") ||
117
+ lowerLine.includes('"password"') || lowerLine.includes("'password'")))) {
118
+ vulnerabilities.push((0, createVulnerability_1.createJavaSecurityVulnerability)({
119
+ category: 'Security Misconfiguration',
120
+ severity: 'CRITICAL',
121
+ confidence: 'HIGH',
122
+ message: 'Default admin credentials detected in configuration',
123
+ line: index + 1,
124
+ suggestion: 'Use strong, unique credentials stored in secure configuration',
125
+ owasp: 'A02:2025',
126
+ cwe: 'CWE-798',
127
+ pciDss: 'Requirement 2.1',
128
+ remediation: {
129
+ explanation: 'Default credentials are well-known and provide immediate unauthorized access',
130
+ before: 'String password = "admin";',
131
+ after: 'String password = System.getenv("ADMIN_PASSWORD");'
132
+ },
133
+ attackVector: {
134
+ description: 'Default credentials are publicly known and easily exploited',
135
+ realWorldImpact: [
136
+ 'Immediate administrative access',
137
+ 'Complete system compromise',
138
+ 'Data theft and manipulation',
139
+ 'Privilege escalation opportunities'
140
+ ]
141
+ }
142
+ }));
143
+ }
144
+ // Check #4: Insecure random for security tokens
145
+ // FIX (Dec 6, 2025): Added method context detection (not just same-line keywords)
146
+ // Example missed: public String generateSecurityToken() { return String.valueOf(Math.random()); }
147
+ // Now checks previous 5 lines for security method names
148
+ if (lowerLine.includes('math.random()')) {
149
+ const hasSameLineKeyword = lowerLine.includes('token') || lowerLine.includes('session') ||
150
+ lowerLine.includes('password') || lowerLine.includes('secret');
151
+ // Check previous 5 lines for security method context
152
+ const prevLines = lines.slice(Math.max(0, index - 5), index);
153
+ const hasContextKeyword = prevLines.some(l => l.toLowerCase().match(/password|token|key|secret|salt|nonce|session|auth|security/i) ||
154
+ l.match(/(public|private|protected)\s+\w+\s+(generate|create)(Token|Key|Password|Secret|Session|Auth|Security)/i));
155
+ if (hasSameLineKeyword || hasContextKeyword) {
156
+ vulnerabilities.push((0, createVulnerability_1.createJavaSecurityVulnerability)({
157
+ category: 'Security Misconfiguration',
158
+ severity: 'MEDIUM',
159
+ confidence: 'HIGH',
160
+ message: 'Insecure random number generator used for security-sensitive operations',
161
+ line: index + 1,
162
+ suggestion: 'Use SecureRandom for cryptographically secure random numbers',
163
+ owasp: 'A02:2025',
164
+ cwe: 'CWE-338',
165
+ pciDss: 'Requirement 3.4',
166
+ remediation: {
167
+ explanation: 'Math.random() is predictable and unsuitable for security tokens',
168
+ before: 'String token = String.valueOf(Math.random());',
169
+ after: 'SecureRandom sr = new SecureRandom();\nString token = new BigInteger(130, sr).toString(32);'
170
+ },
171
+ attackVector: {
172
+ description: 'Predictable tokens enable session hijacking and security bypass',
173
+ realWorldImpact: [
174
+ 'Session token prediction',
175
+ 'Authentication bypass',
176
+ 'CSRF token guessing',
177
+ 'Password reset token compromise'
178
+ ]
179
+ }
180
+ }));
181
+ }
182
+ }
183
+ // Check #5: Weak SSL/TLS configuration
184
+ // FIX (Dec 6, 2025): Added setDefaultHostnameVerifier detection with lambda pattern
185
+ // Example missed: HttpsURLConnection.setDefaultHostnameVerifier((hostname, session) -> true);
186
+ // Now detects: setDefaultHostnameVerifier + lambda returning true
187
+ if ((lowerLine.includes('sslcontext') && lowerLine.includes('ssl')) ||
188
+ (lowerLine.includes('trustallcerts') || lowerLine.includes('trust_all')) ||
189
+ (lowerLine.includes('hostname') && lowerLine.includes('verif') && lowerLine.includes('false')) ||
190
+ (lowerLine.includes('setdefaulthostnameverifier') && lowerLine.includes('-> true')) ||
191
+ (lowerLine.includes('setdefaulthostnameverifier') &&
192
+ lines.slice(index, Math.min(index + 3, lines.length)).some(nextLine => nextLine.toLowerCase().includes('-> true')))) {
193
+ vulnerabilities.push((0, createVulnerability_1.createJavaSecurityVulnerability)({
194
+ category: 'Security Misconfiguration',
195
+ severity: 'HIGH',
196
+ confidence: 'MEDIUM',
197
+ message: 'Weak SSL/TLS configuration detected',
198
+ line: index + 1,
199
+ suggestion: 'Use secure SSL/TLS configurations with proper certificate validation',
200
+ owasp: 'A02:2025',
201
+ cwe: 'CWE-295',
202
+ pciDss: 'Requirement 4.1',
203
+ remediation: {
204
+ explanation: 'Weak SSL configurations enable man-in-the-middle attacks',
205
+ before: 'HttpsURLConnection.setDefaultHostnameVerifier((hostname, session) -> true)',
206
+ after: 'HttpsURLConnection.setDefaultHostnameVerifier(new DefaultHostnameVerifier())'
207
+ },
208
+ attackVector: {
209
+ description: 'Weak SSL/TLS enables interception and manipulation of encrypted communications',
210
+ realWorldImpact: [
211
+ 'Man-in-the-middle attacks',
212
+ 'Certificate validation bypass',
213
+ 'Encrypted data interception',
214
+ 'Communication integrity compromise'
215
+ ]
216
+ }
217
+ }));
218
+ }
219
+ // Check #6: Exposed management endpoints
220
+ if (lowerLine.includes('management.endpoints') ||
221
+ (lowerLine.includes('actuator') && lowerLine.includes('expose'))) {
222
+ vulnerabilities.push((0, createVulnerability_1.createJavaSecurityVulnerability)({
223
+ category: 'Security Misconfiguration',
224
+ severity: 'HIGH',
225
+ confidence: 'MEDIUM',
226
+ message: 'Spring Boot management endpoints may be exposed',
227
+ line: index + 1,
228
+ suggestion: 'Secure management endpoints with authentication and restrict access',
229
+ owasp: 'A02:2025',
230
+ cwe: 'CWE-200',
231
+ pciDss: 'Requirement 7.1',
232
+ remediation: {
233
+ explanation: 'Exposed management endpoints reveal sensitive application internals',
234
+ before: 'management.endpoints.web.exposure.include=*',
235
+ after: 'management.endpoints.web.exposure.include=health,info'
236
+ },
237
+ attackVector: {
238
+ description: 'Management endpoints expose application configuration and runtime information',
239
+ realWorldImpact: [
240
+ 'Internal configuration exposure',
241
+ 'Environment variable disclosure',
242
+ 'Application metrics and health information',
243
+ 'Potential administrative access'
244
+ ]
245
+ }
246
+ }));
247
+ }
248
+ // Check #7: Error details in exceptions
249
+ if (lowerLine.includes('printstacktrace()') ||
250
+ (lowerLine.includes('exception') && lowerLine.includes('getmessage') &&
251
+ lowerLine.includes('response'))) {
252
+ vulnerabilities.push((0, createVulnerability_1.createJavaSecurityVulnerability)({
253
+ category: 'Security Misconfiguration',
254
+ severity: 'MEDIUM',
255
+ confidence: 'MEDIUM',
256
+ message: 'Detailed error information may be exposed to users',
257
+ line: index + 1,
258
+ suggestion: 'Log detailed errors server-side, return generic error messages to users',
259
+ owasp: 'A02:2025',
260
+ cwe: 'CWE-209',
261
+ pciDss: 'Requirement 6.1',
262
+ remediation: {
263
+ explanation: 'Detailed exception information reveals internal application structure',
264
+ before: 'response.getWriter().println(e.getMessage());',
265
+ after: 'logger.error("Error occurred", e);\nresponse.getWriter().println("Internal server error");'
266
+ },
267
+ attackVector: {
268
+ description: 'Exception details can reveal file paths, database schemas, and application logic',
269
+ realWorldImpact: [
270
+ 'Internal system information disclosure',
271
+ 'File path and directory structure exposure',
272
+ 'Database schema and query information',
273
+ 'Third-party library version fingerprinting'
274
+ ]
275
+ }
276
+ }));
277
+ }
278
+ // Check #8: Insecure deserialization settings
279
+ if (lowerLine.includes('objectinputstream') && !lowerLine.includes('filter')) {
280
+ vulnerabilities.push((0, createVulnerability_1.createJavaSecurityVulnerability)({
281
+ category: 'Security Misconfiguration',
282
+ severity: 'HIGH',
283
+ confidence: 'MEDIUM',
284
+ message: 'Unfiltered object deserialization may allow arbitrary code execution',
285
+ line: index + 1,
286
+ suggestion: 'Implement deserialization filters to restrict allowed classes',
287
+ owasp: 'A02:2025',
288
+ cwe: 'CWE-502',
289
+ pciDss: 'Requirement 6.1',
290
+ remediation: {
291
+ explanation: 'Unfiltered deserialization can lead to remote code execution',
292
+ before: 'ObjectInputStream ois = new ObjectInputStream(inputStream);',
293
+ after: 'ObjectInputStream ois = new ObjectInputStream(inputStream);\nois.setObjectInputFilter(ObjectInputFilter.rejectUndecidedClass);'
294
+ },
295
+ attackVector: {
296
+ description: 'Malicious serialized objects can execute arbitrary code during deserialization',
297
+ realWorldImpact: [
298
+ 'Remote code execution',
299
+ 'Complete server compromise',
300
+ 'Data theft and manipulation',
301
+ 'Denial of service attacks'
302
+ ]
303
+ }
304
+ }));
305
+ }
306
+ });
307
+ return vulnerabilities;
308
+ }
309
+ //# sourceMappingURL=security-misconfiguration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"security-misconfiguration.js","sourceRoot":"","sources":["../../../../../../../../src/lib/analyzers/java/security-checks/security-misconfiguration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Unsafe Code Patterns Module
3
+ *
4
+ * Detects unsafe coding patterns in Java source code including:
5
+ * - Reflection without validation
6
+ * - Unhandled NullPointerException
7
+ * - Generic Exception catch blocks
8
+ *
9
+ * OWASP A04:2021 - Insecure Design
10
+ */
11
+ import { SecurityVulnerability } from '../../types';
12
+ /**
13
+ * Check for unsafe code patterns in Java code
14
+ * @param lines - Array of code lines to analyze
15
+ * @returns Array of security vulnerabilities found
16
+ */
17
+ export declare function checkUnsafePatterns(lines: string[]): SecurityVulnerability[];
18
+ //# sourceMappingURL=unsafe-patterns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unsafe-patterns.d.ts","sourceRoot":"","sources":["../../../../../../../../src/lib/analyzers/java/security-checks/unsafe-patterns.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAGpD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,qBAAqB,EAAE,CAqI5E"}
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+ /**
3
+ * Unsafe Code Patterns Module
4
+ *
5
+ * Detects unsafe coding patterns in Java source code including:
6
+ * - Reflection without validation
7
+ * - Unhandled NullPointerException
8
+ * - Generic Exception catch blocks
9
+ *
10
+ * OWASP A04:2021 - Insecure Design
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.checkUnsafePatterns = checkUnsafePatterns;
14
+ const createVulnerability_1 = require("../utils/createVulnerability");
15
+ /**
16
+ * Check for unsafe code patterns in Java code
17
+ * @param lines - Array of code lines to analyze
18
+ * @returns Array of security vulnerabilities found
19
+ */
20
+ function checkUnsafePatterns(lines) {
21
+ const vulnerabilities = [];
22
+ let inMultiLineComment = false;
23
+ lines.forEach((line, index) => {
24
+ const trimmed = line.trim();
25
+ const lineNumber = index + 1;
26
+ // CRITICAL: Track multi-line comment blocks (/* ... */)
27
+ if (trimmed.includes('/*')) {
28
+ inMultiLineComment = true;
29
+ }
30
+ if (trimmed.includes('*/')) {
31
+ inMultiLineComment = false;
32
+ return; // Skip the line with */
33
+ }
34
+ // CRITICAL: Skip all lines inside multi-line comments and single-line comments
35
+ // FIX (Dec 6, 2025): Added proper multi-line comment tracking
36
+ if (!trimmed ||
37
+ inMultiLineComment ||
38
+ trimmed.startsWith('//')) {
39
+ return;
40
+ }
41
+ // 13. Reflection without validation - HIGH
42
+ // FIX (Dec 6, 2025): Added whitelist context checking (same as enhanced-supply-chain.ts)
43
+ // FIX (Dec 9, 2025): Exclude safe API patterns (DocumentBuilderFactory, standard library)
44
+ if (trimmed.match(/Class\s*\.\s*forName\s*\(/) || trimmed.match(/\.newInstance\s*\(/)) {
45
+ // Skip safe patterns: Standard Java APIs using reflection internally
46
+ const safeApiPatterns = [
47
+ 'DocumentBuilderFactory.class.getMethod',
48
+ 'SAXParserFactory.class.getMethod',
49
+ 'TransformerFactory.class.getMethod',
50
+ 'XPathFactory.class.getMethod',
51
+ 'Class.forName("java.', // Standard library classes
52
+ 'Class.forName("javax.', // Java extension classes
53
+ '.getClass().getMethod("get', // Getter method reflection
54
+ '.getClass().getMethod("set', // Setter method reflection
55
+ ];
56
+ const isSafeApiPattern = safeApiPatterns.some(pattern => trimmed.includes(pattern));
57
+ if (isSafeApiPattern) {
58
+ return; // Skip safe Java API patterns
59
+ }
60
+ const hasSameLineValidation = trimmed.toLowerCase().includes('validate') ||
61
+ trimmed.toLowerCase().includes('whitelist') ||
62
+ trimmed.toLowerCase().includes('allowlist');
63
+ // Check previous 10 lines for whitelist context
64
+ const prevLines = lines.slice(Math.max(0, index - 10), index);
65
+ const hasWhitelistContext = prevLines.some(l => {
66
+ const lowerPrev = l.toLowerCase();
67
+ return (lowerPrev.includes('whitelist') || lowerPrev.includes('allowlist') ||
68
+ lowerPrev.includes('allowed') || lowerPrev.includes('safe')) &&
69
+ (lowerPrev.includes('set.of') || lowerPrev.includes('arrays.aslist') ||
70
+ lowerPrev.includes('list.of'));
71
+ });
72
+ // Check if there's a .contains() validation before Class.forName
73
+ const hasContainsCheck = prevLines.some(l => l.toLowerCase().includes('.contains(') && l.includes('if'));
74
+ if (!hasSameLineValidation && !hasWhitelistContext && !hasContainsCheck) {
75
+ vulnerabilities.push((0, createVulnerability_1.createJavaSecurityVulnerability)('unsafe-reflection', 'Unsafe reflection with potential user input detected', 'Validate class names against a strict whitelist before using reflection', lineNumber, 'Java reflection allows instantiating arbitrary classes and calling their methods at runtime. If an attacker can control the class name, they can instantiate dangerous classes (like ProcessBuilder, Runtime, ClassLoader) to execute arbitrary code, access sensitive data, or bypass security restrictions.', 'Class.forName(userInput).newInstance() where userInput = "java.lang.Runtime" can execute commands via Runtime.getRuntime().exec()', [
76
+ 'Remote Code Execution',
77
+ 'Arbitrary class instantiation',
78
+ 'Security manager bypass',
79
+ 'Access to private APIs',
80
+ 'Privilege escalation'
81
+ ], 'String className = request.getParameter("class");\nClass<?> clazz = Class.forName(className); // Dangerous\nObject instance = clazz.newInstance();', 'String className = request.getParameter("class");\n// Whitelist validation\nSet<String> allowedClasses = Set.of("com.app.SafeClass1", "com.app.SafeClass2");\nif (!allowedClasses.contains(className)) {\n throw new SecurityException("Class not allowed");\n}\nClass<?> clazz = Class.forName(className);\nObject instance = clazz.newInstance();', 'Always validate class names against a strict whitelist of allowed classes. Never use user input directly in Class.forName() or newInstance() calls'));
82
+ }
83
+ }
84
+ // 14. Unhandled NullPointerException - MEDIUM
85
+ // FIX (Dec 6, 2025): Removed old comment checks - now handled by inMultiLineComment tracking
86
+ // FIX (Dec 11, 2025): Skip method calls on 'new' expressions - constructors return non-null objects
87
+ // Example: new BigInteger(130, random).toString(32) is safe, toString() cannot be called on null
88
+ if (trimmed.match(/\.\w+\s*\(/) && !trimmed.includes('if') && !trimmed.includes('Optional') &&
89
+ !trimmed.includes('Objects.requireNonNull') && !trimmed.includes('new ')) {
90
+ const prevLines = lines.slice(Math.max(0, index - 2), index);
91
+ const hasNullCheck = prevLines.some(l => l.includes('!= null') || l.includes('== null'));
92
+ if (!hasNullCheck && Math.random() < 0.1) { // Sample 10% to avoid too many warnings
93
+ vulnerabilities.push({
94
+ severity: 'low',
95
+ message: 'Possible NullPointerException without null check',
96
+ suggestion: 'Use Optional<T>, Objects.requireNonNull(), or null check: if (obj != null)',
97
+ line: lineNumber
98
+ });
99
+ }
100
+ }
101
+ // 18. Generic Exception catch - LOW
102
+ if (trimmed.match(/catch\s*\(\s*Exception\s+\w+\s*\)/)) {
103
+ vulnerabilities.push((0, createVulnerability_1.createJavaSecurityVulnerability)('generic-exception-catch', 'Generic Exception catch detected - hides specific errors', 'Catch specific exceptions: catch (IOException | SQLException e)', lineNumber, 'Catching generic Exception masks different error conditions and makes it impossible to handle them appropriately. Security-critical exceptions (like authentication failures, access denials) may be handled the same way as benign errors, leading to bypasses. It also catches RuntimeExceptions that may indicate programming errors.', 'catch (Exception e) { return "success"; } // Catches SecurityException, swallowing access denial', [
104
+ 'Security exception bypasses',
105
+ 'Error condition masking',
106
+ 'Difficult debugging',
107
+ 'Improper error handling',
108
+ 'Business logic violations'
109
+ ], 'try {\n authenticateUser();\n accessResource();\n} catch (Exception e) { // Too broad\n logger.error("Error", e);\n return "success"; // Wrong!\n}', 'try {\n authenticateUser();\n accessResource();\n} catch (AuthenticationException e) {\n logger.warn("Auth failed", e);\n return "unauthorized";\n} catch (AccessDeniedException e) {\n logger.warn("Access denied", e);\n return "forbidden";\n} catch (IOException e) {\n logger.error("IO error", e);\n return "error";\n}', 'Catch specific exceptions to handle each error condition appropriately. Security exceptions should be logged and handled differently from operational errors. Use multi-catch for similar exceptions'));
110
+ }
111
+ });
112
+ return vulnerabilities;
113
+ }
114
+ //# sourceMappingURL=unsafe-patterns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unsafe-patterns.js","sourceRoot":"","sources":["../../../../../../../../src/lib/analyzers/java/security-checks/unsafe-patterns.ts"],"names":[],"mappings":"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"}