@critiq/rules 0.1.0 → 0.2.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 (299) hide show
  1. package/README.md +1 -1
  2. package/catalog.yaml +617 -0
  3. package/package.json +1 -1
  4. package/rules/go/go.correctness.defer-close-before-check.rule.yaml +44 -0
  5. package/rules/go/go.correctness.defer-in-loop.rule.yaml +47 -0
  6. package/rules/go/go.correctness.nil-context-passed.rule.yaml +43 -0
  7. package/rules/go/go.correctness.nil-map-assignment.rule.yaml +42 -0
  8. package/rules/go/go.correctness.time-tick-leak.rule.yaml +44 -0
  9. package/rules/go/go.correctness.unused-append-result.rule.yaml +43 -0
  10. package/rules/go/go.correctness.waitgroup-add-in-goroutine.rule.yaml +45 -0
  11. package/rules/go/go.security.bind-all-interfaces.rule.yaml +57 -0
  12. package/rules/go/go.security.echo-sensitive-binding-without-validation.rule.yaml +10 -0
  13. package/rules/go/go.security.echo-unsafe-multipart-upload.rule.yaml +10 -0
  14. package/rules/go/go.security.fiber-sensitive-binding-without-validation.rule.yaml +10 -0
  15. package/rules/go/go.security.fiber-unsafe-multipart-upload.rule.yaml +10 -0
  16. package/rules/go/go.security.gin-sensitive-binding-without-validation.rule.yaml +10 -0
  17. package/rules/go/go.security.gin-trust-all-proxies.rule.yaml +10 -0
  18. package/rules/go/go.security.gin-wildcard-cors-with-credentials.rule.yaml +10 -0
  19. package/rules/go/go.security.insecure-rand-seed.rule.yaml +55 -0
  20. package/rules/go/go.security.insecure-ssh-host-key.rule.yaml +57 -0
  21. package/rules/go/go.security.insecure-ssl-protocol.rule.yaml +56 -0
  22. package/rules/go/go.security.insecure-temp-file.rule.yaml +57 -0
  23. package/rules/go/go.security.jwt-without-verification.rule.yaml +56 -0
  24. package/rules/go/go.security.net-http-missing-timeouts.rule.yaml +10 -0
  25. package/rules/go/go.security.pprof-exposed.rule.yaml +56 -0
  26. package/rules/go/go.security.sensitive-data-egress.rule.yaml +10 -0
  27. package/rules/go/go.security.tar-path-traversal.rule.yaml +10 -0
  28. package/rules/go/go.security.template-unescaped-request-value.rule.yaml +10 -0
  29. package/rules/go/go.security.tls-missing-min-version.rule.yaml +55 -0
  30. package/rules/go/go.security.unsafe-package-import.rule.yaml +55 -0
  31. package/rules/go/go.security.weak-bcrypt-cost.rule.yaml +56 -0
  32. package/rules/go/go.security.weak-crypto-import.rule.yaml +57 -0
  33. package/rules/go/go.security.weak-rsa-key-size.rule.yaml +57 -0
  34. package/rules/go/go.security.weak-tls-cipher.rule.yaml +56 -0
  35. package/rules/java/java.correctness.catch-null-pointer.rule.yaml +40 -0
  36. package/rules/java/java.correctness.empty-catch.rule.yaml +40 -0
  37. package/rules/java/java.correctness.equals-on-array.rule.yaml +40 -0
  38. package/rules/java/java.correctness.return-in-finally.rule.yaml +40 -0
  39. package/rules/java/java.correctness.sync-on-string-literal.rule.yaml +40 -0
  40. package/rules/java/java.correctness.unsafe-optional-get.rule.yaml +40 -0
  41. package/rules/java/java.security.android-screenshot-exposure.rule.yaml +13 -0
  42. package/rules/java/java.security.android-world-readable-mode.rule.yaml +13 -0
  43. package/rules/java/java.security.hibernate-sql-concatenation.rule.yaml +62 -0
  44. package/rules/java/java.security.insecure-cipher-mode.rule.yaml +52 -0
  45. package/rules/java/java.security.insecure-network-protocol.rule.yaml +52 -0
  46. package/rules/java/java.security.insecure-ssl-context.rule.yaml +52 -0
  47. package/rules/java/java.security.jpa-concatenated-query.rule.yaml +13 -0
  48. package/rules/java/java.security.jwt-without-verification.rule.yaml +53 -0
  49. package/rules/java/java.security.null-cipher.rule.yaml +52 -0
  50. package/rules/java/java.security.permissive-cors.rule.yaml +53 -0
  51. package/rules/java/java.security.predictable-securerandom.rule.yaml +59 -0
  52. package/rules/java/java.security.reflected-output-from-request.rule.yaml +10 -0
  53. package/rules/java/java.security.servlet-insecure-cookie.rule.yaml +13 -0
  54. package/rules/java/java.security.shell-runtime-exec.rule.yaml +58 -0
  55. package/rules/java/java.security.spring-actuator-health-details-always.rule.yaml +13 -0
  56. package/rules/java/java.security.spring-actuator-sensitive-exposure.rule.yaml +13 -0
  57. package/rules/java/java.security.spring-csrf-globally-disabled.rule.yaml +13 -0
  58. package/rules/java/java.security.spring-debug-exposure.rule.yaml +13 -0
  59. package/rules/java/java.security.spring-permit-all-default.rule.yaml +13 -0
  60. package/rules/java/java.security.spring-webmvc-unrestricted-data-binding.rule.yaml +13 -0
  61. package/rules/java/java.security.template-unescaped-user-output.rule.yaml +10 -0
  62. package/rules/java/java.security.trust-all-certificates.rule.yaml +52 -0
  63. package/rules/java/java.security.unsafe-jackson-deserialization.rule.yaml +59 -0
  64. package/rules/java/java.security.weak-rsa-key-size.rule.yaml +54 -0
  65. package/rules/java/java.security.xxe-document-builder.rule.yaml +59 -0
  66. package/rules/java/java.security.xxe-xml-input-factory.rule.yaml +59 -0
  67. package/rules/php/php.correctness.duplicate-array-key.rule.yaml +36 -0
  68. package/rules/php/php.correctness.error-suppression-operator.rule.yaml +36 -0
  69. package/rules/php/php.correctness.nullsafe-returned-by-reference.rule.yaml +36 -0
  70. package/rules/php/php.correctness.switch-multiple-default.rule.yaml +36 -0
  71. package/rules/php/php.correctness.unreachable-after-return.rule.yaml +36 -0
  72. package/rules/php/php.security.debug-function-exposure.rule.yaml +55 -0
  73. package/rules/php/php.security.insecure-cors-wildcard-with-credentials.rule.yaml +10 -0
  74. package/rules/php/php.security.insecure-mail-or-file-transport.rule.yaml +10 -0
  75. package/rules/php/php.security.insecure-session-id-generation.rule.yaml +51 -0
  76. package/rules/php/php.security.insecure-session-or-cookie-config.rule.yaml +10 -0
  77. package/rules/php/php.security.laravel-sensitive-csrf-exclusion.rule.yaml +13 -0
  78. package/rules/php/php.security.laravel-unsafe-blade-output.rule.yaml +13 -0
  79. package/rules/php/php.security.laravel-unsafe-mass-assignment.rule.yaml +13 -0
  80. package/rules/php/php.security.no-dynamic-eval.rule.yaml +52 -0
  81. package/rules/php/php.security.sensitive-data-egress.rule.yaml +10 -0
  82. package/rules/php/php.security.symfony-csrf-disabled.rule.yaml +13 -0
  83. package/rules/php/php.security.symfony-debug-exposure.rule.yaml +13 -0
  84. package/rules/php/php.security.unsafe-file-upload-handling.rule.yaml +10 -0
  85. package/rules/php/php.security.unsafe-include-with-user-input.rule.yaml +52 -0
  86. package/rules/php/php.security.weak-cipher.rule.yaml +51 -0
  87. package/rules/php/php.security.wordpress-missing-nonce-or-capability.rule.yaml +13 -0
  88. package/rules/php/php.security.wordpress-unprepared-sql.rule.yaml +13 -0
  89. package/rules/php/php.security.xml-external-entity.rule.yaml +53 -0
  90. package/rules/python/py.correctness.assert-on-tuple.rule.yaml +33 -0
  91. package/rules/python/py.correctness.bare-except.rule.yaml +33 -0
  92. package/rules/python/py.correctness.broad-exception-handler.rule.yaml +33 -0
  93. package/rules/python/py.correctness.dangerous-mutable-default.rule.yaml +33 -0
  94. package/rules/python/py.correctness.duplicate-dict-key.rule.yaml +33 -0
  95. package/rules/python/py.security.bind-all-interfaces.rule.yaml +55 -0
  96. package/rules/python/py.security.debugger-import.rule.yaml +55 -0
  97. package/rules/python/py.security.django-csrf-exempt-state-changing.rule.yaml +13 -0
  98. package/rules/python/py.security.django-format-html-unsafe.rule.yaml +56 -0
  99. package/rules/python/py.security.django-mark-safe.rule.yaml +56 -0
  100. package/rules/python/py.security.django-missing-csrf-middleware.rule.yaml +13 -0
  101. package/rules/python/py.security.django-security-middleware-missing.rule.yaml +60 -0
  102. package/rules/python/py.security.django-unsafe-production-settings.rule.yaml +13 -0
  103. package/rules/python/py.security.drf-allow-any-default.rule.yaml +13 -0
  104. package/rules/python/py.security.drf-allow-any-unsafe-method.rule.yaml +13 -0
  105. package/rules/python/py.security.dynamic-code-execution.rule.yaml +55 -0
  106. package/rules/python/py.security.fastapi-insecure-cors.rule.yaml +13 -0
  107. package/rules/python/py.security.flask-debug-enabled.rule.yaml +56 -0
  108. package/rules/python/py.security.flask-missing-upload-body-limit.rule.yaml +13 -0
  109. package/rules/python/py.security.flask-unsafe-html-output.rule.yaml +13 -0
  110. package/rules/python/py.security.flask-unsafe-upload-filename.rule.yaml +13 -0
  111. package/rules/python/py.security.insecure-temp-file.rule.yaml +55 -0
  112. package/rules/python/py.security.insecure-yaml-load.rule.yaml +55 -0
  113. package/rules/python/py.security.jinja-autoescape-disabled.rule.yaml +58 -0
  114. package/rules/python/py.security.subprocess-shell-enabled.rule.yaml +55 -0
  115. package/rules/ruby/ruby.security.rails-csrf-disabled.rule.yaml +13 -0
  116. package/rules/ruby/ruby.security.rails-detailed-exceptions-enabled.rule.yaml +13 -0
  117. package/rules/ruby/ruby.security.rails-open-redirect.rule.yaml +13 -0
  118. package/rules/ruby/ruby.security.rails-unsafe-html-output.rule.yaml +13 -0
  119. package/rules/ruby/ruby.security.rails-unsafe-render.rule.yaml +13 -0
  120. package/rules/ruby/ruby.security.rails-unsafe-session-or-cookie-store.rule.yaml +13 -0
  121. package/rules/ruby/ruby.security.rails-unsafe-strong-parameters.rule.yaml +13 -0
  122. package/rules/ruby/ruby.security.sensitive-data-egress.rule.yaml +10 -0
  123. package/rules/ruby/ruby.security.sidekiq-web-unauthenticated-mount.rule.yaml +10 -0
  124. package/rules/rust/rust.correctness.block-on-in-async.rule.yaml +48 -0
  125. package/rules/rust/rust.correctness.forget-join-handle.rule.yaml +48 -0
  126. package/rules/rust/rust.correctness.mutex-held-across-await.rule.yaml +48 -0
  127. package/rules/rust/rust.correctness.std-mutex-in-async-fn.rule.yaml +48 -0
  128. package/rules/rust/rust.correctness.thread-sleep-in-async.rule.yaml +48 -0
  129. package/rules/rust/rust.correctness.unbounded-channel.rule.yaml +49 -0
  130. package/rules/rust/rust.correctness.unchecked-index.rule.yaml +46 -0
  131. package/rules/rust/rust.security.actix-wildcard-cors-with-credentials.rule.yaml +13 -0
  132. package/rules/rust/rust.security.axum-body-limit-disabled.rule.yaml +13 -0
  133. package/rules/rust/rust.security.axum-insecure-cors-with-credentials.rule.yaml +13 -0
  134. package/rules/rust/rust.security.bind-all-interfaces.rule.yaml +57 -0
  135. package/rules/rust/rust.security.insecure-ssh-host-key.rule.yaml +57 -0
  136. package/rules/rust/rust.security.insecure-ssl-protocol.rule.yaml +57 -0
  137. package/rules/rust/rust.security.insecure-temp-file.rule.yaml +57 -0
  138. package/rules/rust/rust.security.insecure-yaml-load.rule.yaml +57 -0
  139. package/rules/rust/rust.security.jwt-without-verification.rule.yaml +57 -0
  140. package/rules/rust/rust.security.panic-in-async-handler.rule.yaml +57 -0
  141. package/rules/rust/rust.security.rocket-panic-prone-request-handler.rule.yaml +13 -0
  142. package/rules/rust/rust.security.rocket-unsafe-template-output.rule.yaml +13 -0
  143. package/rules/rust/rust.security.shell-command-spawn.rule.yaml +57 -0
  144. package/rules/rust/rust.security.sqlx-diesel-raw-interpolated-query.rule.yaml +13 -0
  145. package/rules/rust/rust.security.template-unescaped-request-value.rule.yaml +10 -0
  146. package/rules/rust/rust.security.tls-missing-min-version.rule.yaml +57 -0
  147. package/rules/rust/rust.security.warp-blocking-or-panic-in-async-handler.rule.yaml +13 -0
  148. package/rules/rust/rust.security.weak-crypto-import.rule.yaml +55 -0
  149. package/rules/rust/rust.security.weak-rsa-key-size.rule.yaml +57 -0
  150. package/rules/rust/rust.security.weak-tls-cipher.rule.yaml +57 -0
  151. package/rules/shared/security.archive-path-traversal.rule.yaml +10 -0
  152. package/rules/shared/security.external-file-upload.rule.yaml +10 -0
  153. package/rules/shared/security.insecure-http-transport.rule.yaml +10 -0
  154. package/rules/shared/security.no-command-execution-with-request-input.rule.yaml +10 -0
  155. package/rules/shared/security.no-hardcoded-credentials.rule.yaml +10 -0
  156. package/rules/shared/security.no-request-path-file-read.rule.yaml +10 -0
  157. package/rules/shared/security.no-sensitive-data-in-logs-and-telemetry.rule.yaml +10 -0
  158. package/rules/shared/security.no-sql-interpolation.rule.yaml +10 -0
  159. package/rules/shared/security.permissive-file-permissions.rule.yaml +10 -0
  160. package/rules/shared/security.sensitive-data-egress.rule.yaml +10 -0
  161. package/rules/shared/security.tls-verification-disabled.rule.yaml +10 -0
  162. package/rules/shared/security.unsafe-deserialization.rule.yaml +10 -0
  163. package/rules/shared/security.weak-hash-algorithm.rule.yaml +10 -0
  164. package/rules/typescript/ts.correctness.array-callback-missing-return.rule.yaml +35 -0
  165. package/rules/typescript/ts.correctness.array-sort-without-compare.rule.yaml +35 -0
  166. package/rules/typescript/ts.correctness.control-flow-in-finally.rule.yaml +35 -0
  167. package/rules/typescript/ts.correctness.duplicate-if-else-condition.rule.yaml +35 -0
  168. package/rules/typescript/ts.correctness.for-in-on-array.rule.yaml +35 -0
  169. package/rules/typescript/ts.correctness.infinite-loop.rule.yaml +32 -0
  170. package/rules/typescript/ts.correctness.invalid-await-expression.rule.yaml +32 -0
  171. package/rules/typescript/ts.correctness.invalid-typeof-comparison.rule.yaml +35 -0
  172. package/rules/typescript/ts.correctness.missing-async-on-promise-method.rule.yaml +32 -0
  173. package/rules/typescript/ts.correctness.missing-super-call.rule.yaml +35 -0
  174. package/rules/typescript/ts.correctness.no-floating-promise-in-function.rule.yaml +32 -0
  175. package/rules/typescript/ts.correctness.no-misused-promises.rule.yaml +32 -0
  176. package/rules/typescript/ts.correctness.promise-reject-non-error.rule.yaml +35 -0
  177. package/rules/typescript/ts.correctness.this-before-super.rule.yaml +35 -0
  178. package/rules/typescript/ts.correctness.unnecessary-return-await.rule.yaml +32 -0
  179. package/rules/typescript/ts.correctness.use-number-is-nan.rule.yaml +35 -0
  180. package/rules/typescript/ts.next.server-action-missing-local-auth.rule.yaml +13 -0
  181. package/rules/typescript/ts.performance.no-await-in-loop.rule.yaml +32 -0
  182. package/rules/typescript/ts.quality.no-empty-function.rule.yaml +32 -0
  183. package/rules/typescript/ts.react.no-bind-in-jsx-props.rule.yaml +36 -0
  184. package/rules/typescript/ts.react.no-children-prop.rule.yaml +34 -0
  185. package/rules/typescript/ts.react.no-direct-state-mutation.rule.yaml +34 -0
  186. package/rules/typescript/ts.react.no-duplicate-jsx-attributes.rule.yaml +34 -0
  187. package/rules/typescript/ts.react.no-jsx-props-spread.rule.yaml +35 -0
  188. package/rules/typescript/ts.react.no-set-state-in-component-did-mount.rule.yaml +34 -0
  189. package/rules/typescript/ts.react.no-set-state-in-component-did-update.rule.yaml +34 -0
  190. package/rules/typescript/ts.react.no-target-blank-without-rel.rule.yaml +46 -0
  191. package/rules/typescript/ts.react.no-this-in-function-component.rule.yaml +34 -0
  192. package/rules/typescript/ts.runtime.no-process-exit.rule.yaml +44 -0
  193. package/rules/typescript/ts.security.ajv-insecure-configuration.rule.yaml +10 -0
  194. package/rules/typescript/ts.security.angular-dom-sanitizer-bypass-untrusted-input.rule.yaml +13 -0
  195. package/rules/typescript/ts.security.apollo-server-csrf-disabled.rule.yaml +16 -0
  196. package/rules/typescript/ts.security.apollo-server-graphql-dev-tooling-exposure.rule.yaml +16 -0
  197. package/rules/typescript/ts.security.apollo-server-introspection-exposure.rule.yaml +16 -0
  198. package/rules/typescript/ts.security.apollo-server-missing-query-limits.rule.yaml +16 -0
  199. package/rules/typescript/ts.security.astro-vite-public-secret-define.rule.yaml +13 -0
  200. package/rules/typescript/ts.security.bind-to-all-interfaces.rule.yaml +10 -0
  201. package/rules/typescript/ts.security.browser-token-storage.rule.yaml +10 -0
  202. package/rules/typescript/ts.security.dangerous-insert-html.rule.yaml +10 -0
  203. package/rules/typescript/ts.security.dangerously-set-inner-html.rule.yaml +10 -0
  204. package/rules/typescript/ts.security.datadog-browser-track-user-interactions.rule.yaml +10 -0
  205. package/rules/typescript/ts.security.debug-mode-enabled.rule.yaml +10 -0
  206. package/rules/typescript/ts.security.debug-statement-in-source.rule.yaml +10 -0
  207. package/rules/typescript/ts.security.dynamodb-query-injection.rule.yaml +10 -0
  208. package/rules/typescript/ts.security.electron-dangerous-webpreferences.rule.yaml +10 -0
  209. package/rules/typescript/ts.security.electron-insecure-local-state.rule.yaml +10 -0
  210. package/rules/typescript/ts.security.electron-missing-ipc-origin-check.rule.yaml +10 -0
  211. package/rules/typescript/ts.security.electron-shell-open-external-unvalidated.rule.yaml +13 -0
  212. package/rules/typescript/ts.security.exposed-directory-listing.rule.yaml +10 -0
  213. package/rules/typescript/ts.security.express-cookie-missing-http-only.rule.yaml +16 -0
  214. package/rules/typescript/ts.security.express-default-cookie-config.rule.yaml +16 -0
  215. package/rules/typescript/ts.security.express-default-session-config.rule.yaml +16 -0
  216. package/rules/typescript/ts.security.express-error-handler-information-disclosure.rule.yaml +16 -0
  217. package/rules/typescript/ts.security.express-insecure-cookie.rule.yaml +16 -0
  218. package/rules/typescript/ts.security.express-missing-helmet.rule.yaml +16 -0
  219. package/rules/typescript/ts.security.express-nosql-injection.rule.yaml +16 -0
  220. package/rules/typescript/ts.security.express-permissive-cookie-config.rule.yaml +16 -0
  221. package/rules/typescript/ts.security.express-permissive-cors.rule.yaml +52 -0
  222. package/rules/typescript/ts.security.express-reduce-fingerprint.rule.yaml +16 -0
  223. package/rules/typescript/ts.security.express-static-assets-after-session.rule.yaml +16 -0
  224. package/rules/typescript/ts.security.express-static-dotfiles-allow.rule.yaml +16 -0
  225. package/rules/typescript/ts.security.express-unbounded-body-parser.rule.yaml +16 -0
  226. package/rules/typescript/ts.security.express-user-controlled-static-mount.rule.yaml +16 -0
  227. package/rules/typescript/ts.security.external-file-upload.rule.yaml +10 -0
  228. package/rules/typescript/ts.security.fastify-excessive-body-limit.rule.yaml +16 -0
  229. package/rules/typescript/ts.security.fastify-public-bind-without-trust-proxy.rule.yaml +16 -0
  230. package/rules/typescript/ts.security.file-generation.rule.yaml +10 -0
  231. package/rules/typescript/ts.security.format-string-using-user-input.rule.yaml +10 -0
  232. package/rules/typescript/ts.security.frontend-only-authorization.rule.yaml +10 -0
  233. package/rules/typescript/ts.security.graphql-upload-without-csrf-guard.rule.yaml +16 -0
  234. package/rules/typescript/ts.security.handlebars-no-escape.rule.yaml +10 -0
  235. package/rules/typescript/ts.security.hardcoded-auth-secret.rule.yaml +10 -0
  236. package/rules/typescript/ts.security.iframe-missing-sandbox-attribute.rule.yaml +10 -0
  237. package/rules/typescript/ts.security.import-using-user-input.rule.yaml +10 -0
  238. package/rules/typescript/ts.security.information-leakage.rule.yaml +10 -0
  239. package/rules/typescript/ts.security.insecure-allow-origin.rule.yaml +10 -0
  240. package/rules/typescript/ts.security.insecure-auth-cookie-flags.rule.yaml +10 -0
  241. package/rules/typescript/ts.security.insecure-content-security-policy-literal.rule.yaml +10 -0
  242. package/rules/typescript/ts.security.insecure-helmet-hardening-options.rule.yaml +10 -0
  243. package/rules/typescript/ts.security.insecure-password-hash-configuration.rule.yaml +10 -0
  244. package/rules/typescript/ts.security.insecure-websocket-transport.rule.yaml +10 -0
  245. package/rules/typescript/ts.security.insufficiently-random-values.rule.yaml +10 -0
  246. package/rules/typescript/ts.security.jwt-insecure-signing-algorithm.rule.yaml +10 -0
  247. package/rules/typescript/ts.security.jwt-not-revoked.rule.yaml +10 -0
  248. package/rules/typescript/ts.security.jwt-sensitive-claims.rule.yaml +10 -0
  249. package/rules/typescript/ts.security.legacy-buffer-constructor.rule.yaml +10 -0
  250. package/rules/typescript/ts.security.log-injection.rule.yaml +10 -0
  251. package/rules/typescript/ts.security.manual-html-sanitization.rule.yaml +10 -0
  252. package/rules/typescript/ts.security.missing-authorization-before-sensitive-action.rule.yaml +10 -0
  253. package/rules/typescript/ts.security.missing-integrity-check.rule.yaml +10 -0
  254. package/rules/typescript/ts.security.missing-message-origin-check.rule.yaml +10 -0
  255. package/rules/typescript/ts.security.missing-ownership-validation.rule.yaml +10 -0
  256. package/rules/typescript/ts.security.missing-request-timeout-or-retry.rule.yaml +10 -0
  257. package/rules/typescript/ts.security.nestjs-helmet-after-route-mount.rule.yaml +16 -0
  258. package/rules/typescript/ts.security.nestjs-missing-global-validation-pipe.rule.yaml +16 -0
  259. package/rules/typescript/ts.security.nestjs-skip-throttle-sensitive-route.rule.yaml +16 -0
  260. package/rules/typescript/ts.security.nestjs-validation-pipe-without-whitelist.rule.yaml +16 -0
  261. package/rules/typescript/ts.security.no-alert-confirm-prompt.rule.yaml +44 -0
  262. package/rules/typescript/ts.security.no-arguments-callee.rule.yaml +44 -0
  263. package/rules/typescript/ts.security.no-assign-mutable-export.rule.yaml +45 -0
  264. package/rules/typescript/ts.security.no-dynamic-execution.rule.yaml +10 -0
  265. package/rules/typescript/ts.security.no-fs-readfile-sync-in-handler.rule.yaml +46 -0
  266. package/rules/typescript/ts.security.no-global-native-reassignment.rule.yaml +44 -0
  267. package/rules/typescript/ts.security.no-innerhtml-assignment.rule.yaml +10 -0
  268. package/rules/typescript/ts.security.no-javascript-url.rule.yaml +44 -0
  269. package/rules/typescript/ts.security.no-native-prototype-extension.rule.yaml +44 -0
  270. package/rules/typescript/ts.security.no-sync-child-process-exec.rule.yaml +45 -0
  271. package/rules/typescript/ts.security.no-throw-literal.rule.yaml +44 -0
  272. package/rules/typescript/ts.security.no-with-statement.rule.yaml +44 -0
  273. package/rules/typescript/ts.security.non-literal-fs-filename.rule.yaml +10 -0
  274. package/rules/typescript/ts.security.nuxt-public-runtime-secret.rule.yaml +13 -0
  275. package/rules/typescript/ts.security.observable-timing-discrepancy.rule.yaml +10 -0
  276. package/rules/typescript/ts.security.open-redirect.rule.yaml +10 -0
  277. package/rules/typescript/ts.security.permissive-allow-origin.rule.yaml +10 -0
  278. package/rules/typescript/ts.security.permissive-file-permissions.rule.yaml +10 -0
  279. package/rules/typescript/ts.security.postmessage-wildcard-origin.rule.yaml +10 -0
  280. package/rules/typescript/ts.security.predictable-token-generation.rule.yaml +10 -0
  281. package/rules/typescript/ts.security.raw-html-using-user-input.rule.yaml +10 -0
  282. package/rules/typescript/ts.security.request-driven-array-index-access.rule.yaml +10 -0
  283. package/rules/typescript/ts.security.sensitive-data-egress.rule.yaml +10 -0
  284. package/rules/typescript/ts.security.sensitive-data-in-exception.rule.yaml +10 -0
  285. package/rules/typescript/ts.security.sensitive-data-written-to-file.rule.yaml +10 -0
  286. package/rules/typescript/ts.security.ssrf.rule.yaml +10 -0
  287. package/rules/typescript/ts.security.token-or-session-not-validated.rule.yaml +10 -0
  288. package/rules/typescript/ts.security.ui-redress.rule.yaml +10 -0
  289. package/rules/typescript/ts.security.unsafe-dirname-path-concat.rule.yaml +44 -0
  290. package/rules/typescript/ts.security.unsafe-dompurify-version.rule.yaml +10 -0
  291. package/rules/typescript/ts.security.unsafe-marked-version.rule.yaml +10 -0
  292. package/rules/typescript/ts.security.unsanitized-http-response.rule.yaml +10 -0
  293. package/rules/typescript/ts.security.unvalidated-external-input.rule.yaml +10 -0
  294. package/rules/typescript/ts.security.user-controlled-sendfile.rule.yaml +10 -0
  295. package/rules/typescript/ts.security.user-controlled-view-render.rule.yaml +10 -0
  296. package/rules/typescript/ts.security.weak-cipher-or-mode.rule.yaml +10 -0
  297. package/rules/typescript/ts.security.weak-key-strength.rule.yaml +10 -0
  298. package/rules/typescript/ts.security.weak-tls-version.rule.yaml +10 -0
  299. package/rules/typescript/ts.security.xml-parse-string-with-untrusted-input.rule.yaml +10 -0
@@ -5,6 +5,21 @@ metadata:
5
5
  title: Do not allow dotfiles in Express static middleware
6
6
  summary: express.static should not serve dotfiles from disk unless explicitly required and reviewed.
7
7
  rationale: Allowing dotfiles can expose hidden configuration and secrets through the static file middleware.
8
+ detection:
9
+ kind: pattern
10
+ references:
11
+ - kind: cwe
12
+ id: CWE-16
13
+ title: Configuration
14
+ - kind: owasp
15
+ title: Secure Configuration Cheat Sheet
16
+ url: https://cheatsheetseries.owasp.org/cheatsheets/Secure_Configuration_Cheat_Sheet.html
17
+ - kind: url
18
+ title: Node.js security best practices
19
+ url: https://nodejs.org/en/learn/getting-started/security-best-practices
20
+ - kind: url
21
+ title: Express production security best practices
22
+ url: https://expressjs.com/en/advanced/best-practice-security.html
8
23
  tags:
9
24
  - security
10
25
  - express
@@ -33,3 +48,4 @@ emit:
33
48
  summary: "${captures.issue.text} is configured with dotfiles allow, which can leak hidden files."
34
49
  remediation:
35
50
  summary: Use the default dotfiles ignore behavior or serve dotfiles from a tightly scoped directory with access controls.
51
+
@@ -5,6 +5,21 @@ metadata:
5
5
  title: Set explicit Express body parser and multer size limits
6
6
  summary: Express and Body Parser middleware plus Multer should declare explicit payload limits.
7
7
  rationale: Default limits drift across frameworks and deployments; explicit caps reduce oversized-request abuse.
8
+ detection:
9
+ kind: pattern
10
+ references:
11
+ - kind: cwe
12
+ id: CWE-16
13
+ title: Configuration
14
+ - kind: owasp
15
+ title: Secure Configuration Cheat Sheet
16
+ url: https://cheatsheetseries.owasp.org/cheatsheets/Secure_Configuration_Cheat_Sheet.html
17
+ - kind: url
18
+ title: Node.js security best practices
19
+ url: https://nodejs.org/en/learn/getting-started/security-best-practices
20
+ - kind: url
21
+ title: Express production security best practices
22
+ url: https://expressjs.com/en/advanced/best-practice-security.html
8
23
  tags:
9
24
  - security
10
25
  - express
@@ -32,3 +47,4 @@ emit:
32
47
  summary: "`${captures.issue.text}` runs without visible size limits."
33
48
  remediation:
34
49
  summary: Pass `limit` options to JSON/urlencoded/raw/text parsers and `limits.fileSize` (or equivalent) to Multer.
50
+
@@ -5,6 +5,21 @@ metadata:
5
5
  title: Avoid request-controlled Express static mount paths
6
6
  summary: The path prefix for express.static should not be derived directly from request objects.
7
7
  rationale: User-controlled mount paths can collapse routing assumptions and expose unintended directories.
8
+ detection:
9
+ kind: pattern
10
+ references:
11
+ - kind: cwe
12
+ id: CWE-22
13
+ title: Path Traversal
14
+ - kind: owasp
15
+ title: Path Traversal
16
+ url: https://owasp.org/www-community/attacks/Path_Traversal
17
+ - kind: url
18
+ title: Node.js security best practices
19
+ url: https://nodejs.org/en/learn/getting-started/security-best-practices
20
+ - kind: url
21
+ title: Express production security best practices
22
+ url: https://expressjs.com/en/advanced/best-practice-security.html
8
23
  tags:
9
24
  - security
10
25
  - express
@@ -33,3 +48,4 @@ emit:
33
48
  summary: "${captures.issue.text} mounts express.static under a request-derived URL prefix."
34
49
  remediation:
35
50
  summary: Use fixed, reviewed path prefixes and map external identifiers to internal paths through an allowlist.
51
+
@@ -5,6 +5,15 @@ metadata:
5
5
  title: Do not persist upload filenames directly
6
6
  summary: Upload handlers should not store attacker-controlled filenames without generating or validating a safe local name.
7
7
  rationale: Upload filenames can carry traversal payloads, collisions, or misleading extensions that break local containment.
8
+ detection:
9
+ kind: pattern
10
+ references:
11
+ - kind: cwe
12
+ id: CWE-434
13
+ title: Unrestricted Upload of File with Dangerous Type
14
+ - kind: owasp
15
+ title: File Upload Cheat Sheet
16
+ url: https://cheatsheetseries.owasp.org/cheatsheets/File_Upload_Cheat_Sheet.html
8
17
  tags:
9
18
  - security
10
19
  - filesystem
@@ -34,3 +43,4 @@ emit:
34
43
  summary: "`${captures.issue.text}` persists an upload filename derived from attacker-controlled input."
35
44
  remediation:
36
45
  summary: Generate a server-side filename or apply a strict allowlist before storing uploaded content.
46
+
@@ -5,6 +5,21 @@ metadata:
5
5
  title: Avoid excessive Fastify body limits
6
6
  summary: Fastify applications should not disable body limits or configure unusually large defaults without compensating controls.
7
7
  rationale: Oversized bodies amplify denial-of-service risk on services without upstream buffering limits.
8
+ detection:
9
+ kind: pattern
10
+ references:
11
+ - kind: cwe
12
+ id: CWE-16
13
+ title: Configuration
14
+ - kind: owasp
15
+ title: Secure Configuration Cheat Sheet
16
+ url: https://cheatsheetseries.owasp.org/cheatsheets/Secure_Configuration_Cheat_Sheet.html
17
+ - kind: url
18
+ title: Node.js security best practices
19
+ url: https://nodejs.org/en/learn/getting-started/security-best-practices
20
+ - kind: url
21
+ title: Fastify recommendations
22
+ url: https://fastify.dev/docs/latest/Guides/Recommendation/
8
23
  tags:
9
24
  - security
10
25
  - fastify
@@ -32,3 +47,4 @@ emit:
32
47
  summary: Fastify is configured with an oversized or disabled bodyLimit.
33
48
  remediation:
34
49
  summary: Lower `bodyLimit`, enforce route-specific caps, or terminate traffic behind an API gateway or proxy that caps body size.
50
+
@@ -7,6 +7,21 @@ metadata:
7
7
  Fastify instances listening on all interfaces should enable trustProxy or terminate behind a reverse proxy you register in code.
8
8
  rationale: >-
9
9
  Without trustProxy, client IP and protocol metadata from an edge proxy are easy to misread, and public binds amplify exposure when the process is not intentionally perimeter-hardened.
10
+ detection:
11
+ kind: pattern
12
+ references:
13
+ - kind: cwe
14
+ id: CWE-668
15
+ title: Exposure of Resource to Wrong Sphere
16
+ - kind: url
17
+ title: CWE-668 Exposure of Resource to Wrong Sphere
18
+ url: https://cwe.mitre.org/data/definitions/668.html
19
+ - kind: url
20
+ title: Node.js security best practices
21
+ url: https://nodejs.org/en/learn/getting-started/security-best-practices
22
+ - kind: url
23
+ title: Fastify recommendations
24
+ url: https://fastify.dev/docs/latest/Guides/Recommendation/
10
25
  tags:
11
26
  - security
12
27
  - fastify
@@ -36,3 +51,4 @@ emit:
36
51
  remediation:
37
52
  summary: >-
38
53
  Set trustProxy when running behind a reverse proxy, prefer non-public bind addresses in development, or register an explicit Fastify proxy plugin so client metadata and TLS termination assumptions stay correct.
54
+
@@ -5,6 +5,15 @@ metadata:
5
5
  title: Constrain local file generation paths
6
6
  summary: Local file writes should not derive their destination path from request or upload input.
7
7
  rationale: Attacker-controlled write paths can overwrite local state, escape intended directories, or create files in sensitive locations.
8
+ detection:
9
+ kind: pattern
10
+ references:
11
+ - kind: cwe
12
+ id: CWE-434
13
+ title: Unrestricted Upload of File with Dangerous Type
14
+ - kind: owasp
15
+ title: File Upload Cheat Sheet
16
+ url: https://cheatsheetseries.owasp.org/cheatsheets/File_Upload_Cheat_Sheet.html
8
17
  tags:
9
18
  - security
10
19
  - filesystem
@@ -34,3 +43,4 @@ emit:
34
43
  summary: "`${captures.issue.text}` writes to a path derived from external input without a trusted local filename."
35
44
  remediation:
36
45
  summary: Generate the destination name on the server or constrain writes to an allowlisted directory and filename set.
46
+
@@ -5,6 +5,15 @@ metadata:
5
5
  title: Avoid request-controlled format strings
6
6
  summary: Logging and formatting helpers should not take request input as the format string itself.
7
7
  rationale: Request-controlled format strings can corrupt logs, leak structure, or produce unexpected formatting behavior.
8
+ detection:
9
+ kind: pattern
10
+ references:
11
+ - kind: cwe
12
+ id: CWE-20
13
+ title: Improper Input Validation
14
+ - kind: owasp
15
+ title: Input Validation Cheat Sheet
16
+ url: https://cheatsheetseries.owasp.org/cheatsheets/Input_Validation_Cheat_Sheet.html
8
17
  tags:
9
18
  - security
10
19
  - logging
@@ -34,3 +43,4 @@ emit:
34
43
  summary: "`${captures.issue.text}` uses request-controlled input as the formatting template."
35
44
  remediation:
36
45
  summary: Keep the format string fixed and pass request data as ordinary arguments or structured fields.
46
+
@@ -5,6 +5,15 @@ metadata:
5
5
  title: Authorization enforced only on frontend
6
6
  summary: Backend routes should enforce authorization directly instead of relying on frontend gating alone.
7
7
  rationale: Frontend checks are easy to bypass, so sensitive routes need server-side authorization on the backend path itself.
8
+ detection:
9
+ kind: pattern
10
+ references:
11
+ - kind: cwe
12
+ id: CWE-862
13
+ title: Missing Authorization
14
+ - kind: owasp
15
+ title: Authorization Cheat Sheet
16
+ url: https://cheatsheetseries.owasp.org/cheatsheets/Authorization_Cheat_Sheet.html
8
17
  tags:
9
18
  - security
10
19
  - authorization
@@ -33,3 +42,4 @@ emit:
33
42
  summary: "Route `${captures.issue.text}` appears gated in frontend code but not on the backend handler."
34
43
  remediation:
35
44
  summary: Add a backend authorization or permission check on the matching route handler.
45
+
@@ -5,6 +5,21 @@ metadata:
5
5
  title: Pair GraphQL multipart uploads with CSRF-safe server posture
6
6
  summary: Legacy GraphQL multipart upload helpers should not run alongside Apollo Server configurations that disable CSRF protections.
7
7
  rationale: Multipart GraphQL requests complicate browser CSRF defenses; when Apollo CSRF prevention is explicitly disabled, upload middleware is a high-risk combination for cross-site writes.
8
+ detection:
9
+ kind: pattern
10
+ references:
11
+ - kind: cwe
12
+ id: CWE-434
13
+ title: Unrestricted Upload of File with Dangerous Type
14
+ - kind: owasp
15
+ title: File Upload Cheat Sheet
16
+ url: https://cheatsheetseries.owasp.org/cheatsheets/File_Upload_Cheat_Sheet.html
17
+ - kind: url
18
+ title: Node.js security best practices
19
+ url: https://nodejs.org/en/learn/getting-started/security-best-practices
20
+ - kind: url
21
+ title: Apollo Server security
22
+ url: https://www.apollographql.com/docs/apollo-server/security/security
8
23
  tags:
9
24
  - security
10
25
  - graphql
@@ -34,3 +49,4 @@ emit:
34
49
  remediation:
35
50
  summary: >-
36
51
  Keep Apollo csrfPrevention enabled (default in supported releases), add an explicit preflight header policy, or move uploads behind authenticated, non-browser APIs.
52
+
@@ -5,6 +5,15 @@ metadata:
5
5
  title: Keep Handlebars escaping enabled at template trust boundaries
6
6
  summary: "Server-side Handlebars compilation should not disable HTML escaping with `noEscape: true`."
7
7
  rationale: Disabling Handlebars escaping weakens the template trust boundary and can turn server-rendered output into attacker-controlled HTML.
8
+ detection:
9
+ kind: pattern
10
+ references:
11
+ - kind: cwe
12
+ id: CWE-79
13
+ title: Cross-site Scripting (XSS)
14
+ - kind: owasp
15
+ title: Cross Site Scripting Prevention Cheat Sheet
16
+ url: https://cheatsheetseries.owasp.org/cheatsheets/Cross_Site_Scripting_Prevention_Cheat_Sheet.html
8
17
  tags:
9
18
  - security
10
19
  - xss
@@ -36,3 +45,4 @@ emit:
36
45
  summary: "`${captures.issue.text}` disables Handlebars escaping at a server-template trust boundary."
37
46
  remediation:
38
47
  summary: Leave Handlebars escaping enabled, or treat raw HTML rendering as an explicit, narrowly reviewed trust boundary.
48
+
@@ -5,6 +5,15 @@ metadata:
5
5
  title: Avoid hardcoded auth secrets
6
6
  summary: JWT, session, and strategy secrets should not be embedded directly in source code.
7
7
  rationale: Hardcoded auth secrets are hard to rotate and are exposed whenever the codebase or build artifacts leak.
8
+ detection:
9
+ kind: pattern
10
+ references:
11
+ - kind: cwe
12
+ id: CWE-798
13
+ title: Use of Hard-coded Credentials
14
+ - kind: owasp
15
+ title: Secrets Management Cheat Sheet
16
+ url: https://cheatsheetseries.owasp.org/cheatsheets/Secrets_Management_Cheat_Sheet.html
8
17
  tags:
9
18
  - security
10
19
  - authentication
@@ -35,3 +44,4 @@ emit:
35
44
  remediation:
36
45
  summary: Load the secret from environment-backed configuration or a secret manager and rotate the exposed value.
37
46
 
47
+
@@ -5,6 +5,15 @@ metadata:
5
5
  title: Add a sandbox attribute to iframes
6
6
  summary: Intrinsic iframe elements should declare a sandbox attribute to reduce blast radius.
7
7
  rationale: Sandboxed iframes limit scripts, forms, and top-level navigation when embedded third-party content is compromised.
8
+ detection:
9
+ kind: pattern
10
+ references:
11
+ - kind: cwe
12
+ id: CWE-16
13
+ title: Configuration
14
+ - kind: owasp
15
+ title: Secure Configuration Cheat Sheet
16
+ url: https://cheatsheetseries.owasp.org/cheatsheets/Secure_Configuration_Cheat_Sheet.html
8
17
  tags:
9
18
  - security
10
19
  - react
@@ -33,3 +42,4 @@ emit:
33
42
  summary: "${captures.issue.text} is missing a sandbox attribute."
34
43
  remediation:
35
44
  summary: Add the most restrictive sandbox token set that still allows required behavior, and combine with a strict CSP.
45
+
@@ -5,6 +5,15 @@ metadata:
5
5
  title: Constrain module-loading trust boundaries
6
6
  summary: "`require()` and dynamic `import()` should not resolve modules from untrusted input."
7
7
  rationale: Untrusted module paths let attackers steer module-loading boundaries toward unintended files, packages, or plugins.
8
+ detection:
9
+ kind: pattern
10
+ references:
11
+ - kind: cwe
12
+ id: CWE-78
13
+ title: OS Command Injection
14
+ - kind: owasp
15
+ title: OS Command Injection Defense Cheat Sheet
16
+ url: https://cheatsheetseries.owasp.org/cheatsheets/OS_Command_Injection_Defense_Cheat_Sheet.html
8
17
  tags:
9
18
  - security
10
19
  - execution
@@ -34,3 +43,4 @@ emit:
34
43
  summary: "`${captures.issue.text}` crosses a module-loading trust boundary with untrusted input."
35
44
  remediation:
36
45
  summary: Resolve modules from a fixed allowlist or explicit dispatcher instead of untrusted request or event data.
46
+
@@ -5,6 +5,15 @@ metadata:
5
5
  title: Avoid leaking sensitive or diagnostic state
6
6
  summary: Logs, stdout or stderr, and direct response sinks should not expose sensitive fields or internal diagnostic detail.
7
7
  rationale: Stack traces, request metadata, auth or session objects, and environment state are often leaked through "temporary" debugging output that later reaches production paths.
8
+ detection:
9
+ kind: pattern
10
+ references:
11
+ - kind: cwe
12
+ id: CWE-532
13
+ title: Insertion of Sensitive Information into Log File
14
+ - kind: owasp
15
+ title: Logging Cheat Sheet
16
+ url: https://cheatsheetseries.owasp.org/cheatsheets/Logging_Cheat_Sheet.html
8
17
  tags:
9
18
  - security
10
19
  - privacy
@@ -36,3 +45,4 @@ emit:
36
45
  summary: "`${captures.issue.text}` exposes sensitive fields or internal diagnostic detail through a direct sink."
37
46
  remediation:
38
47
  summary: Replace the payload with a fixed summary, redact sensitive fields, and strip stack, env, request, or cookie data from production output.
48
+
@@ -5,6 +5,15 @@ metadata:
5
5
  title: Do not reflect request origin into CORS policy
6
6
  summary: "`Access-Control-Allow-Origin` should not be set from request-controlled input."
7
7
  rationale: Reflecting the request origin into a CORS allowlist turns origin validation into a no-op.
8
+ detection:
9
+ kind: pattern
10
+ references:
11
+ - kind: cwe
12
+ id: CWE-942
13
+ title: Permissive Cross-domain Policy with Untrusted Domains
14
+ - kind: owasp
15
+ title: Cross-Origin Resource Sharing (CORS)
16
+ url: https://owasp.org/www-community/attacks/CORS_OriginHeaderScrutiny
8
17
  tags:
9
18
  - security
10
19
  - cors
@@ -34,3 +43,4 @@ emit:
34
43
  summary: "`${captures.issue.text}` reflects request input into `Access-Control-Allow-Origin`."
35
44
  remediation:
36
45
  summary: Set CORS origins from a fixed allowlist or explicit trusted origin check.
46
+
@@ -5,6 +5,15 @@ metadata:
5
5
  title: Harden auth-bearing cookies
6
6
  summary: Auth and session cookies should set HttpOnly, Secure, and SameSite.
7
7
  rationale: Cookie flags prevent browser scripts, mixed transport, and cross-site requests from exposing session-bearing values.
8
+ detection:
9
+ kind: pattern
10
+ references:
11
+ - kind: cwe
12
+ id: CWE-614
13
+ title: Sensitive Cookie Without Secure Attribute
14
+ - kind: owasp
15
+ title: Session Management Cheat Sheet
16
+ url: https://cheatsheetseries.owasp.org/cheatsheets/Session_Management_Cheat_Sheet.html
8
17
  tags:
9
18
  - security
10
19
  - authentication
@@ -35,3 +44,4 @@ emit:
35
44
  remediation:
36
45
  summary: Add `HttpOnly`, `Secure`, and an explicit `SameSite` policy before the cookie is used for session or auth state.
37
46
 
47
+
@@ -5,6 +5,15 @@ metadata:
5
5
  title: Avoid unsafe Content-Security-Policy literals
6
6
  summary: Static CSP header values should not rely on unsafe-inline, unsafe-eval, or unsafe-hashes without nonces.
7
7
  rationale: Permissive CSP keywords weaken XSS defenses for every response that carries the header.
8
+ detection:
9
+ kind: pattern
10
+ references:
11
+ - kind: cwe
12
+ id: CWE-16
13
+ title: Configuration
14
+ - kind: owasp
15
+ title: Secure Configuration Cheat Sheet
16
+ url: https://cheatsheetseries.owasp.org/cheatsheets/Secure_Configuration_Cheat_Sheet.html
8
17
  tags:
9
18
  - security
10
19
  - csp
@@ -33,3 +42,4 @@ emit:
33
42
  summary: "${captures.issue.text} sets a CSP that includes unsafe directives without a nonce-based escape hatch."
34
43
  remediation:
35
44
  summary: Prefer nonces or hashes, remove unsafe-inline and unsafe-eval, and scope directives to the smallest required surface.
45
+
@@ -5,6 +5,15 @@ metadata:
5
5
  title: Avoid disabling core Helmet protections
6
6
  summary: Helmet should keep nosniff, HSTS, DNS prefetch control, Expect-CT, and referrer policy enabled unless another gateway enforces them.
7
7
  rationale: Turning off individual Helmet middlewares removes baseline HTTP hardening that is a high-signal misconfiguration risk.
8
+ detection:
9
+ kind: pattern
10
+ references:
11
+ - kind: cwe
12
+ id: CWE-16
13
+ title: Configuration
14
+ - kind: owasp
15
+ title: Secure Configuration Cheat Sheet
16
+ url: https://cheatsheetseries.owasp.org/cheatsheets/Secure_Configuration_Cheat_Sheet.html
8
17
  tags:
9
18
  - security
10
19
  - express
@@ -34,3 +43,4 @@ emit:
34
43
  summary: "${captures.issue.text} disables a Helmet protection that should usually remain enabled."
35
44
  remediation:
36
45
  summary: Remove false overrides for nosniff, HSTS, DNS prefetch control, Expect-CT, and referrer policy unless a documented compensating control applies.
46
+
@@ -5,6 +5,15 @@ metadata:
5
5
  title: Avoid legacy Argon2 password hash modes
6
6
  summary: Password hashing should not use `argon2i` or `argon2d` when safer modern modes are available.
7
7
  rationale: Older Argon2 modes are weaker choices for password storage than the modern hybrid mode.
8
+ detection:
9
+ kind: pattern
10
+ references:
11
+ - kind: cwe
12
+ id: CWE-327
13
+ title: Use of a Broken or Risky Cryptographic Algorithm
14
+ - kind: owasp
15
+ title: Cryptographic Storage Cheat Sheet
16
+ url: https://cheatsheetseries.owasp.org/cheatsheets/Cryptographic_Storage_Cheat_Sheet.html
8
17
  tags:
9
18
  - security
10
19
  - cryptography
@@ -35,3 +44,4 @@ emit:
35
44
  remediation:
36
45
  summary: Prefer `argon2id` and keep the password hash configuration aligned with current password-storage guidance.
37
46
 
47
+
@@ -5,6 +5,15 @@ metadata:
5
5
  title: Use secure WebSocket transport
6
6
  summary: WebSocket clients should not connect over cleartext `ws://` when sensitive application data is involved.
7
7
  rationale: Cleartext WebSocket transport exposes application traffic to interception and manipulation.
8
+ detection:
9
+ kind: pattern
10
+ references:
11
+ - kind: cwe
12
+ id: CWE-319
13
+ title: Cleartext Transmission of Sensitive Information
14
+ - kind: owasp
15
+ title: Transport Layer Security Cheat Sheet
16
+ url: https://cheatsheetseries.owasp.org/cheatsheets/Transport_Layer_Security_Cheat_Sheet.html
8
17
  tags:
9
18
  - security
10
19
  - transport
@@ -35,3 +44,4 @@ emit:
35
44
  remediation:
36
45
  summary: Switch the endpoint to `wss://` and keep certificate validation enabled.
37
46
 
47
+
@@ -5,6 +5,15 @@ metadata:
5
5
  title: Use enough entropy for secrets and tokens
6
6
  summary: Secret-bearing tokens and secrets should use at least 16 bytes of cryptographic entropy.
7
7
  rationale: Short random values are harder to brute-force than predictable values, but they can still be guessed faster than modern secret-bearing flows should allow.
8
+ detection:
9
+ kind: pattern
10
+ references:
11
+ - kind: cwe
12
+ id: CWE-327
13
+ title: Use of a Broken or Risky Cryptographic Algorithm
14
+ - kind: owasp
15
+ title: Cryptographic Storage Cheat Sheet
16
+ url: https://cheatsheetseries.owasp.org/cheatsheets/Cryptographic_Storage_Cheat_Sheet.html
8
17
  tags:
9
18
  - security
10
19
  - cryptography
@@ -34,3 +43,4 @@ emit:
34
43
  summary: "`${captures.issue.text}` uses a cryptographically random source, but not enough entropy for a secret-bearing value."
35
44
  remediation:
36
45
  summary: Generate at least 16 bytes of entropy for reset tokens, invitation codes, session secrets, and similar secret-bearing values.
46
+
@@ -5,6 +5,15 @@ metadata:
5
5
  title: Do not sign JWTs with the none algorithm
6
6
  summary: JSON Web Token signing options must not enable the none algorithm.
7
7
  rationale: The none algorithm allows tokens to be accepted without verification, defeating authentication.
8
+ detection:
9
+ kind: pattern
10
+ references:
11
+ - kind: cwe
12
+ id: CWE-287
13
+ title: Improper Authentication
14
+ - kind: owasp
15
+ title: JSON Web Token Cheat Sheet
16
+ url: https://cheatsheetseries.owasp.org/cheatsheets/JSON_Web_Token_for_Java_Cheat_Sheet.html
8
17
  tags:
9
18
  - security
10
19
  - jwt
@@ -33,3 +42,4 @@ emit:
33
42
  summary: "${captures.issue.text} is configured with the none algorithm or algorithm list."
34
43
  remediation:
35
44
  summary: Require asymmetric or HMAC algorithms explicitly and reject none at signing and verification layers.
45
+
@@ -5,6 +5,15 @@ metadata:
5
5
  title: Add a JWT revocation hook
6
6
  summary: Express JWT middleware should check revocation state when bearer tokens can be invalidated early.
7
7
  rationale: Signature validation alone does not handle logout, compromise, or forced token invalidation.
8
+ detection:
9
+ kind: pattern
10
+ references:
11
+ - kind: cwe
12
+ id: CWE-287
13
+ title: Improper Authentication
14
+ - kind: owasp
15
+ title: JSON Web Token Cheat Sheet
16
+ url: https://cheatsheetseries.owasp.org/cheatsheets/JSON_Web_Token_for_Java_Cheat_Sheet.html
8
17
  tags:
9
18
  - security
10
19
  - authentication
@@ -35,3 +44,4 @@ emit:
35
44
  remediation:
36
45
  summary: Add an `isRevoked` callback or equivalent revocation check for tokens that can be invalidated before expiry.
37
46
 
47
+
@@ -5,6 +5,15 @@ metadata:
5
5
  title: Remove sensitive claims from JWT payloads
6
6
  summary: JWT payloads should avoid embedding PII or secrets unless absolutely required.
7
7
  rationale: Client-visible tokens often outlive a single request and can leak more data than intended.
8
+ detection:
9
+ kind: pattern
10
+ references:
11
+ - kind: cwe
12
+ id: CWE-287
13
+ title: Improper Authentication
14
+ - kind: owasp
15
+ title: JSON Web Token Cheat Sheet
16
+ url: https://cheatsheetseries.owasp.org/cheatsheets/JSON_Web_Token_for_Java_Cheat_Sheet.html
8
17
  tags:
9
18
  - security
10
19
  - privacy
@@ -35,3 +44,4 @@ emit:
35
44
  remediation:
36
45
  summary: Keep JWT claims minimal. Prefer stable identifiers, not direct PII or secret-bearing fields.
37
46
 
47
+
@@ -5,6 +5,15 @@ metadata:
5
5
  title: Replace legacy Buffer constructors
6
6
  summary: Use Buffer.from, Buffer.alloc, or Buffer.allocUnsafe instead of the deprecated Buffer constructor.
7
7
  rationale: Legacy constructors behave differently across Node versions and are harder to audit for safe allocation.
8
+ detection:
9
+ kind: pattern
10
+ references:
11
+ - kind: cwe
12
+ id: CWE-16
13
+ title: Configuration
14
+ - kind: owasp
15
+ title: Secure Configuration Cheat Sheet
16
+ url: https://cheatsheetseries.owasp.org/cheatsheets/Secure_Configuration_Cheat_Sheet.html
8
17
  tags:
9
18
  - security
10
19
  - node
@@ -33,3 +42,4 @@ emit:
33
42
  summary: "${captures.issue.text} uses the deprecated Buffer constructor API."
34
43
  remediation:
35
44
  summary: Prefer Buffer.from for encoded data and Buffer.alloc for zero-filled buffers sized by trusted logic.
45
+
@@ -5,6 +5,15 @@ metadata:
5
5
  title: Sanitize user-controlled values before they reach log messages
6
6
  summary: Logger calls in pino, winston, bunyan, and consola should not interpolate or concatenate request input directly into the message text.
7
7
  rationale: Unsanitized request data in log messages enables CRLF injection, control-character smuggling, and downstream log-parser confusion. Wrapping the value with a structured field, JSON encoder, or CRLF-stripping replace neutralizes the vector.
8
+ detection:
9
+ kind: pattern
10
+ references:
11
+ - kind: cwe
12
+ id: CWE-532
13
+ title: Insertion of Sensitive Information into Log File
14
+ - kind: owasp
15
+ title: Logging Cheat Sheet
16
+ url: https://cheatsheetseries.owasp.org/cheatsheets/Logging_Cheat_Sheet.html
8
17
  tags:
9
18
  - security
10
19
  - logging
@@ -34,3 +43,4 @@ emit:
34
43
  summary: "`${captures.issue.text}` interpolates request data into a log message without an obvious sanitizer."
35
44
  remediation:
36
45
  summary: Pass request data as a structured field, JSON-encode it, or strip CRLF and control characters before concatenating it into the log message.
46
+
@@ -5,6 +5,15 @@ metadata:
5
5
  title: Avoid ad hoc HTML sanitization
6
6
  summary: Hand-rolled HTML escaping and sanitization should be replaced with vetted sanitizers or safe rendering paths.
7
7
  rationale: String replacement chains miss edge cases and are easy to bypass as rendering behavior evolves.
8
+ detection:
9
+ kind: pattern
10
+ references:
11
+ - kind: cwe
12
+ id: CWE-79
13
+ title: Cross-site Scripting (XSS)
14
+ - kind: owasp
15
+ title: Cross Site Scripting Prevention Cheat Sheet
16
+ url: https://cheatsheetseries.owasp.org/cheatsheets/Cross_Site_Scripting_Prevention_Cheat_Sheet.html
8
17
  tags:
9
18
  - security
10
19
  - xss
@@ -35,3 +44,4 @@ emit:
35
44
  remediation:
36
45
  summary: Use a vetted sanitizer or framework-native escaping model instead of string replacement chains.
37
46
 
47
+
@@ -5,6 +5,15 @@ metadata:
5
5
  title: Missing authorization before sensitive action
6
6
  summary: Sensitive backend actions should be guarded by an authorization or permission check.
7
7
  rationale: Calling destructive or privileged actions without an authorization guard increases the risk of broken access control.
8
+ detection:
9
+ kind: pattern
10
+ references:
11
+ - kind: cwe
12
+ id: CWE-862
13
+ title: Missing Authorization
14
+ - kind: owasp
15
+ title: Authorization Cheat Sheet
16
+ url: https://cheatsheetseries.owasp.org/cheatsheets/Authorization_Cheat_Sheet.html
8
17
  tags:
9
18
  - security
10
19
  - authorization
@@ -33,3 +42,4 @@ emit:
33
42
  summary: "`${captures.issue.text}` performs a sensitive action without a matching authorization guard."
34
43
  remediation:
35
44
  summary: Add an explicit authorization or permission check before the sensitive action executes.
45
+