@zhuma4/cli 4.0.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (288) hide show
  1. package/README.md +42 -0
  2. package/dist/commands/config.d.ts +3 -0
  3. package/dist/commands/config.d.ts.map +1 -0
  4. package/dist/commands/config.js +18 -0
  5. package/dist/commands/config.js.map +1 -0
  6. package/dist/commands/init.d.ts +3 -0
  7. package/dist/commands/init.d.ts.map +1 -0
  8. package/dist/commands/init.js +11 -0
  9. package/dist/commands/init.js.map +1 -0
  10. package/dist/commands/scan.d.ts +3 -0
  11. package/dist/commands/scan.d.ts.map +1 -0
  12. package/dist/commands/scan.js +96 -0
  13. package/dist/commands/scan.js.map +1 -0
  14. package/dist/commands/scan_appid.d.ts +20 -0
  15. package/dist/commands/scan_appid.d.ts.map +1 -0
  16. package/dist/commands/scan_appid.js +301 -0
  17. package/dist/commands/scan_appid.js.map +1 -0
  18. package/dist/commands/scan_manifest.d.ts +13 -0
  19. package/dist/commands/scan_manifest.d.ts.map +1 -0
  20. package/dist/commands/scan_manifest.js +103 -0
  21. package/dist/commands/scan_manifest.js.map +1 -0
  22. package/dist/engine/api-submit.d.ts +16 -0
  23. package/dist/engine/api-submit.d.ts.map +1 -0
  24. package/dist/engine/api-submit.js +66 -0
  25. package/dist/engine/api-submit.js.map +1 -0
  26. package/dist/engine/batch_scan.d.ts +36 -0
  27. package/dist/engine/batch_scan.d.ts.map +1 -0
  28. package/dist/engine/batch_scan.js +192 -0
  29. package/dist/engine/batch_scan.js.map +1 -0
  30. package/dist/engine/config.d.ts +12 -0
  31. package/dist/engine/config.d.ts.map +1 -0
  32. package/dist/engine/config.js +27 -0
  33. package/dist/engine/config.js.map +1 -0
  34. package/dist/engine/errors.d.ts +36 -0
  35. package/dist/engine/errors.d.ts.map +1 -0
  36. package/dist/engine/errors.js +99 -0
  37. package/dist/engine/errors.js.map +1 -0
  38. package/dist/engine/filter.d.ts +13 -0
  39. package/dist/engine/filter.d.ts.map +1 -0
  40. package/dist/engine/filter.js +64 -0
  41. package/dist/engine/filter.js.map +1 -0
  42. package/dist/engine/finding_classifier.d.ts +108 -0
  43. package/dist/engine/finding_classifier.d.ts.map +1 -0
  44. package/dist/engine/finding_classifier.js +440 -0
  45. package/dist/engine/finding_classifier.js.map +1 -0
  46. package/dist/engine/incremental/engine.d.ts +25 -0
  47. package/dist/engine/incremental/engine.d.ts.map +1 -0
  48. package/dist/engine/incremental/engine.js +337 -0
  49. package/dist/engine/incremental/engine.js.map +1 -0
  50. package/dist/engine/incremental/git-diff.d.ts +19 -0
  51. package/dist/engine/incremental/git-diff.d.ts.map +1 -0
  52. package/dist/engine/incremental/git-diff.js +175 -0
  53. package/dist/engine/incremental/git-diff.js.map +1 -0
  54. package/dist/engine/incremental/types.d.ts +33 -0
  55. package/dist/engine/incremental/types.d.ts.map +1 -0
  56. package/dist/engine/incremental/types.js +11 -0
  57. package/dist/engine/incremental/types.js.map +1 -0
  58. package/dist/engine/manifest_scanner.d.ts +48 -0
  59. package/dist/engine/manifest_scanner.d.ts.map +1 -0
  60. package/dist/engine/manifest_scanner.js +599 -0
  61. package/dist/engine/manifest_scanner.js.map +1 -0
  62. package/dist/engine/project.d.ts +22 -0
  63. package/dist/engine/project.d.ts.map +1 -0
  64. package/dist/engine/project.js +279 -0
  65. package/dist/engine/project.js.map +1 -0
  66. package/dist/engine/sarif.d.ts +13 -0
  67. package/dist/engine/sarif.d.ts.map +1 -0
  68. package/dist/engine/sarif.js +44 -0
  69. package/dist/engine/sarif.js.map +1 -0
  70. package/dist/engine/sca-integration.d.ts +36 -0
  71. package/dist/engine/sca-integration.d.ts.map +1 -0
  72. package/dist/engine/sca-integration.js +91 -0
  73. package/dist/engine/sca-integration.js.map +1 -0
  74. package/dist/engine/scanner.d.ts +18 -0
  75. package/dist/engine/scanner.d.ts.map +1 -0
  76. package/dist/engine/scanner.js +138 -0
  77. package/dist/engine/scanner.js.map +1 -0
  78. package/dist/index.d.ts +13 -0
  79. package/dist/index.d.ts.map +1 -0
  80. package/dist/index.js +41 -0
  81. package/dist/index.js.map +1 -0
  82. package/dist/report/render.d.ts +23 -0
  83. package/dist/report/render.d.ts.map +1 -0
  84. package/dist/report/render.js +335 -0
  85. package/dist/report/render.js.map +1 -0
  86. package/package.json +41 -0
  87. package/rules/android/mobile-cleartext-traffic.yaml +46 -0
  88. package/rules/android/mobile-component-security.yaml +107 -0
  89. package/rules/android/mobile-crypto-weakness.yaml +139 -0
  90. package/rules/android/mobile-cwe-1021-tapjacking.yaml +81 -0
  91. package/rules/android/mobile-cwe-114-dynamic-dex-loading.yaml +41 -0
  92. package/rules/android/mobile-cwe-200-clipboard-data-leak.yaml +66 -0
  93. package/rules/android/mobile-cwe-200-debug-builds.yaml +111 -0
  94. package/rules/android/mobile-cwe-200-log-sensitive-data.yaml +61 -0
  95. package/rules/android/mobile-cwe-200-webview-debugging.yaml +56 -0
  96. package/rules/android/mobile-cwe-200-webview-universal-access.yaml +30 -0
  97. package/rules/android/mobile-cwe-200-window-flags.yaml +96 -0
  98. package/rules/android/mobile-cwe-22-content-provider-openfile.yaml +73 -0
  99. package/rules/android/mobile-cwe-22-path-traversal.yaml +86 -0
  100. package/rules/android/mobile-cwe-287-biometric-weakness.yaml +102 -0
  101. package/rules/android/mobile-cwe-295-cert-pinning-missing.yaml +78 -0
  102. package/rules/android/mobile-cwe-295-webview-ssl-bypass.yaml +104 -0
  103. package/rules/android/mobile-cwe-312-cleartext-storage.yaml +109 -0
  104. package/rules/android/mobile-cwe-319-cleartext-communication.yaml +84 -0
  105. package/rules/android/mobile-cwe-321-hardcoded-crypto-keys.yaml +132 -0
  106. package/rules/android/mobile-cwe-326-short-rsa.yaml +108 -0
  107. package/rules/android/mobile-cwe-327-rc4-3des.yaml +107 -0
  108. package/rules/android/mobile-cwe-329-cbc-padding-oracle.yaml +76 -0
  109. package/rules/android/mobile-cwe-470-reflection-injection.yaml +39 -0
  110. package/rules/android/mobile-cwe-489-root-detection-weak.yaml +125 -0
  111. package/rules/android/mobile-cwe-489-stetho-debug.yaml +107 -0
  112. package/rules/android/mobile-cwe-502-insecure-deserialization.yaml +76 -0
  113. package/rules/android/mobile-cwe-552-world-readable-files.yaml +63 -0
  114. package/rules/android/mobile-cwe-749-webview-java-objects.yaml +78 -0
  115. package/rules/android/mobile-cwe-749-webview-jsbridge.yaml +57 -0
  116. package/rules/android/mobile-cwe-749-webview-loadurl-injection.yaml +80 -0
  117. package/rules/android/mobile-cwe-78-command-injection.yaml +77 -0
  118. package/rules/android/mobile-cwe-780-rsa-no-oaep.yaml +80 -0
  119. package/rules/android/mobile-cwe-79-webview-setdata.yaml +78 -0
  120. package/rules/android/mobile-cwe-79-webview-xss.yaml +65 -0
  121. package/rules/android/mobile-cwe-798-hardcoded-credentials.yaml +108 -0
  122. package/rules/android/mobile-cwe-89-sql-injection.yaml +100 -0
  123. package/rules/android/mobile-cwe-927-implicit-intent.yaml +121 -0
  124. package/rules/android/mobile-cwe-927-ipc-file-provider.yaml +102 -0
  125. package/rules/android/mobile-cwe-939-deeplink-validation.yaml +76 -0
  126. package/rules/android/mobile-sdk-google-firebase-open.yaml +117 -0
  127. package/rules/android/mobile-sdk-tencent-tpns-config-leak.yaml +131 -0
  128. package/rules/android/mobile-secrets-storage.yaml +136 -0
  129. package/rules/android/mobile-webview-security.yaml +88 -0
  130. package/rules/common/cwe-200-sensitive-data-exposure.yaml +61 -0
  131. package/rules/common/cwe-22-path-traversal.yaml +47 -0
  132. package/rules/common/cwe-295-ssl-bypass.yaml +217 -0
  133. package/rules/common/cwe-295-ssl-verification-disabled.yaml +64 -0
  134. package/rules/common/cwe-306-missing-authentication.yaml +44 -0
  135. package/rules/common/cwe-326-weak-key-size.yaml +107 -0
  136. package/rules/common/cwe-327-weak-crypto.yaml +177 -0
  137. package/rules/common/cwe-328-weak-hash.yaml +96 -0
  138. package/rules/common/cwe-329-cbc-mode.yaml +26 -0
  139. package/rules/common/cwe-352-csrf.yaml +23 -0
  140. package/rules/common/cwe-434-unrestricted-file-upload.yaml +41 -0
  141. package/rules/common/cwe-502-insecure-deserialization.yaml +44 -0
  142. package/rules/common/cwe-601-url-redirect.yaml +110 -0
  143. package/rules/common/cwe-611-xxe.yaml +70 -0
  144. package/rules/common/cwe-732-incorrect-permission.yaml +49 -0
  145. package/rules/common/cwe-770-resource-exhaustion.yaml +44 -0
  146. package/rules/common/cwe-78-os-command-injection.yaml +43 -0
  147. package/rules/common/cwe-787-out-of-bounds-write.yaml +37 -0
  148. package/rules/common/cwe-79-xss.yaml +51 -0
  149. package/rules/common/cwe-862-missing-authorization.yaml +40 -0
  150. package/rules/common/cwe-89-sqli.yaml +89 -0
  151. package/rules/common/cwe-918-ssrf.yaml +45 -0
  152. package/rules/common/cwe-94-code-injection.yaml +59 -0
  153. package/rules/common/zm-go-cwe22-path-traversal-fs.yaml +117 -0
  154. package/rules/common/zm-go-cwe22-path-traversal.yaml +103 -0
  155. package/rules/common/zm-go-cwe307-brute-force.yaml +129 -0
  156. package/rules/common/zm-go-cwe326-weak-crypto.yaml +124 -0
  157. package/rules/common/zm-go-cwe327-weak-cipher.yaml +152 -0
  158. package/rules/common/zm-go-cwe384-session-fixation.yaml +128 -0
  159. package/rules/common/zm-go-cwe502-deserialization.yaml +120 -0
  160. package/rules/common/zm-go-cwe78-command-injection.yaml +95 -0
  161. package/rules/common/zm-go-cwe79-xss.yaml +104 -0
  162. package/rules/common/zm-go-cwe798-hardcoded-creds.yaml +153 -0
  163. package/rules/common/zm-go-cwe89-sqli.yaml +89 -0
  164. package/rules/common/zm-go-cwe918-ssrf.yaml +117 -0
  165. package/rules/common/zm-java-cwe117-log-injection.yaml +83 -0
  166. package/rules/common/zm-java-cwe117-logforging.yaml +153 -0
  167. package/rules/common/zm-java-cwe200-actuator-exposure.yaml +8 -0
  168. package/rules/common/zm-java-cwe200-info-disclosure.yaml +91 -0
  169. package/rules/common/zm-java-cwe22-file-depth.yaml +135 -0
  170. package/rules/common/zm-java-cwe22-path-traversal-spring.yaml +81 -0
  171. package/rules/common/zm-java-cwe284-missing-auth-spring.yaml +131 -0
  172. package/rules/common/zm-java-cwe295-webview-ssl.yaml +123 -0
  173. package/rules/common/zm-java-cwe327-weakcrypto.yaml +197 -0
  174. package/rules/common/zm-java-cwe347-jwt.yaml +30 -0
  175. package/rules/common/zm-java-cwe352-csrf-depth.yaml +107 -0
  176. package/rules/common/zm-java-cwe352-csrf-disabled.yaml +15 -0
  177. package/rules/common/zm-java-cwe501-trust-boundary.yaml +124 -0
  178. package/rules/common/zm-java-cwe502-deserial-depth.yaml +128 -0
  179. package/rules/common/zm-java-cwe502-fastjson.yaml +137 -0
  180. package/rules/common/zm-java-cwe502-gadget.yaml +158 -0
  181. package/rules/common/zm-java-cwe502-jndi-injection.yaml +91 -0
  182. package/rules/common/zm-java-cwe502-shiro.yaml +108 -0
  183. package/rules/common/zm-java-cwe601-url-redirect-spring.yaml +85 -0
  184. package/rules/common/zm-java-cwe611-xxe-enhanced.yaml +80 -0
  185. package/rules/common/zm-java-cwe611-xxe-transformer.yaml +85 -0
  186. package/rules/common/zm-java-cwe639-idor.yaml +123 -0
  187. package/rules/common/zm-java-cwe79-xss-depth.yaml +98 -0
  188. package/rules/common/zm-java-cwe862-authz-depth.yaml +127 -0
  189. package/rules/common/zm-java-cwe915-mass-assignment.yaml +16 -0
  190. package/rules/common/zm-java-cwe917-expression-injection.yaml +120 -0
  191. package/rules/common/zm-java-cwe918-resttemplate.yaml +67 -0
  192. package/rules/common/zm-java-cwe918-ssrf-depth.yaml +103 -0
  193. package/rules/common/zm-java-cwe918-ssrf-resttemplate.yaml +77 -0
  194. package/rules/common/zm-java-cwe918-webclient.yaml +44 -0
  195. package/rules/common/zm-java-cwe94-ognl.yaml +66 -0
  196. package/rules/common/zm-java-cwe94-spel-injection.yaml +85 -0
  197. package/rules/common/zm-java-cwe94-spel.yaml +112 -0
  198. package/rules/common/zm-java-cwe94-ssti.yaml +22 -0
  199. package/rules/common/zm-java-cwe942-cors.yaml +15 -0
  200. package/rules/common/zm-js-cwe1321-prototype-pollution.yaml +61 -0
  201. package/rules/common/zm-js-cwe200-info-disclosure.yaml +95 -0
  202. package/rules/common/zm-js-cwe22-path-traversal-fs.yaml +113 -0
  203. package/rules/common/zm-js-cwe22-pathtraversal.yaml +111 -0
  204. package/rules/common/zm-js-cwe307-brute-force.yaml +136 -0
  205. package/rules/common/zm-js-cwe345-postmessage.yaml +75 -0
  206. package/rules/common/zm-js-cwe347-jwt-weak.yaml +95 -0
  207. package/rules/common/zm-js-cwe352-csrf.yaml +52 -0
  208. package/rules/common/zm-js-cwe384-session-fixation.yaml +132 -0
  209. package/rules/common/zm-js-cwe502-deserialization.yaml +119 -0
  210. package/rules/common/zm-js-cwe611-xxe.yaml +108 -0
  211. package/rules/common/zm-js-cwe639-idor.yaml +122 -0
  212. package/rules/common/zm-js-cwe693-helmet-missing.yaml +46 -0
  213. package/rules/common/zm-js-cwe78-exec.yaml +37 -0
  214. package/rules/common/zm-js-cwe78-spawn.yaml +37 -0
  215. package/rules/common/zm-js-cwe79-domxss.yaml +84 -0
  216. package/rules/common/zm-js-cwe79-react-xss.yaml +18 -0
  217. package/rules/common/zm-js-cwe79-xss-ejs.yaml +70 -0
  218. package/rules/common/zm-js-cwe89-sqli.yaml +153 -0
  219. package/rules/common/zm-js-cwe915-mass-assignment.yaml +111 -0
  220. package/rules/common/zm-js-cwe918-ssrf-fetch.yaml +134 -0
  221. package/rules/common/zm-js-cwe918-ssrf.yaml +132 -0
  222. package/rules/common/zm-js-cwe94-template-injection.yaml +130 -0
  223. package/rules/common/zm-js-cwe942-cors.yaml +49 -0
  224. package/rules/common/zm-js-cwe943-nosql-injection.yaml +52 -0
  225. package/rules/common/zm-js-cwe95-eval.yaml +59 -0
  226. package/rules/common/zm-js-cwe95-function-ctor.yaml +31 -0
  227. package/rules/common/zm-py-cwe22-path-traversal.yaml +86 -0
  228. package/rules/common/zm-py-cwe327-weak-crypto.yaml +103 -0
  229. package/rules/common/zm-py-cwe502-pickle.yaml +92 -0
  230. package/rules/common/zm-py-cwe611-xxe.yaml +100 -0
  231. package/rules/common/zm-py-cwe78-command-injection.yaml +121 -0
  232. package/rules/common/zm-py-cwe79-xss.yaml +123 -0
  233. package/rules/common/zm-py-cwe798-hardcoded-creds.yaml +86 -0
  234. package/rules/common/zm-py-cwe89-sqli.yaml +59 -0
  235. package/rules/common/zm-py-cwe918-ssrf.yaml +123 -0
  236. package/rules/common/zm-py-cwe94-ssti.yaml +87 -0
  237. package/rules/common/zm-py-cwe943-nosql-injection.yaml +123 -0
  238. package/rules/iac/ansible/zm-ansible-cwe269-privilege-escalation.yaml +63 -0
  239. package/rules/iac/ansible/zm-ansible-cwe78-command-injection.yaml +67 -0
  240. package/rules/iac/ansible/zm-ansible-cwe798-hardcoded-creds.yaml +93 -0
  241. package/rules/iac/terraform/zm-tf-cwe200-s3-bucket-public.yaml +100 -0
  242. package/rules/iac/terraform/zm-tf-cwe284-sg-wide-open.yaml +88 -0
  243. package/rules/iac/terraform/zm-tf-cwe311-iam-wildcard.yaml +83 -0
  244. package/rules/iac/terraform/zm-tf-cwe319-rds-public.yaml +72 -0
  245. package/rules/iac/terraform/zm-tf-cwe798-hardcoded-creds.yaml +102 -0
  246. package/rules/iac/zm-docker-cwe250-root-user.yaml +50 -0
  247. package/rules/iac/zm-docker-cwe400-resource-limit.yaml +92 -0
  248. package/rules/iac/zm-docker-security.yaml +104 -0
  249. package/rules/iac/zm-k8s-cwe200-service-account.yaml +83 -0
  250. package/rules/iac/zm-k8s-cwe250-privileged.yaml +56 -0
  251. package/rules/iac/zm-k8s-security.yaml +79 -0
  252. package/rules/rules_index.yaml.off +477 -0
  253. package/rules/semgrep-registry/anonymous-ldap-bind.yaml +34 -0
  254. package/rules/semgrep-registry/bad-hexa-conversion.yaml +32 -0
  255. package/rules/semgrep-registry/blowfish-insufficient-key-size.yaml +39 -0
  256. package/rules/semgrep-registry/cbc-padding-oracle.yaml +38 -0
  257. package/rules/semgrep-registry/command-injection-formatted-runtime-call.yaml +90 -0
  258. package/rules/semgrep-registry/command-injection-process-builder.yaml +148 -0
  259. package/rules/semgrep-registry/cookie-missing-httponly.yaml +38 -0
  260. package/rules/semgrep-registry/cookie-missing-secure-flag.yaml +38 -0
  261. package/rules/semgrep-registry/crlf-injection-logs.yaml +86 -0
  262. package/rules/semgrep-registry/dangerous-groovy-shell.yaml +46 -0
  263. package/rules/semgrep-registry/el-injection.yaml +137 -0
  264. package/rules/semgrep-registry/formatted-sql-string.yaml +95 -0
  265. package/rules/semgrep-registry/http-response-splitting.yaml +44 -0
  266. package/rules/semgrep-registry/index.txt +1 -0
  267. package/rules/semgrep-registry/insecure-smtp-connection.yaml +34 -0
  268. package/rules/semgrep-registry/java-reverse-shell.yaml +43 -0
  269. package/rules/semgrep-registry/jdbc-sql-formatted-string.yaml +120 -0
  270. package/rules/semgrep-registry/ldap-entry-poisoning.yaml +41 -0
  271. package/rules/semgrep-registry/ldap-injection.yaml +82 -0
  272. package/rules/semgrep-registry/md5-used-as-password.yaml +44 -0
  273. package/rules/semgrep-registry/object-deserialization.yaml +34 -0
  274. package/rules/semgrep-registry/ognl-injection.yaml +839 -0
  275. package/rules/semgrep-registry/overly-permissive-file-permission.yaml +49 -0
  276. package/rules/semgrep-registry/permissive-cors.yaml +77 -0
  277. package/rules/semgrep-registry/script-engine-injection.yaml +66 -0
  278. package/rules/semgrep-registry/tainted-cmd-from-http-request.yaml +74 -0
  279. package/rules/semgrep-registry/tainted-env-from-http-request.yaml +46 -0
  280. package/rules/semgrep-registry/tainted-ldapi-from-http-request.yaml +42 -0
  281. package/rules/semgrep-registry/tainted-session-from-http-request.yaml +70 -0
  282. package/rules/semgrep-registry/tainted-xpath-from-http-request.yaml +38 -0
  283. package/rules/semgrep-registry/unsafe-reflection.yaml +39 -0
  284. package/rules/semgrep-registry/unvalidated-redirect.yaml +127 -0
  285. package/rules/semgrep-registry/url-rewriting.yaml +82 -0
  286. package/rules/semgrep-registry/weak-ssl-context.yaml +34 -0
  287. package/rules/semgrep-registry/xml-decoder.yaml +53 -0
  288. package/rules/semgrep-registry/xssrequestwrapper-is-insecure.yaml +40 -0
@@ -0,0 +1,43 @@
1
+ rules:
2
+ - id: java-reverse-shell
3
+ patterns:
4
+ - pattern-either:
5
+ - pattern: |
6
+ Socket $S=new Socket(...);
7
+ ...
8
+ InputStream $SI = $S.getInputStream();
9
+ ...
10
+ while(!$S.isClosed())
11
+ {
12
+ ...
13
+ while($SI.available()>0)$PO.write($SI.read());
14
+ ...
15
+ $SO.flush();
16
+ ...
17
+ }
18
+ - pattern-inside: |
19
+ Process $P=new ProcessBuilder(...).redirectErrorStream(true).start();
20
+ ...
21
+ $P.destroy();
22
+ message: Semgrep found potential reverse shell behavior
23
+ severity: WARNING
24
+ metadata:
25
+ cwe:
26
+ - "CWE-78: Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection')"
27
+ category: security
28
+ technology: [java]
29
+ owasp:
30
+ - A01:2017 - Injection
31
+ - A03:2021 - Injection
32
+ - A05:2025 - Injection
33
+ references:
34
+ - https://owasp.org/Top10/A03_2021-Injection
35
+ cwe2022-top25: true
36
+ cwe2021-top25: true
37
+ subcategory:
38
+ - audit
39
+ likelihood: LOW
40
+ impact: HIGH
41
+ confidence: LOW
42
+ languages:
43
+ - java
@@ -0,0 +1,120 @@
1
+ rules:
2
+ - id: jdbc-sql-formatted-string
3
+ metadata:
4
+ cwe:
5
+ - "CWE-89: Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')"
6
+ owasp:
7
+ - A01:2017 - Injection
8
+ - A03:2021 - Injection
9
+ - A05:2025 - Injection
10
+ source-rule-url: https://find-sec-bugs.github.io/bugs.htm#SQL_INJECTION_SPRING_JDBC
11
+ asvs:
12
+ section: 'V5: Validation, Sanitization and Encoding Verification Requirements'
13
+ control_id: 5.3.5 Injection
14
+ control_url: https://github.com/OWASP/ASVS/blob/master/4.0/en/0x13-V5-Validation-Sanitization-Encoding.md#v53-output-encoding-and-injection-prevention-requirements
15
+ version: '4'
16
+ category: security
17
+ technology:
18
+ - jdbc
19
+ references:
20
+ - https://owasp.org/Top10/A03_2021-Injection
21
+ cwe2022-top25: true
22
+ cwe2021-top25: true
23
+ subcategory:
24
+ - audit
25
+ likelihood: LOW
26
+ impact: HIGH
27
+ confidence: LOW
28
+ message: >-
29
+ Possible JDBC injection detected. Use the parameterized query
30
+ feature available in queryForObject instead of concatenating or formatting strings:
31
+ 'jdbc.queryForObject("select * from table where name = ?", Integer.class, parameterName);'
32
+ patterns:
33
+ - pattern-inside: |
34
+ $JDBC = new JdbcTemplate(...);
35
+ ...
36
+ - pattern-either:
37
+ # Unsafe queryForObject
38
+ - pattern: $JDBC.queryForObject($STR + $VAR, ...);
39
+ - pattern: $JDBC.queryForObject(String.format(...), ...);
40
+ - pattern: |
41
+ String $Q = $STR + $VAR;
42
+ ...
43
+ $JDBC.queryForObject($Q, ...);
44
+ - pattern: |
45
+ String $Q = String.format(...);
46
+ ...
47
+ $JDBC.queryForObject($Q, ...);
48
+ - pattern: |
49
+ StringBuilder $Q = new StringBuilder(...);
50
+ ...
51
+ $Q.append($STR + $VAR);
52
+ ...
53
+ $JDBC.queryForObject($Q, ...);
54
+ - pattern: $JDBC.queryForList($STR + $VAR);
55
+ - pattern: $JDBC.queryForList(String.format(...));
56
+ - pattern: |
57
+ String $Q = $STR + $VAR;
58
+ ...
59
+ $JDBC.queryForList($Q);
60
+ - pattern: |
61
+ String $Q = String.format(...);
62
+ ...
63
+ $JDBC.queryForList($Q);
64
+ - pattern: |
65
+ StringBuilder $Q = new StringBuilder(...);
66
+ ...
67
+ $Q.append($STR + $VAR);
68
+ ...
69
+ $JDBC.queryForList($Q, ...);
70
+ - pattern: $JDBC.update($STR + $VAR);
71
+ - pattern: $JDBC.update(String.format(...));
72
+ - pattern: |
73
+ String $Q = $STR + $VAR;
74
+ ...
75
+ $JDBC.update($Q);
76
+ - pattern: |
77
+ String $Q = String.format(...);
78
+ ...
79
+ $JDBC.update($Q);
80
+ - pattern: |
81
+ StringBuilder $Q = new StringBuilder(...);
82
+ ...
83
+ $Q.append($STR + $VAR);
84
+ ...
85
+ $JDBC.update($Q, ...);
86
+ - pattern: $JDBC.execute($STR + $VAR);
87
+ - pattern: $JDBC.execute(String.format(...));
88
+ - pattern: |
89
+ String $Q = $STR + $VAR;
90
+ ...
91
+ $JDBC.execute($Q);
92
+ - pattern: |
93
+ String $Q = String.format(...);
94
+ ...
95
+ $JDBC.execute($Q);
96
+ - pattern: |
97
+ StringBuilder $Q = new StringBuilder(...);
98
+ ...
99
+ $Q.append($STR + $VAR);
100
+ ...
101
+ $JDBC.execute($Q, ...);
102
+ - pattern: $JDBC.insert($STR + $VAR);
103
+ - pattern: $JDBC.insert(String.format(...));
104
+ - pattern: |
105
+ String $Q = $STR + $VAR;
106
+ ...
107
+ $JDBC.insert($Q);
108
+ - pattern: |
109
+ String $Q = String.format(...);
110
+ ...
111
+ $JDBC.insert($Q);
112
+ - pattern: |
113
+ StringBuilder $Q = new StringBuilder(...);
114
+ ...
115
+ $Q.append($STR + $VAR);
116
+ ...
117
+ $JDBC.insert($Q, ...);
118
+ severity: WARNING
119
+ languages:
120
+ - java
@@ -0,0 +1,41 @@
1
+ rules:
2
+ - id: ldap-entry-poisoning
3
+ metadata:
4
+ owasp:
5
+ - A01:2017 - Injection
6
+ - A03:2021 - Injection
7
+ - A05:2025 - Injection
8
+ cwe:
9
+ - "CWE-90: Improper Neutralization of Special Elements used in an LDAP Query ('LDAP Injection')"
10
+ source-rule-url: https://find-sec-bugs.github.io/bugs.htm#LDAP_ENTRY_POISONING
11
+ asvs:
12
+ section: 'V5: Validation, Sanitization and Encoding Verification Requirements'
13
+ control_id: 5.3.7 Injection
14
+ control_url: https://github.com/OWASP/ASVS/blob/master/4.0/en/0x13-V5-Validation-Sanitization-Encoding.md#v53-output-encoding-and-injection-prevention-requirements
15
+ version: '4'
16
+ references:
17
+ - https://www.blackhat.com/docs/us-16/materials/us-16-Munoz-A-Journey-From-JNDI-LDAP-Manipulation-To-RCE-wp.pdf
18
+ - https://cheatsheetseries.owasp.org/cheatsheets/LDAP_Injection_Prevention_Cheat_Sheet.html
19
+ category: security
20
+ technology:
21
+ - java
22
+ subcategory:
23
+ - audit
24
+ likelihood: LOW
25
+ impact: HIGH
26
+ confidence: LOW
27
+ message: >-
28
+ An object-returning LDAP search will allow attackers to control the LDAP response.
29
+ This could
30
+ lead to Remote Code Execution.
31
+ severity: WARNING
32
+ pattern-either:
33
+ # SearchControls(int scope, long countlim, int timelim, String[] attrs, boolean retobj, boolean deref)
34
+ - pattern: |
35
+ new SearchControls($S, $CL, $TL, $AT, true, $DEREF)
36
+ - pattern: |
37
+ SearchControls $VAR = new SearchControls();
38
+ ...
39
+ $VAR.setReturningObjFlag(true);
40
+ languages:
41
+ - java
@@ -0,0 +1,82 @@
1
+ rules:
2
+ - id: ldap-injection
3
+ message: >-
4
+ Detected non-constant data passed into an LDAP query. If this data can be
5
+ controlled by an external user, this is an LDAP injection.
6
+ Ensure data passed to an LDAP query is not controllable; or properly sanitize
7
+ the data.
8
+ metadata:
9
+ cwe:
10
+ - "CWE-90: Improper Neutralization of Special Elements used in an LDAP Query ('LDAP Injection')"
11
+ owasp:
12
+ - A01:2017 - Injection
13
+ - A03:2021 - Injection
14
+ - A05:2025 - Injection
15
+ source-rule-url: https://find-sec-bugs.github.io/bugs.htm#LDAP_INJECTION
16
+ asvs:
17
+ section: 'V5: Validation, Sanitization and Encoding Verification Requirements'
18
+ control_id: 5.3.7 Injection
19
+ control_url: https://github.com/OWASP/ASVS/blob/master/4.0/en/0x13-V5-Validation-Sanitization-Encoding.md#v53-output-encoding-and-injection-prevention-requirements
20
+ version: '4'
21
+ category: security
22
+ technology:
23
+ - java
24
+ references:
25
+ - https://owasp.org/Top10/A03_2021-Injection
26
+ subcategory:
27
+ - audit
28
+ likelihood: LOW
29
+ impact: HIGH
30
+ confidence: LOW
31
+ severity: WARNING
32
+ languages: [java]
33
+ patterns:
34
+ - pattern-either:
35
+ - pattern-inside: |
36
+ $X $METHOD(...) {
37
+ ...
38
+ InitialDirContext $CTX = ...;
39
+ ...
40
+ }
41
+ - pattern-inside: |
42
+ $X $METHOD(...) {
43
+ ...
44
+ DirContext $CTX = ...;
45
+ ...
46
+ }
47
+ - pattern-inside: |
48
+ $X $METHOD(...) {
49
+ ...
50
+ InitialLdapContext $CTX = ...;
51
+ ...
52
+ }
53
+ - pattern-inside: |
54
+ $X $METHOD(...) {
55
+ ...
56
+ LdapContext $CTX = ...;
57
+ ...
58
+ }
59
+ - pattern-inside: |
60
+ $X $METHOD(...) {
61
+ ...
62
+ LdapCtx $CTX = ...;
63
+ ...
64
+ }
65
+ - pattern-inside: |
66
+ $X $METHOD(...) {
67
+ ...
68
+ EventDirContext $CTX = ...;
69
+ ...
70
+ }
71
+ - pattern: |
72
+ $X $METHOD(...) {
73
+ ...
74
+ $CTX.search($Y,$INPUT,...);
75
+ ...
76
+ }
77
+ - pattern-not: |
78
+ $X $METHOD(...) {
79
+ ...
80
+ $CTX.search($Y,"...",...);
81
+ ...
82
+ }
@@ -0,0 +1,44 @@
1
+ rules:
2
+ - id: md5-used-as-password
3
+ languages: [java]
4
+ severity: WARNING
5
+ message: >-
6
+ It looks like MD5 is used as a password hash. MD5 is not considered a
7
+ secure password hash because it can be cracked by an attacker in a short
8
+ amount of time. Use a suitable password hashing function such as PBKDF2 or bcrypt.
9
+ You can use `javax.crypto.SecretKeyFactory` with `SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1")`
10
+ or, if using Spring, `org.springframework.security.crypto.bcrypt`.
11
+ metadata:
12
+ category: security
13
+ technology:
14
+ - java
15
+ - md5
16
+ references:
17
+ - https://tools.ietf.org/id/draft-lvelvindron-tls-md5-sha1-deprecate-01.html
18
+ - https://github.com/returntocorp/semgrep-rules/issues/1609
19
+ - https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#SecretKeyFactory
20
+ - https://docs.spring.io/spring-security/site/docs/current/api/org/springframework/security/crypto/bcrypt/BCryptPasswordEncoder.html
21
+ owasp:
22
+ - A03:2017 - Sensitive Data Exposure
23
+ - A02:2021 - Cryptographic Failures
24
+ - A04:2025 - Cryptographic Failures
25
+ cwe:
26
+ - 'CWE-327: Use of a Broken or Risky Cryptographic Algorithm'
27
+ subcategory:
28
+ - vuln
29
+ likelihood: HIGH
30
+ impact: MEDIUM
31
+ confidence: MEDIUM
32
+ mode: taint
33
+ pattern-sources:
34
+ - patterns:
35
+ - pattern-inside: |
36
+ $TYPE $MD = MessageDigest.getInstance("MD5");
37
+ ...
38
+ - pattern: $MD.digest(...);
39
+ pattern-sinks:
40
+ - patterns:
41
+ - pattern: $MODEL.$METHOD(...);
42
+ - metavariable-regex:
43
+ metavariable: $METHOD
44
+ regex: (?i)(.*password.*)
@@ -0,0 +1,34 @@
1
+ rules:
2
+ - id: object-deserialization
3
+ metadata:
4
+ cwe:
5
+ - 'CWE-502: Deserialization of Untrusted Data'
6
+ owasp:
7
+ - A08:2017 - Insecure Deserialization
8
+ - A08:2021 - Software and Data Integrity Failures
9
+ - A08:2025 - Software or Data Integrity Failures
10
+ source-rule-url: https://find-sec-bugs.github.io/bugs.htm#OBJECT_DESERIALIZATION
11
+ references:
12
+ - https://www.owasp.org/index.php/Deserialization_of_untrusted_data
13
+ - https://www.oracle.com/java/technologies/javase/seccodeguide.html#8
14
+ category: security
15
+ technology:
16
+ - java
17
+ cwe2022-top25: true
18
+ cwe2021-top25: true
19
+ subcategory:
20
+ - audit
21
+ likelihood: LOW
22
+ impact: HIGH
23
+ confidence: LOW
24
+ message: >-
25
+ Found object deserialization using ObjectInputStream. Deserializing entire
26
+ Java objects is dangerous because malicious actors can create Java object
27
+ streams with unintended consequences. Ensure that the objects being deserialized
28
+ are not user-controlled. If this must be done, consider using HMACs to sign
29
+ the data stream to make sure it is not tampered with, or consider only
30
+ transmitting object fields and populating a new object.
31
+ severity: WARNING
32
+ languages:
33
+ - java
34
+ pattern: new ObjectInputStream(...);