@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
@@ -0,0 +1,44 @@
1
+ apiVersion: critiq.dev/v1alpha1
2
+ kind: Rule
3
+ metadata:
4
+ id: ts.security.no-with-statement
5
+ title: Avoid `with` statements
6
+ summary: "`with` statements make binding resolution unpredictable and are disallowed in strict mode."
7
+ rationale: The `with` statement introduces dynamic scope and makes static analysis, optimization, and security review unreliable.
8
+ detection:
9
+ kind: pattern
10
+ references:
11
+ - kind: cwe
12
+ id: CWE-94
13
+ title: Improper Control of Generation of Code
14
+ - kind: owasp
15
+ title: Code Injection
16
+ url: https://owasp.org/www-community/attacks/Code_Injection
17
+ tags:
18
+ - security
19
+ - language
20
+ - rules-catalog
21
+ stability: stable
22
+ appliesTo: block
23
+ scope:
24
+ languages:
25
+ - typescript
26
+ - javascript
27
+ match:
28
+ fact:
29
+ kind: security.with-statement
30
+ bind: issue
31
+ emit:
32
+ finding:
33
+ category: security.language
34
+ severity: high
35
+ confidence: 0.98
36
+ tags:
37
+ - security
38
+ - language
39
+ message:
40
+ title: Avoid `with` statements
41
+ summary: "`${captures.issue.text}` uses a `with` statement that makes binding resolution unpredictable."
42
+ remediation:
43
+ summary: Replace the `with` block with explicit property access on a named object.
44
+
@@ -5,6 +5,15 @@ metadata:
5
5
  title: Avoid attacker-controlled filesystem read paths
6
6
  summary: Direct filesystem read APIs should not consume request- or upload-controlled filenames.
7
7
  rationale: Dynamic read paths can expose unintended local files or bypass expected file-selection constraints.
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}` reads from a filename derived from external input."
35
44
  remediation:
36
45
  summary: Resolve reads from a trusted allowlist or a validated server-controlled mapping instead of external filenames.
46
+
@@ -7,6 +7,18 @@ metadata:
7
7
  Sensitive credentials must not be exposed through runtimeConfig.public, which is visible to client bundles.
8
8
  rationale: >-
9
9
  Nuxt exposes runtimeConfig.public to the browser; placing secret material there leaks API keys, database passwords, and signing material to every visitor.
10
+ detection:
11
+ kind: pattern
12
+ references:
13
+ - kind: cwe
14
+ id: CWE-798
15
+ title: Use of Hard-coded Credentials
16
+ - kind: owasp
17
+ title: Secrets Management Cheat Sheet
18
+ url: https://cheatsheetseries.owasp.org/cheatsheets/Secrets_Management_Cheat_Sheet.html
19
+ - kind: url
20
+ title: Node.js security best practices
21
+ url: https://nodejs.org/en/learn/getting-started/security-best-practices
10
22
  tags:
11
23
  - security
12
24
  - nuxt
@@ -36,3 +48,4 @@ emit:
36
48
  remediation:
37
49
  summary: >-
38
50
  Keep secrets in the private runtimeConfig tree (non-public) and expose only publishable identifiers to the client after reviewing Nuxt runtime config documentation.
51
+
@@ -5,6 +5,15 @@ metadata:
5
5
  title: Use constant-time secret comparison
6
6
  summary: Secrets and tokens should not be compared with ordinary equality operators.
7
7
  rationale: Ordinary string comparison can leak timing differences that help attackers guess secret material.
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: Use a constant-time comparison helper such as `crypto.timingSafeEqual` for secrets, tokens, and password hashes.
37
46
 
47
+
@@ -5,6 +5,15 @@ metadata:
5
5
  title: Open redirect via request-controlled target
6
6
  summary: Redirect and navigation sinks should not use request-controlled destinations without validation.
7
7
  rationale: Redirect targets that are derived from user input can send authenticated users to attacker-controlled destinations.
8
+ detection:
9
+ kind: pattern
10
+ references:
11
+ - kind: cwe
12
+ id: CWE-601
13
+ title: URL Redirection to Untrusted Site
14
+ - kind: owasp
15
+ title: Unvalidated Redirects and Forwards Cheat Sheet
16
+ url: https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html
8
17
  tags:
9
18
  - security
10
19
  - input-validation
@@ -37,3 +46,4 @@ emit:
37
46
  remediation:
38
47
  summary: Normalize the target to an internal path or validate it against a trusted origin allowlist before redirecting.
39
48
 
49
+
@@ -5,6 +5,15 @@ metadata:
5
5
  title: Do not allow every origin in CORS policy
6
6
  summary: CORS should not fall back to wildcard or implicit allow-all origin settings.
7
7
  rationale: Wildcard or implicit allow-all CORS policies expose authenticated browser responses across origins.
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}` allows any origin through wildcard or implicit CORS policy."
35
44
  remediation:
36
45
  summary: Configure an explicit allowlist or validated origin callback instead of allowing all origins.
46
+
@@ -5,6 +5,15 @@ metadata:
5
5
  title: Avoid permissive file modes
6
6
  summary: Files that can carry user or security data should not be created with world-accessible modes.
7
7
  rationale: Broad file permissions expose application data to local users or processes that should not read or modify it.
8
+ detection:
9
+ kind: pattern
10
+ references:
11
+ - kind: cwe
12
+ id: CWE-732
13
+ title: Incorrect Permission Assignment for Critical Resource
14
+ - kind: owasp
15
+ title: File Permission
16
+ url: https://owasp.org/www-community/vulnerabilities/Improper_File_Permissions
8
17
  tags:
9
18
  - security
10
19
  - filesystem
@@ -35,3 +44,4 @@ emit:
35
44
  remediation:
36
45
  summary: Use the minimum required file mode and remove world-readable or world-writable bits.
37
46
 
47
+
@@ -5,6 +5,15 @@ metadata:
5
5
  title: Avoid wildcard `postMessage` targets
6
6
  summary: "`postMessage` calls should not use `*` as the target origin when they carry application data."
7
7
  rationale: Wildcard targets allow the browser to deliver the message to any origin that receives the window reference.
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
  - browser
@@ -34,3 +43,4 @@ emit:
34
43
  summary: "`${captures.issue.text}` uses `*` as the `postMessage` target origin."
35
44
  remediation:
36
45
  summary: Set the target origin to a strict expected origin instead of `*`.
46
+
@@ -5,6 +5,15 @@ metadata:
5
5
  title: Avoid predictable token generation
6
6
  summary: Tokens, reset links, and session secrets should be generated from cryptographically strong randomness.
7
7
  rationale: Predictable token material makes it easier to guess reset links, invite codes, and session secrets.
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
@@ -34,3 +43,4 @@ emit:
34
43
  summary: "`${captures.issue.text}` builds a token-like value from predictable inputs."
35
44
  remediation:
36
45
  summary: Generate the value with `crypto.randomBytes`, `crypto.randomUUID`, or an approved secure token source.
46
+
@@ -5,6 +5,15 @@ metadata:
5
5
  title: Avoid raw HTML with request input
6
6
  summary: Request-derived values should not be interpolated into raw HTML strings.
7
7
  rationale: Raw HTML construction with request data is a common path to reflected and stored XSS.
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 framework escaping, a trusted sanitizer, or safe DOM APIs instead of raw HTML interpolation.
37
46
 
47
+
@@ -5,6 +5,15 @@ metadata:
5
5
  title: Avoid request-driven array indexing without bounds checks
6
6
  summary: Arrays indexed with request-derived keys can read or write out-of-bounds entries.
7
7
  rationale: Attacker-controlled indexes bypass assumptions about array length and element initialization.
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
  - correctness
@@ -31,3 +40,4 @@ emit:
31
40
  summary: "Array access uses a computed index derived from ${captures.issue.text}."
32
41
  remediation:
33
42
  summary: Parse and bound-check indexes, prefer maps keyed by stable identifiers, or avoid indexing arrays with request data.
43
+
@@ -5,6 +5,15 @@ metadata:
5
5
  title: Sensitive data egress to third-party processors
6
6
  summary: Sensitive values should not be sent to external processors or outbound SDKs without minimization or redaction.
7
7
  rationale: Sending regulated or secret data to third-party services increases privacy exposure and creates downstream processor risk.
8
+ detection:
9
+ kind: pattern
10
+ references:
11
+ - kind: cwe
12
+ id: CWE-200
13
+ title: Exposure of Sensitive Information to an Unauthorized Actor
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
@@ -35,3 +44,4 @@ emit:
35
44
  summary: "`${captures.issue.text}` sends normalized sensitive datatypes to an outbound processor or external service."
36
45
  remediation:
37
46
  summary: Minimize the payload, redact the sensitive fields, or route the data only to approved processors.
47
+
@@ -5,6 +5,15 @@ metadata:
5
5
  title: Avoid sensitive data in thrown errors
6
6
  summary: Exceptions and rejection payloads should not include raw secrets or personal data.
7
7
  rationale: Exception payloads often reach logs, APM tools, and client responses with less review than normal business data.
8
+ detection:
9
+ kind: pattern
10
+ references:
11
+ - kind: cwe
12
+ id: CWE-200
13
+ title: Exposure of Sensitive Information to an Unauthorized Actor
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
@@ -35,3 +44,4 @@ emit:
35
44
  remediation:
36
45
  summary: Replace raw secrets and personal data with opaque identifiers or redacted summaries before throwing or rejecting.
37
46
 
47
+
@@ -5,6 +5,15 @@ metadata:
5
5
  title: Avoid writing sensitive data to files
6
6
  summary: Data exports and local file writes should not persist raw secrets or personal fields.
7
7
  rationale: Static files, exports, and backups are easy to copy or retain beyond their intended lifetime.
8
+ detection:
9
+ kind: pattern
10
+ references:
11
+ - kind: cwe
12
+ id: CWE-200
13
+ title: Exposure of Sensitive Information to an Unauthorized Actor
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
@@ -35,3 +44,4 @@ emit:
35
44
  remediation:
36
45
  summary: Redact, hash, or exclude the sensitive fields before writing the file.
37
46
 
47
+
@@ -5,6 +5,15 @@ metadata:
5
5
  title: Server-side request forgery
6
6
  summary: Outbound requests should not use attacker-controlled targets or private hosts.
7
7
  rationale: Request-controlled targets can force the server to call internal services, metadata endpoints, or attacker-controlled infrastructure.
8
+ detection:
9
+ kind: pattern
10
+ references:
11
+ - kind: cwe
12
+ id: CWE-918
13
+ title: Server-Side Request Forgery (SSRF)
14
+ - kind: owasp
15
+ title: Server-Side Request Forgery
16
+ url: https://owasp.org/www-community/attacks/Server_Side_Request_Forgery
8
17
  tags:
9
18
  - security
10
19
  - network
@@ -33,3 +42,4 @@ emit:
33
42
  summary: "`${captures.ssrfCall.text}` sends an outbound request to a request-controlled or private target."
34
43
  remediation:
35
44
  summary: Resolve URLs against a trusted allowlist, reject private hosts, and proxy outbound requests through a vetted server-side helper.
45
+
@@ -5,6 +5,15 @@ metadata:
5
5
  title: Token or session not validated
6
6
  summary: Session and token values from external input should be verified before authentication or identity use.
7
7
  rationale: Parsing or loading session state without verification allows forged or stale credentials to influence authorization paths.
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
@@ -33,3 +42,4 @@ emit:
33
42
  summary: "`${captures.issue.text}` uses token or session input without any preceding validation step."
34
43
  remediation:
35
44
  summary: Verify or authenticate the token or session value before decoding, loading, or deriving identity from it.
45
+
@@ -5,6 +5,15 @@ metadata:
5
5
  title: Do not derive anti-framing headers from request input
6
6
  summary: Framing and CSP headers should not be set from request-controlled values.
7
7
  rationale: Request-controlled anti-framing headers weaken protections against clickjacking and UI redress attacks.
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
  - clickjacking
@@ -35,3 +44,4 @@ emit:
35
44
  remediation:
36
45
  summary: Set framing and CSP headers from fixed server policy instead of request data.
37
46
 
47
+
@@ -0,0 +1,44 @@
1
+ apiVersion: critiq.dev/v1alpha1
2
+ kind: Rule
3
+ metadata:
4
+ id: ts.security.unsafe-dirname-path-concat
5
+ title: Avoid string-built paths from `__dirname` or `__filename`
6
+ summary: Do not build filesystem paths by concatenating `__dirname` or `__filename` with strings or templates.
7
+ rationale: String-built paths are easy to get wrong and can enable directory traversal when any segment is dynamic.
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
+ tags:
18
+ - security
19
+ - filesystem
20
+ - rules-catalog
21
+ stability: stable
22
+ appliesTo: block
23
+ scope:
24
+ languages:
25
+ - typescript
26
+ - javascript
27
+ match:
28
+ fact:
29
+ kind: security.unsafe-dirname-path-concat
30
+ bind: issue
31
+ emit:
32
+ finding:
33
+ category: security.filesystem
34
+ severity: medium
35
+ confidence: 0.88
36
+ tags:
37
+ - security
38
+ - filesystem
39
+ message:
40
+ title: Avoid string-built paths from `__dirname` or `__filename`
41
+ summary: "`${captures.issue.text}` builds a path by concatenating `__dirname` or `__filename`, which is fragile and risky."
42
+ remediation:
43
+ summary: Use `path.join`, `path.resolve`, or `import.meta.url` with validated segments instead of string concatenation.
44
+
@@ -5,6 +5,15 @@ metadata:
5
5
  title: Upgrade DOM sanitization dependency
6
6
  summary: DOM sanitization libraries should stay on patched versions before they are trusted for untrusted HTML.
7
7
  rationale: Older sanitizer versions can miss browser parsing edge cases and leave XSS protections incomplete.
8
+ detection:
9
+ kind: pattern
10
+ references:
11
+ - kind: cwe
12
+ id: CWE-1104
13
+ title: Use of Unmaintained Third Party Components
14
+ - kind: owasp
15
+ title: Vulnerable Dependency Management Cheat Sheet
16
+ url: https://cheatsheetseries.owasp.org/cheatsheets/Vulnerable_Dependency_Management_Cheat_Sheet.html
8
17
  tags:
9
18
  - security
10
19
  - dependency
@@ -34,3 +43,4 @@ emit:
34
43
  summary: "`${captures.issue.text}` is below the minimum sanitizer version Critiq treats as safe for untrusted HTML."
35
44
  remediation:
36
45
  summary: Upgrade the package, then keep HTML sanitizer usage behind a small reviewed wrapper.
46
+
@@ -5,6 +5,15 @@ metadata:
5
5
  title: Upgrade Markdown rendering dependency
6
6
  summary: Markdown renderers should stay on patched versions before rendering untrusted content.
7
7
  rationale: Older Markdown renderer versions can expose unsafe HTML handling and parser edge cases.
8
+ detection:
9
+ kind: pattern
10
+ references:
11
+ - kind: cwe
12
+ id: CWE-1104
13
+ title: Use of Unmaintained Third Party Components
14
+ - kind: owasp
15
+ title: Vulnerable Dependency Management Cheat Sheet
16
+ url: https://cheatsheetseries.owasp.org/cheatsheets/Vulnerable_Dependency_Management_Cheat_Sheet.html
8
17
  tags:
9
18
  - security
10
19
  - dependency
@@ -34,3 +43,4 @@ emit:
34
43
  summary: "`${captures.issue.text}` is below the minimum Markdown renderer version Critiq treats as safe for untrusted content."
35
44
  remediation:
36
45
  summary: Upgrade the package and keep untrusted Markdown rendering behind explicit sanitization.
46
+
@@ -5,6 +5,15 @@ metadata:
5
5
  title: Avoid unsafe raw HTTP response output
6
6
  summary: Raw response writers should not echo request data into HTML-capable responses without trusted escaping or sanitization.
7
7
  rationale: Directly reflecting request data into HTML-capable response sinks creates reflected XSS and content injection risk.
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
@@ -34,3 +43,4 @@ emit:
34
43
  summary: "`${captures.issue.text}` writes request-controlled data into a raw HTTP response sink without a trusted HTML escaping model."
35
44
  remediation:
36
45
  summary: Escape or sanitize the data with a trusted helper, or switch to a response format that does not treat it as executable markup.
46
+
@@ -5,6 +5,15 @@ metadata:
5
5
  title: Validate untrusted input before parser construction
6
6
  summary: Untrusted input should be validated before it is used to construct sensitive parsers or runtime objects.
7
7
  rationale: Passing untrusted text across regex or URL construction boundaries increases the risk of parser abuse, denial of service, and downstream policy bypass.
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
  - input-validation
@@ -33,3 +42,4 @@ emit:
33
42
  summary: "`${captures.issue.text}` constructs a sensitive parser or runtime object from untrusted input without a trust-boundary check."
34
43
  remediation:
35
44
  summary: Validate, sanitize, or normalize the untrusted value before passing it into URL, RegExp, or similarly sensitive constructors.
45
+
@@ -5,6 +5,15 @@ metadata:
5
5
  title: Constrain `res.sendFile` to a trusted root
6
6
  summary: "`res.sendFile()` should not resolve filenames or options from request input without a trusted root."
7
7
  rationale: Request-controlled file responses are a common path to path traversal and unintended local file disclosure.
8
+ detection:
9
+ kind: pattern
10
+ references:
11
+ - kind: cwe
12
+ id: CWE-918
13
+ title: Server-Side Request Forgery (SSRF)
14
+ - kind: owasp
15
+ title: Server-Side Request Forgery
16
+ url: https://owasp.org/www-community/attacks/Server_Side_Request_Forgery
8
17
  tags:
9
18
  - security
10
19
  - filesystem
@@ -34,3 +43,4 @@ emit:
34
43
  summary: "`${captures.issue.text}` serves a request-controlled file path or options object without a trusted root."
35
44
  remediation:
36
45
  summary: Resolve files from an allowlisted directory and validate request input before it reaches `res.sendFile()`.
46
+
@@ -5,6 +5,15 @@ metadata:
5
5
  title: Constrain `res.render()` trust boundaries
6
6
  summary: Express view names should not cross into server-side rendering from untrusted input.
7
7
  rationale: Untrusted template names can expose internal views, bypass intended route behavior, or widen a server-side template boundary.
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
  - express
@@ -34,3 +43,4 @@ emit:
34
43
  summary: "`${captures.issue.text}` selects a server-side template across a trust boundary using untrusted input."
35
44
  remediation:
36
45
  summary: Resolve the template from an allowlist or fixed route mapping before calling `res.render()`.
46
+
@@ -5,6 +5,15 @@ metadata:
5
5
  title: Avoid weak cipher algorithms and modes
6
6
  summary: Cryptographic ciphers should use modern authenticated modes and approved algorithms.
7
7
  rationale: Weak modes such as ECB and legacy ciphers such as DES or RC4 do not provide adequate confidentiality.
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
  - crypto
@@ -33,3 +42,4 @@ emit:
33
42
  summary: "`${captures.issue.text}` uses a weak cipher algorithm or mode."
34
43
  remediation:
35
44
  summary: Use modern authenticated encryption such as AES-GCM with approved key sizes and IV handling.
45
+
@@ -5,6 +5,15 @@ metadata:
5
5
  title: Avoid weak key-generation strength
6
6
  summary: Key-generation helpers should use current minimum strengths for RSA, AES, and HMAC keys.
7
7
  rationale: Weak modulus or key lengths make brute-force and cryptanalytic attacks more practical, even when the API itself is correct.
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}` configures a key length or modulus size below the current minimum expected for production cryptography."
35
44
  remediation:
36
45
  summary: Use at least 2048-bit RSA keys and at least 128-bit AES or HMAC keys unless a clearly documented compatibility boundary requires otherwise.
46
+
@@ -5,6 +5,15 @@ metadata:
5
5
  title: Require modern TLS minimum versions
6
6
  summary: Transport clients should not explicitly allow SSLv3, TLS 1.0, or TLS 1.1.
7
7
  rationale: Legacy TLS protocol floors weaken transport security and keep obsolete downgrade-compatible settings alive in production code.
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
@@ -34,3 +43,4 @@ emit:
34
43
  summary: "`${captures.issue.text}` explicitly allows an obsolete TLS or SSL protocol version."
35
44
  remediation:
36
45
  summary: Set `minVersion` to at least `TLSv1.2` or `TLSv1.3` and remove legacy `secureProtocol` values.
46
+
@@ -5,6 +5,15 @@ metadata:
5
5
  title: Do not parse untrusted XML with permissive parsers
6
6
  summary: parseString and similar XML helpers should not consume request-controlled payloads without hardening.
7
7
  rationale: Untrusted XML can enable XXE-style parser abuse depending on the underlying implementation and parser flags.
8
+ detection:
9
+ kind: pattern
10
+ references:
11
+ - kind: cwe
12
+ id: CWE-502
13
+ title: Deserialization of Untrusted Data
14
+ - kind: owasp
15
+ title: Deserialization Cheat Sheet
16
+ url: https://cheatsheetseries.owasp.org/cheatsheets/Deserialization_Cheat_Sheet.html
8
17
  tags:
9
18
  - security
10
19
  - xml
@@ -33,3 +42,4 @@ emit:
33
42
  summary: "${captures.issue.text} parses XML that appears request-driven."
34
43
  remediation:
35
44
  summary: Disable external entities, validate payloads against a strict schema, and parse with a hardened XML configuration.
45
+