@critiq/rules 0.1.0 → 0.3.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 (495) hide show
  1. package/README.md +3 -2
  2. package/catalog.yaml +1415 -0
  3. package/package.json +1 -1
  4. package/rules/cfn/cfn.correctness.attributedefinitions-keyschemas-mismatch.rule.yaml +49 -0
  5. package/rules/cfn/cfn.correctness.base64-validation-of-parameters.rule.yaml +49 -0
  6. package/rules/cfn/cfn.correctness.basic-cloudformation-resource-check.rule.yaml +49 -0
  7. package/rules/cfn/cfn.correctness.basic-cloudformation-template-configuration.rule.yaml +49 -0
  8. package/rules/cfn/cfn.correctness.cannot-reference-resources-in-the-conditions-block-of-the-template.rule.yaml +49 -0
  9. package/rules/cfn/cfn.correctness.check-at-least-one-essential-container-is-specified.rule.yaml +49 -0
  10. package/rules/cfn/cfn.correctness.check-deletionpolicy-values-for-resources.rule.yaml +49 -0
  11. package/rules/cfn/cfn.correctness.check-dependson-values-for-resources.rule.yaml +49 -0
  12. package/rules/cfn/cfn.correctness.check-ec2-ebs-properties.rule.yaml +49 -0
  13. package/rules/cfn/cfn.correctness.check-elastic-cache-redis-cluster-settings.rule.yaml +49 -0
  14. package/rules/cfn/cfn.correctness.check-events-rule-targets-are-less-than-or-equal-to-5.rule.yaml +49 -0
  15. package/rules/cfn/cfn.correctness.check-fargate-service-scheduling-strategy.rule.yaml +49 -0
  16. package/rules/cfn/cfn.correctness.check-fn-and-structure-for-validity.rule.yaml +49 -0
  17. package/rules/cfn/cfn.correctness.check-fn-equals-structure-for-validity.rule.yaml +49 -0
  18. package/rules/cfn/cfn.correctness.check-fn-if-structure-for-validity.rule.yaml +49 -0
  19. package/rules/cfn/cfn.correctness.check-fn-not-structure-for-validity.rule.yaml +49 -0
  20. package/rules/cfn/cfn.correctness.check-fn-or-structure-for-validity.rule.yaml +49 -0
  21. package/rules/cfn/cfn.correctness.check-for-subscriptionfilters-have-beyond-2-attachments-to-a-cloudwatch-log-group.rule.yaml +49 -0
  22. package/rules/cfn/cfn.correctness.check-if-a-json-object-is-within-size-limits.rule.yaml +49 -0
  23. package/rules/cfn/cfn.correctness.check-if-a-list-has-between-min-and-max-number-of-values-specified.rule.yaml +49 -0
  24. package/rules/cfn/cfn.correctness.check-if-a-list-has-duplicate-values.rule.yaml +49 -0
  25. package/rules/cfn/cfn.correctness.check-if-a-number-is-between-min-and-max.rule.yaml +49 -0
  26. package/rules/cfn/cfn.correctness.check-if-a-string-has-between-min-and-max-number-of-values-specified.rule.yaml +49 -0
  27. package/rules/cfn/cfn.correctness.check-if-eol-lambda-function-runtimes-are-used.rule.yaml +49 -0
  28. package/rules/cfn/cfn.correctness.check-if-properties-have-a-valid-value.rule.yaml +49 -0
  29. package/rules/cfn/cfn.correctness.check-if-property-values-adhere-to-a-specific-pattern.rule.yaml +49 -0
  30. package/rules/cfn/cfn.correctness.check-if-refing-to-a-iam-resource-with-path-set.rule.yaml +49 -0
  31. package/rules/cfn/cfn.correctness.check-if-refs-exist.rule.yaml +49 -0
  32. package/rules/cfn/cfn.correctness.check-if-serverless-resources-have-serverless-transform.rule.yaml +49 -0
  33. package/rules/cfn/cfn.correctness.check-if-the-referenced-conditions-are-defined.rule.yaml +49 -0
  34. package/rules/cfn/cfn.correctness.check-minimum-90-period-is-met-between-backupplan-cold-and-delete.rule.yaml +49 -0
  35. package/rules/cfn/cfn.correctness.check-properties-that-are-mutually-exclusive.rule.yaml +49 -0
  36. package/rules/cfn/cfn.correctness.check-properties-that-are-required-together.rule.yaml +49 -0
  37. package/rules/cfn/cfn.correctness.check-properties-that-need-at-least-one-of-a-list-of-properties.rule.yaml +49 -0
  38. package/rules/cfn/cfn.correctness.check-properties-that-need-only-one-of-a-list-of-properties.rule.yaml +49 -0
  39. package/rules/cfn/cfn.correctness.check-resource-properties-values.rule.yaml +49 -0
  40. package/rules/cfn/cfn.correctness.check-state-machine-definition-for-proper-syntax.rule.yaml +49 -0
  41. package/rules/cfn/cfn.correctness.check-that-modules-resources-are-valid.rule.yaml +49 -0
  42. package/rules/cfn/cfn.correctness.check-the-configuration-of-a-resources-updatepolicy.rule.yaml +49 -0
  43. package/rules/cfn/cfn.correctness.check-updatereplacepolicy-values-for-resources.rule.yaml +49 -0
  44. package/rules/cfn/cfn.correctness.check-values-of-properties-for-valid-refs-and-getatts.rule.yaml +49 -0
  45. package/rules/cfn/cfn.correctness.cidr-validation-of-parameters.rule.yaml +49 -0
  46. package/rules/cfn/cfn.correctness.cloudfront-aliases.rule.yaml +49 -0
  47. package/rules/cfn/cfn.correctness.codepipeline-stage-actions.rule.yaml +49 -0
  48. package/rules/cfn/cfn.correctness.codepipeline-stages.rule.yaml +49 -0
  49. package/rules/cfn/cfn.correctness.conditions-have-appropriate-properties.rule.yaml +49 -0
  50. package/rules/cfn/cfn.correctness.default-value-cannot-use-refs.rule.yaml +49 -0
  51. package/rules/cfn/cfn.correctness.default-value-is-within-parameter-constraints.rule.yaml +49 -0
  52. package/rules/cfn/cfn.correctness.error-processing-rule-on-the-template.rule.yaml +49 -0
  53. package/rules/cfn/cfn.correctness.findinmap-validation-of-configuration.rule.yaml +49 -0
  54. package/rules/cfn/cfn.correctness.getatt-validation-of-parameters.rule.yaml +49 -0
  55. package/rules/cfn/cfn.correctness.getaz-validation-of-parameters.rule.yaml +49 -0
  56. package/rules/cfn/cfn.correctness.importvalue-validation-of-parameters.rule.yaml +49 -0
  57. package/rules/cfn/cfn.correctness.join-validation-of-parameters.rule.yaml +49 -0
  58. package/rules/cfn/cfn.correctness.length-validation-of-parameters.rule.yaml +49 -0
  59. package/rules/cfn/cfn.correctness.mapping-attribute-limit-not-exceeded.rule.yaml +49 -0
  60. package/rules/cfn/cfn.correctness.mapping-keys-are-strings-and-alphanumeric.rule.yaml +49 -0
  61. package/rules/cfn/cfn.correctness.mapping-limit-not-exceeded.rule.yaml +49 -0
  62. package/rules/cfn/cfn.correctness.mapping-name-limit-not-exceeded.rule.yaml +49 -0
  63. package/rules/cfn/cfn.correctness.mappings-are-appropriately-configured.rule.yaml +49 -0
  64. package/rules/cfn/cfn.correctness.mappings-have-appropriate-names.rule.yaml +49 -0
  65. package/rules/cfn/cfn.correctness.metadata-interface-have-appropriate-properties.rule.yaml +49 -0
  66. package/rules/cfn/cfn.correctness.output-description-limit-not-exceeded.rule.yaml +49 -0
  67. package/rules/cfn/cfn.correctness.output-limit-not-exceeded.rule.yaml +49 -0
  68. package/rules/cfn/cfn.correctness.output-name-limit-not-exceeded.rule.yaml +49 -0
  69. package/rules/cfn/cfn.correctness.outputs-descriptions-can-only-be-strings.rule.yaml +49 -0
  70. package/rules/cfn/cfn.correctness.outputs-have-appropriate-names.rule.yaml +49 -0
  71. package/rules/cfn/cfn.correctness.outputs-have-appropriate-properties.rule.yaml +49 -0
  72. package/rules/cfn/cfn.correctness.outputs-have-required-properties.rule.yaml +49 -0
  73. package/rules/cfn/cfn.correctness.outputs-have-values-of-strings.rule.yaml +49 -0
  74. package/rules/cfn/cfn.correctness.parameter-limit-not-exceeded.rule.yaml +49 -0
  75. package/rules/cfn/cfn.correctness.parameter-name-limit-not-exceeded.rule.yaml +49 -0
  76. package/rules/cfn/cfn.correctness.parameter-value-limit-not-exceeded.rule.yaml +49 -0
  77. package/rules/cfn/cfn.correctness.parameters-have-appropriate-names.rule.yaml +49 -0
  78. package/rules/cfn/cfn.correctness.parameters-have-appropriate-properties.rule.yaml +49 -0
  79. package/rules/cfn/cfn.correctness.parameters-have-appropriate-type.rule.yaml +49 -0
  80. package/rules/cfn/cfn.correctness.property-is-required-based-on-another-properties-value.rule.yaml +49 -0
  81. package/rules/cfn/cfn.correctness.property-is-unwanted-based-on-another-properties-value.rule.yaml +49 -0
  82. package/rules/cfn/cfn.correctness.rds-instance-type-is-compatible-with-the-rds-type.rule.yaml +49 -0
  83. package/rules/cfn/cfn.correctness.recordset-hostedzonename-is-a-superdomain-of-name.rule.yaml +49 -0
  84. package/rules/cfn/cfn.correctness.ref-validation-of-value.rule.yaml +49 -0
  85. package/rules/cfn/cfn.correctness.required-resource-properties-are-missing.rule.yaml +49 -0
  86. package/rules/cfn/cfn.correctness.resource-dependencies-are-not-circular.rule.yaml +49 -0
  87. package/rules/cfn/cfn.correctness.resource-ec2-security-group-ingress-properties.rule.yaml +49 -0
  88. package/rules/cfn/cfn.correctness.resource-elb-properties.rule.yaml +49 -0
  89. package/rules/cfn/cfn.correctness.resource-limit-not-exceeded.rule.yaml +49 -0
  90. package/rules/cfn/cfn.correctness.resource-name-limit-not-exceeded.rule.yaml +49 -0
  91. package/rules/cfn/cfn.correctness.resource-properties-are-invalid.rule.yaml +49 -0
  92. package/rules/cfn/cfn.correctness.resource-schema.rule.yaml +49 -0
  93. package/rules/cfn/cfn.correctness.resource-subnetroutetableassociation-properties.rule.yaml +49 -0
  94. package/rules/cfn/cfn.correctness.resources-have-appropriate-names.rule.yaml +49 -0
  95. package/rules/cfn/cfn.correctness.select-validation-of-parameters.rule.yaml +49 -0
  96. package/rules/cfn/cfn.correctness.snapstart-supports-the-configured-runtime.rule.yaml +49 -0
  97. package/rules/cfn/cfn.correctness.split-validation-of-parameters.rule.yaml +49 -0
  98. package/rules/cfn/cfn.correctness.sub-is-required-if-a-variable-is-used-in-a-string.rule.yaml +49 -0
  99. package/rules/cfn/cfn.correctness.sub-validation-of-parameters.rule.yaml +49 -0
  100. package/rules/cfn/cfn.correctness.template-description-can-only-be-a-string.rule.yaml +49 -0
  101. package/rules/cfn/cfn.correctness.template-description-limit.rule.yaml +49 -0
  102. package/rules/cfn/cfn.correctness.template-size-limit.rule.yaml +49 -0
  103. package/rules/cfn/cfn.correctness.tojsonstring-validation-of-parameters.rule.yaml +49 -0
  104. package/rules/cfn/cfn.correctness.unique-resource-and-parameter-names.rule.yaml +49 -0
  105. package/rules/cfn/cfn.correctness.validate-accesscontrol-are-set-with-ownershipcontrols.rule.yaml +49 -0
  106. package/rules/cfn/cfn.correctness.validate-aws-event-scheduleexpression-format.rule.yaml +49 -0
  107. package/rules/cfn/cfn.correctness.validate-parameters-for-in-a-nested-stack.rule.yaml +49 -0
  108. package/rules/cfn/cfn.correctness.validate-route53-recordsets.rule.yaml +49 -0
  109. package/rules/cfn/cfn.correctness.validate-the-configuration-of-the-metadata-section.rule.yaml +49 -0
  110. package/rules/cfn/cfn.correctness.validates-foreach-functions.rule.yaml +49 -0
  111. package/rules/cfn/cfn.correctness.validation-not-function-configuration.rule.yaml +49 -0
  112. package/rules/cfn/cfn.correctness.validationdomain-is-superdomain-of-domainname.rule.yaml +49 -0
  113. package/rules/cfn/cfn.maintainability.arns-should-use-correctly-placed-pseudo-parameters.rule.yaml +49 -0
  114. package/rules/cfn/cfn.maintainability.availability-zone-parameters-should-not-be-hardcoded.rule.yaml +49 -0
  115. package/rules/cfn/cfn.maintainability.check-iam-resource-policies-syntax.rule.yaml +49 -0
  116. package/rules/cfn/cfn.maintainability.check-if-a-list-that-allows-duplicates-has-any-duplicates.rule.yaml +49 -0
  117. package/rules/cfn/cfn.maintainability.check-if-conditions-are-used.rule.yaml +49 -0
  118. package/rules/cfn/cfn.maintainability.check-if-eol-lambda-function-runtimes-are-used-w2531.rule.yaml +49 -0
  119. package/rules/cfn/cfn.maintainability.check-if-imageid-parameters-have-the-correct-type.rule.yaml +49 -0
  120. package/rules/cfn/cfn.maintainability.check-if-mappings-are-used.rule.yaml +49 -0
  121. package/rules/cfn/cfn.maintainability.check-if-parameters-are-used.rule.yaml +49 -0
  122. package/rules/cfn/cfn.maintainability.check-if-parameters-have-a-valid-value-based-on-an-allowed-pattern.rule.yaml +49 -0
  123. package/rules/cfn/cfn.maintainability.check-if-parameters-have-a-valid-value.rule.yaml +49 -0
  124. package/rules/cfn/cfn.maintainability.check-obsolete-dependson-configuration-for-resources.rule.yaml +49 -0
  125. package/rules/cfn/cfn.maintainability.check-outputs-using-importvalue.rule.yaml +49 -0
  126. package/rules/cfn/cfn.maintainability.check-required-properties-for-lambda-if-the-deployment-package-is-a-zip-file.rule.yaml +49 -0
  127. package/rules/cfn/cfn.maintainability.check-resources-with-auto-expiring-content-have-explicit-retention-period.rule.yaml +49 -0
  128. package/rules/cfn/cfn.maintainability.check-resources-with-updatereplacepolicy-deletionpolicy-have-both.rule.yaml +49 -0
  129. package/rules/cfn/cfn.maintainability.check-stateful-resources-have-a-set-updatereplacepolicy-deletionpolicy.rule.yaml +49 -0
  130. package/rules/cfn/cfn.maintainability.checks-for-legacy-instance-type-generations.rule.yaml +49 -0
  131. package/rules/cfn/cfn.maintainability.findinmap-keys-exist-in-the-map.rule.yaml +49 -0
  132. package/rules/cfn/cfn.maintainability.fn-equals-will-always-return-true-or-false.rule.yaml +49 -0
  133. package/rules/cfn/cfn.maintainability.mapping-attribute-limit.rule.yaml +49 -0
  134. package/rules/cfn/cfn.maintainability.mapping-limit.rule.yaml +49 -0
  135. package/rules/cfn/cfn.maintainability.mapping-name-limit.rule.yaml +49 -0
  136. package/rules/cfn/cfn.maintainability.metadata-interface-parameters-exist.rule.yaml +49 -0
  137. package/rules/cfn/cfn.maintainability.output-description-limit.rule.yaml +49 -0
  138. package/rules/cfn/cfn.maintainability.output-limit.rule.yaml +49 -0
  139. package/rules/cfn/cfn.maintainability.output-name-limit.rule.yaml +49 -0
  140. package/rules/cfn/cfn.maintainability.parameter-limit.rule.yaml +49 -0
  141. package/rules/cfn/cfn.maintainability.parameter-memory-size-attributes-should-have-max-and-min.rule.yaml +49 -0
  142. package/rules/cfn/cfn.maintainability.parameter-name-limit.rule.yaml +49 -0
  143. package/rules/cfn/cfn.maintainability.parameter-value-limit.rule.yaml +49 -0
  144. package/rules/cfn/cfn.maintainability.ref-getatt-to-resource-that-is-available-when-conditions-are-applied.rule.yaml +49 -0
  145. package/rules/cfn/cfn.maintainability.resource-limit.rule.yaml +49 -0
  146. package/rules/cfn/cfn.maintainability.resource-name-limit.rule.yaml +49 -0
  147. package/rules/cfn/cfn.maintainability.sub-isn-t-needed-if-it-doesn-t-have-a-variable-defined.rule.yaml +49 -0
  148. package/rules/cfn/cfn.maintainability.sub-validation-of-parameters-w1019.rule.yaml +49 -0
  149. package/rules/cfn/cfn.maintainability.template-description-limit-i1003.rule.yaml +49 -0
  150. package/rules/cfn/cfn.maintainability.template-size-limit-i1002.rule.yaml +49 -0
  151. package/rules/cfn/cfn.maintainability.use-sub-instead-of-join.rule.yaml +49 -0
  152. package/rules/cfn/cfn.maintainability.validate-that-snapstart-is-configured-for-java11-runtimes.rule.yaml +49 -0
  153. package/rules/cfn/cfn.maintainability.validate-that-snapstart-is-properly-configured.rule.yaml +49 -0
  154. package/rules/cfn/cfn.maintainability.warn-when-properties-are-configured-to-only-work-with-the-package-command.rule.yaml +49 -0
  155. package/rules/cfn/cfn.security.check-dynamic-references-secure-strings-are-in-supported-locations.rule.yaml +53 -0
  156. package/rules/cfn/cfn.security.check-for-noecho-references.rule.yaml +53 -0
  157. package/rules/cfn/cfn.security.check-iam-permission-configuration.rule.yaml +53 -0
  158. package/rules/cfn/cfn.security.check-if-iam-policies-are-properly-configured.rule.yaml +53 -0
  159. package/rules/cfn/cfn.security.check-if-password-properties-are-correctly-configured.rule.yaml +53 -0
  160. package/rules/cfn/cfn.security.controlling-access-to-an-s3-bucket-should-be-done-with-bucket-policies.rule.yaml +53 -0
  161. package/rules/go/go.correctness.defer-close-before-check.rule.yaml +44 -0
  162. package/rules/go/go.correctness.defer-in-loop.rule.yaml +47 -0
  163. package/rules/go/go.correctness.nil-context-passed.rule.yaml +43 -0
  164. package/rules/go/go.correctness.nil-map-assignment.rule.yaml +42 -0
  165. package/rules/go/go.correctness.time-tick-leak.rule.yaml +44 -0
  166. package/rules/go/go.correctness.unused-append-result.rule.yaml +43 -0
  167. package/rules/go/go.correctness.waitgroup-add-in-goroutine.rule.yaml +45 -0
  168. package/rules/go/go.security.bind-all-interfaces.rule.yaml +57 -0
  169. package/rules/go/go.security.echo-sensitive-binding-without-validation.rule.yaml +10 -0
  170. package/rules/go/go.security.echo-unsafe-multipart-upload.rule.yaml +10 -0
  171. package/rules/go/go.security.fiber-sensitive-binding-without-validation.rule.yaml +10 -0
  172. package/rules/go/go.security.fiber-unsafe-multipart-upload.rule.yaml +10 -0
  173. package/rules/go/go.security.gin-sensitive-binding-without-validation.rule.yaml +10 -0
  174. package/rules/go/go.security.gin-trust-all-proxies.rule.yaml +10 -0
  175. package/rules/go/go.security.gin-wildcard-cors-with-credentials.rule.yaml +10 -0
  176. package/rules/go/go.security.insecure-rand-seed.rule.yaml +55 -0
  177. package/rules/go/go.security.insecure-ssh-host-key.rule.yaml +57 -0
  178. package/rules/go/go.security.insecure-ssl-protocol.rule.yaml +56 -0
  179. package/rules/go/go.security.insecure-temp-file.rule.yaml +57 -0
  180. package/rules/go/go.security.jwt-without-verification.rule.yaml +56 -0
  181. package/rules/go/go.security.net-http-missing-timeouts.rule.yaml +10 -0
  182. package/rules/go/go.security.pprof-exposed.rule.yaml +56 -0
  183. package/rules/go/go.security.sensitive-data-egress.rule.yaml +10 -0
  184. package/rules/go/go.security.tar-path-traversal.rule.yaml +10 -0
  185. package/rules/go/go.security.template-unescaped-request-value.rule.yaml +10 -0
  186. package/rules/go/go.security.tls-missing-min-version.rule.yaml +55 -0
  187. package/rules/go/go.security.unsafe-package-import.rule.yaml +55 -0
  188. package/rules/go/go.security.weak-bcrypt-cost.rule.yaml +56 -0
  189. package/rules/go/go.security.weak-crypto-import.rule.yaml +57 -0
  190. package/rules/go/go.security.weak-rsa-key-size.rule.yaml +57 -0
  191. package/rules/go/go.security.weak-tls-cipher.rule.yaml +56 -0
  192. package/rules/java/java.correctness.catch-null-pointer.rule.yaml +40 -0
  193. package/rules/java/java.correctness.empty-catch.rule.yaml +40 -0
  194. package/rules/java/java.correctness.equals-on-array.rule.yaml +40 -0
  195. package/rules/java/java.correctness.return-in-finally.rule.yaml +40 -0
  196. package/rules/java/java.correctness.sync-on-string-literal.rule.yaml +40 -0
  197. package/rules/java/java.correctness.unsafe-optional-get.rule.yaml +40 -0
  198. package/rules/java/java.security.android-screenshot-exposure.rule.yaml +13 -0
  199. package/rules/java/java.security.android-world-readable-mode.rule.yaml +13 -0
  200. package/rules/java/java.security.hibernate-sql-concatenation.rule.yaml +62 -0
  201. package/rules/java/java.security.insecure-cipher-mode.rule.yaml +52 -0
  202. package/rules/java/java.security.insecure-network-protocol.rule.yaml +52 -0
  203. package/rules/java/java.security.insecure-ssl-context.rule.yaml +52 -0
  204. package/rules/java/java.security.jpa-concatenated-query.rule.yaml +13 -0
  205. package/rules/java/java.security.jwt-without-verification.rule.yaml +53 -0
  206. package/rules/java/java.security.null-cipher.rule.yaml +52 -0
  207. package/rules/java/java.security.permissive-cors.rule.yaml +53 -0
  208. package/rules/java/java.security.predictable-securerandom.rule.yaml +59 -0
  209. package/rules/java/java.security.reflected-output-from-request.rule.yaml +10 -0
  210. package/rules/java/java.security.servlet-insecure-cookie.rule.yaml +13 -0
  211. package/rules/java/java.security.shell-runtime-exec.rule.yaml +58 -0
  212. package/rules/java/java.security.spring-actuator-health-details-always.rule.yaml +13 -0
  213. package/rules/java/java.security.spring-actuator-sensitive-exposure.rule.yaml +13 -0
  214. package/rules/java/java.security.spring-csrf-globally-disabled.rule.yaml +13 -0
  215. package/rules/java/java.security.spring-debug-exposure.rule.yaml +13 -0
  216. package/rules/java/java.security.spring-permit-all-default.rule.yaml +13 -0
  217. package/rules/java/java.security.spring-webmvc-unrestricted-data-binding.rule.yaml +13 -0
  218. package/rules/java/java.security.template-unescaped-user-output.rule.yaml +10 -0
  219. package/rules/java/java.security.trust-all-certificates.rule.yaml +52 -0
  220. package/rules/java/java.security.unsafe-jackson-deserialization.rule.yaml +59 -0
  221. package/rules/java/java.security.weak-rsa-key-size.rule.yaml +54 -0
  222. package/rules/java/java.security.xxe-document-builder.rule.yaml +59 -0
  223. package/rules/java/java.security.xxe-xml-input-factory.rule.yaml +59 -0
  224. package/rules/php/php.correctness.abstract-method-outside-abstract-class.rule.yaml +36 -0
  225. package/rules/php/php.correctness.break-continue-outside-loop.rule.yaml +36 -0
  226. package/rules/php/php.correctness.case-insensitive-define.rule.yaml +36 -0
  227. package/rules/php/php.correctness.default-parameter-not-last.rule.yaml +36 -0
  228. package/rules/php/php.correctness.deprecated-filter-constant.rule.yaml +36 -0
  229. package/rules/php/php.correctness.deprecated-libxml-entity-loader.rule.yaml +36 -0
  230. package/rules/php/php.correctness.deprecated-unset-cast.rule.yaml +36 -0
  231. package/rules/php/php.correctness.duplicate-array-key.rule.yaml +36 -0
  232. package/rules/php/php.correctness.duplicate-declaration.rule.yaml +36 -0
  233. package/rules/php/php.correctness.empty-array-literal-slot.rule.yaml +36 -0
  234. package/rules/php/php.correctness.empty-bracket-array-access.rule.yaml +36 -0
  235. package/rules/php/php.correctness.empty-code-block.rule.yaml +36 -0
  236. package/rules/php/php.correctness.empty-function-body.rule.yaml +36 -0
  237. package/rules/php/php.correctness.error-suppression-operator.rule.yaml +36 -0
  238. package/rules/php/php.correctness.function-comparison.rule.yaml +36 -0
  239. package/rules/php/php.correctness.invalid-cookie-options.rule.yaml +36 -0
  240. package/rules/php/php.correctness.invalid-regex-literal.rule.yaml +36 -0
  241. package/rules/php/php.correctness.missing-member-visibility.rule.yaml +36 -0
  242. package/rules/php/php.correctness.nested-function-declaration.rule.yaml +36 -0
  243. package/rules/php/php.correctness.nested-switch.rule.yaml +36 -0
  244. package/rules/php/php.correctness.nullsafe-returned-by-reference.rule.yaml +36 -0
  245. package/rules/php/php.correctness.redundant-string-cast-concat.rule.yaml +36 -0
  246. package/rules/php/php.correctness.self-assignment.rule.yaml +36 -0
  247. package/rules/php/php.correctness.switch-multiple-default.rule.yaml +36 -0
  248. package/rules/php/php.correctness.todo-fixme-marker.rule.yaml +36 -0
  249. package/rules/php/php.correctness.unknown-magic-method.rule.yaml +36 -0
  250. package/rules/php/php.correctness.unreachable-after-return.rule.yaml +36 -0
  251. package/rules/php/php.correctness.useless-post-increment.rule.yaml +36 -0
  252. package/rules/php/php.correctness.useless-unset.rule.yaml +36 -0
  253. package/rules/php/php.performance.expensive-loop-condition.rule.yaml +36 -0
  254. package/rules/php/php.security.debug-function-exposure.rule.yaml +55 -0
  255. package/rules/php/php.security.insecure-cors-wildcard-with-credentials.rule.yaml +10 -0
  256. package/rules/php/php.security.insecure-mail-or-file-transport.rule.yaml +10 -0
  257. package/rules/php/php.security.insecure-session-id-generation.rule.yaml +51 -0
  258. package/rules/php/php.security.insecure-session-or-cookie-config.rule.yaml +10 -0
  259. package/rules/php/php.security.laravel-sensitive-csrf-exclusion.rule.yaml +13 -0
  260. package/rules/php/php.security.laravel-unsafe-blade-output.rule.yaml +13 -0
  261. package/rules/php/php.security.laravel-unsafe-mass-assignment.rule.yaml +13 -0
  262. package/rules/php/php.security.no-dynamic-eval.rule.yaml +52 -0
  263. package/rules/php/php.security.sensitive-data-egress.rule.yaml +10 -0
  264. package/rules/php/php.security.symfony-csrf-disabled.rule.yaml +13 -0
  265. package/rules/php/php.security.symfony-debug-exposure.rule.yaml +13 -0
  266. package/rules/php/php.security.unsafe-file-upload-handling.rule.yaml +10 -0
  267. package/rules/php/php.security.unsafe-include-with-user-input.rule.yaml +52 -0
  268. package/rules/php/php.security.unsafe-new-static.rule.yaml +42 -0
  269. package/rules/php/php.security.weak-cipher.rule.yaml +51 -0
  270. package/rules/php/php.security.wordpress-missing-nonce-or-capability.rule.yaml +13 -0
  271. package/rules/php/php.security.wordpress-unprepared-sql.rule.yaml +13 -0
  272. package/rules/php/php.security.xml-external-entity.rule.yaml +53 -0
  273. package/rules/python/py.correctness.assert-on-tuple.rule.yaml +33 -0
  274. package/rules/python/py.correctness.bare-except.rule.yaml +33 -0
  275. package/rules/python/py.correctness.broad-exception-handler.rule.yaml +33 -0
  276. package/rules/python/py.correctness.dangerous-mutable-default.rule.yaml +33 -0
  277. package/rules/python/py.correctness.duplicate-dict-key.rule.yaml +33 -0
  278. package/rules/python/py.security.bind-all-interfaces.rule.yaml +55 -0
  279. package/rules/python/py.security.debugger-import.rule.yaml +55 -0
  280. package/rules/python/py.security.django-csrf-exempt-state-changing.rule.yaml +13 -0
  281. package/rules/python/py.security.django-format-html-unsafe.rule.yaml +56 -0
  282. package/rules/python/py.security.django-mark-safe.rule.yaml +56 -0
  283. package/rules/python/py.security.django-missing-csrf-middleware.rule.yaml +13 -0
  284. package/rules/python/py.security.django-security-middleware-missing.rule.yaml +60 -0
  285. package/rules/python/py.security.django-unsafe-production-settings.rule.yaml +13 -0
  286. package/rules/python/py.security.drf-allow-any-default.rule.yaml +13 -0
  287. package/rules/python/py.security.drf-allow-any-unsafe-method.rule.yaml +13 -0
  288. package/rules/python/py.security.dynamic-code-execution.rule.yaml +55 -0
  289. package/rules/python/py.security.fastapi-insecure-cors.rule.yaml +13 -0
  290. package/rules/python/py.security.flask-debug-enabled.rule.yaml +56 -0
  291. package/rules/python/py.security.flask-missing-upload-body-limit.rule.yaml +13 -0
  292. package/rules/python/py.security.flask-unsafe-html-output.rule.yaml +13 -0
  293. package/rules/python/py.security.flask-unsafe-upload-filename.rule.yaml +13 -0
  294. package/rules/python/py.security.insecure-temp-file.rule.yaml +55 -0
  295. package/rules/python/py.security.insecure-yaml-load.rule.yaml +55 -0
  296. package/rules/python/py.security.jinja-autoescape-disabled.rule.yaml +58 -0
  297. package/rules/python/py.security.subprocess-shell-enabled.rule.yaml +55 -0
  298. package/rules/ruby/ruby.bug-risk.assignment-in-condition.rule.yaml +42 -0
  299. package/rules/ruby/ruby.bug-risk.deprecated-uri-escape.rule.yaml +42 -0
  300. package/rules/ruby/ruby.bug-risk.division-by-zero.rule.yaml +42 -0
  301. package/rules/ruby/ruby.bug-risk.duplicate-hash-keys.rule.yaml +42 -0
  302. package/rules/ruby/ruby.bug-risk.exception-class-overwritten.rule.yaml +42 -0
  303. package/rules/ruby/ruby.bug-risk.raw-sql-without-squish.rule.yaml +42 -0
  304. package/rules/ruby/ruby.security.debugger-call.rule.yaml +53 -0
  305. package/rules/ruby/ruby.security.dynamic-code-execution.rule.yaml +54 -0
  306. package/rules/ruby/ruby.security.insecure-json-load.rule.yaml +53 -0
  307. package/rules/ruby/ruby.security.kernel-open.rule.yaml +53 -0
  308. package/rules/ruby/ruby.security.plaintext-password-in-callback.rule.yaml +46 -0
  309. package/rules/ruby/ruby.security.rails-csrf-disabled.rule.yaml +13 -0
  310. package/rules/ruby/ruby.security.rails-detailed-exceptions-enabled.rule.yaml +13 -0
  311. package/rules/ruby/ruby.security.rails-link-to-blank-without-noopener.rule.yaml +48 -0
  312. package/rules/ruby/ruby.security.rails-open-redirect.rule.yaml +13 -0
  313. package/rules/ruby/ruby.security.rails-output-unsafe.rule.yaml +47 -0
  314. package/rules/ruby/ruby.security.rails-unsafe-html-output.rule.yaml +13 -0
  315. package/rules/ruby/ruby.security.rails-unsafe-render.rule.yaml +13 -0
  316. package/rules/ruby/ruby.security.rails-unsafe-session-or-cookie-store.rule.yaml +13 -0
  317. package/rules/ruby/ruby.security.rails-unsafe-strong-parameters.rule.yaml +13 -0
  318. package/rules/ruby/ruby.security.sensitive-data-egress.rule.yaml +10 -0
  319. package/rules/ruby/ruby.security.sidekiq-web-unauthenticated-mount.rule.yaml +10 -0
  320. package/rules/rust/rust.correctness.block-on-in-async.rule.yaml +48 -0
  321. package/rules/rust/rust.correctness.forget-join-handle.rule.yaml +48 -0
  322. package/rules/rust/rust.correctness.mutex-held-across-await.rule.yaml +48 -0
  323. package/rules/rust/rust.correctness.std-mutex-in-async-fn.rule.yaml +48 -0
  324. package/rules/rust/rust.correctness.thread-sleep-in-async.rule.yaml +48 -0
  325. package/rules/rust/rust.correctness.unbounded-channel.rule.yaml +49 -0
  326. package/rules/rust/rust.correctness.unchecked-index.rule.yaml +46 -0
  327. package/rules/rust/rust.security.actix-wildcard-cors-with-credentials.rule.yaml +13 -0
  328. package/rules/rust/rust.security.axum-body-limit-disabled.rule.yaml +13 -0
  329. package/rules/rust/rust.security.axum-insecure-cors-with-credentials.rule.yaml +13 -0
  330. package/rules/rust/rust.security.bind-all-interfaces.rule.yaml +57 -0
  331. package/rules/rust/rust.security.insecure-ssh-host-key.rule.yaml +57 -0
  332. package/rules/rust/rust.security.insecure-ssl-protocol.rule.yaml +57 -0
  333. package/rules/rust/rust.security.insecure-temp-file.rule.yaml +57 -0
  334. package/rules/rust/rust.security.insecure-yaml-load.rule.yaml +57 -0
  335. package/rules/rust/rust.security.jwt-without-verification.rule.yaml +57 -0
  336. package/rules/rust/rust.security.panic-in-async-handler.rule.yaml +57 -0
  337. package/rules/rust/rust.security.rocket-panic-prone-request-handler.rule.yaml +13 -0
  338. package/rules/rust/rust.security.rocket-unsafe-template-output.rule.yaml +13 -0
  339. package/rules/rust/rust.security.shell-command-spawn.rule.yaml +57 -0
  340. package/rules/rust/rust.security.sqlx-diesel-raw-interpolated-query.rule.yaml +13 -0
  341. package/rules/rust/rust.security.template-unescaped-request-value.rule.yaml +10 -0
  342. package/rules/rust/rust.security.tls-missing-min-version.rule.yaml +57 -0
  343. package/rules/rust/rust.security.warp-blocking-or-panic-in-async-handler.rule.yaml +13 -0
  344. package/rules/rust/rust.security.weak-crypto-import.rule.yaml +55 -0
  345. package/rules/rust/rust.security.weak-rsa-key-size.rule.yaml +57 -0
  346. package/rules/rust/rust.security.weak-tls-cipher.rule.yaml +57 -0
  347. package/rules/shared/security.archive-path-traversal.rule.yaml +10 -0
  348. package/rules/shared/security.external-file-upload.rule.yaml +10 -0
  349. package/rules/shared/security.insecure-http-transport.rule.yaml +10 -0
  350. package/rules/shared/security.no-command-execution-with-request-input.rule.yaml +10 -0
  351. package/rules/shared/security.no-hardcoded-credentials.rule.yaml +10 -0
  352. package/rules/shared/security.no-request-path-file-read.rule.yaml +10 -0
  353. package/rules/shared/security.no-sensitive-data-in-logs-and-telemetry.rule.yaml +10 -0
  354. package/rules/shared/security.no-sql-interpolation.rule.yaml +10 -0
  355. package/rules/shared/security.permissive-file-permissions.rule.yaml +10 -0
  356. package/rules/shared/security.sensitive-data-egress.rule.yaml +10 -0
  357. package/rules/shared/security.tls-verification-disabled.rule.yaml +10 -0
  358. package/rules/shared/security.unsafe-deserialization.rule.yaml +10 -0
  359. package/rules/shared/security.weak-hash-algorithm.rule.yaml +10 -0
  360. package/rules/typescript/ts.correctness.array-callback-missing-return.rule.yaml +35 -0
  361. package/rules/typescript/ts.correctness.array-sort-without-compare.rule.yaml +35 -0
  362. package/rules/typescript/ts.correctness.control-flow-in-finally.rule.yaml +35 -0
  363. package/rules/typescript/ts.correctness.duplicate-if-else-condition.rule.yaml +35 -0
  364. package/rules/typescript/ts.correctness.for-in-on-array.rule.yaml +35 -0
  365. package/rules/typescript/ts.correctness.infinite-loop.rule.yaml +32 -0
  366. package/rules/typescript/ts.correctness.invalid-await-expression.rule.yaml +32 -0
  367. package/rules/typescript/ts.correctness.invalid-typeof-comparison.rule.yaml +35 -0
  368. package/rules/typescript/ts.correctness.missing-async-on-promise-method.rule.yaml +32 -0
  369. package/rules/typescript/ts.correctness.missing-super-call.rule.yaml +35 -0
  370. package/rules/typescript/ts.correctness.no-floating-promise-in-function.rule.yaml +32 -0
  371. package/rules/typescript/ts.correctness.no-misused-promises.rule.yaml +32 -0
  372. package/rules/typescript/ts.correctness.promise-reject-non-error.rule.yaml +35 -0
  373. package/rules/typescript/ts.correctness.this-before-super.rule.yaml +35 -0
  374. package/rules/typescript/ts.correctness.unnecessary-return-await.rule.yaml +32 -0
  375. package/rules/typescript/ts.correctness.use-number-is-nan.rule.yaml +35 -0
  376. package/rules/typescript/ts.next.server-action-missing-local-auth.rule.yaml +13 -0
  377. package/rules/typescript/ts.performance.no-await-in-loop.rule.yaml +32 -0
  378. package/rules/typescript/ts.quality.no-empty-function.rule.yaml +32 -0
  379. package/rules/typescript/ts.react.no-bind-in-jsx-props.rule.yaml +36 -0
  380. package/rules/typescript/ts.react.no-children-prop.rule.yaml +34 -0
  381. package/rules/typescript/ts.react.no-direct-state-mutation.rule.yaml +34 -0
  382. package/rules/typescript/ts.react.no-duplicate-jsx-attributes.rule.yaml +34 -0
  383. package/rules/typescript/ts.react.no-jsx-props-spread.rule.yaml +35 -0
  384. package/rules/typescript/ts.react.no-set-state-in-component-did-mount.rule.yaml +34 -0
  385. package/rules/typescript/ts.react.no-set-state-in-component-did-update.rule.yaml +34 -0
  386. package/rules/typescript/ts.react.no-target-blank-without-rel.rule.yaml +46 -0
  387. package/rules/typescript/ts.react.no-this-in-function-component.rule.yaml +34 -0
  388. package/rules/typescript/ts.runtime.no-process-exit.rule.yaml +44 -0
  389. package/rules/typescript/ts.security.ajv-insecure-configuration.rule.yaml +10 -0
  390. package/rules/typescript/ts.security.angular-dom-sanitizer-bypass-untrusted-input.rule.yaml +13 -0
  391. package/rules/typescript/ts.security.apollo-server-csrf-disabled.rule.yaml +16 -0
  392. package/rules/typescript/ts.security.apollo-server-graphql-dev-tooling-exposure.rule.yaml +16 -0
  393. package/rules/typescript/ts.security.apollo-server-introspection-exposure.rule.yaml +16 -0
  394. package/rules/typescript/ts.security.apollo-server-missing-query-limits.rule.yaml +16 -0
  395. package/rules/typescript/ts.security.astro-vite-public-secret-define.rule.yaml +13 -0
  396. package/rules/typescript/ts.security.bind-to-all-interfaces.rule.yaml +10 -0
  397. package/rules/typescript/ts.security.browser-token-storage.rule.yaml +10 -0
  398. package/rules/typescript/ts.security.dangerous-insert-html.rule.yaml +10 -0
  399. package/rules/typescript/ts.security.dangerously-set-inner-html.rule.yaml +10 -0
  400. package/rules/typescript/ts.security.datadog-browser-track-user-interactions.rule.yaml +10 -0
  401. package/rules/typescript/ts.security.debug-mode-enabled.rule.yaml +10 -0
  402. package/rules/typescript/ts.security.debug-statement-in-source.rule.yaml +10 -0
  403. package/rules/typescript/ts.security.dynamodb-query-injection.rule.yaml +10 -0
  404. package/rules/typescript/ts.security.electron-dangerous-webpreferences.rule.yaml +10 -0
  405. package/rules/typescript/ts.security.electron-insecure-local-state.rule.yaml +10 -0
  406. package/rules/typescript/ts.security.electron-missing-ipc-origin-check.rule.yaml +10 -0
  407. package/rules/typescript/ts.security.electron-shell-open-external-unvalidated.rule.yaml +13 -0
  408. package/rules/typescript/ts.security.exposed-directory-listing.rule.yaml +10 -0
  409. package/rules/typescript/ts.security.express-cookie-missing-http-only.rule.yaml +16 -0
  410. package/rules/typescript/ts.security.express-default-cookie-config.rule.yaml +16 -0
  411. package/rules/typescript/ts.security.express-default-session-config.rule.yaml +16 -0
  412. package/rules/typescript/ts.security.express-error-handler-information-disclosure.rule.yaml +16 -0
  413. package/rules/typescript/ts.security.express-insecure-cookie.rule.yaml +16 -0
  414. package/rules/typescript/ts.security.express-missing-helmet.rule.yaml +16 -0
  415. package/rules/typescript/ts.security.express-nosql-injection.rule.yaml +16 -0
  416. package/rules/typescript/ts.security.express-permissive-cookie-config.rule.yaml +16 -0
  417. package/rules/typescript/ts.security.express-permissive-cors.rule.yaml +52 -0
  418. package/rules/typescript/ts.security.express-reduce-fingerprint.rule.yaml +16 -0
  419. package/rules/typescript/ts.security.express-static-assets-after-session.rule.yaml +16 -0
  420. package/rules/typescript/ts.security.express-static-dotfiles-allow.rule.yaml +16 -0
  421. package/rules/typescript/ts.security.express-unbounded-body-parser.rule.yaml +16 -0
  422. package/rules/typescript/ts.security.express-user-controlled-static-mount.rule.yaml +16 -0
  423. package/rules/typescript/ts.security.external-file-upload.rule.yaml +10 -0
  424. package/rules/typescript/ts.security.fastify-excessive-body-limit.rule.yaml +16 -0
  425. package/rules/typescript/ts.security.fastify-public-bind-without-trust-proxy.rule.yaml +16 -0
  426. package/rules/typescript/ts.security.file-generation.rule.yaml +10 -0
  427. package/rules/typescript/ts.security.format-string-using-user-input.rule.yaml +10 -0
  428. package/rules/typescript/ts.security.frontend-only-authorization.rule.yaml +10 -0
  429. package/rules/typescript/ts.security.graphql-upload-without-csrf-guard.rule.yaml +16 -0
  430. package/rules/typescript/ts.security.handlebars-no-escape.rule.yaml +10 -0
  431. package/rules/typescript/ts.security.hardcoded-auth-secret.rule.yaml +10 -0
  432. package/rules/typescript/ts.security.iframe-missing-sandbox-attribute.rule.yaml +10 -0
  433. package/rules/typescript/ts.security.import-using-user-input.rule.yaml +10 -0
  434. package/rules/typescript/ts.security.information-leakage.rule.yaml +10 -0
  435. package/rules/typescript/ts.security.insecure-allow-origin.rule.yaml +10 -0
  436. package/rules/typescript/ts.security.insecure-auth-cookie-flags.rule.yaml +10 -0
  437. package/rules/typescript/ts.security.insecure-content-security-policy-literal.rule.yaml +10 -0
  438. package/rules/typescript/ts.security.insecure-helmet-hardening-options.rule.yaml +10 -0
  439. package/rules/typescript/ts.security.insecure-password-hash-configuration.rule.yaml +10 -0
  440. package/rules/typescript/ts.security.insecure-websocket-transport.rule.yaml +10 -0
  441. package/rules/typescript/ts.security.insufficiently-random-values.rule.yaml +10 -0
  442. package/rules/typescript/ts.security.jwt-insecure-signing-algorithm.rule.yaml +10 -0
  443. package/rules/typescript/ts.security.jwt-not-revoked.rule.yaml +10 -0
  444. package/rules/typescript/ts.security.jwt-sensitive-claims.rule.yaml +10 -0
  445. package/rules/typescript/ts.security.legacy-buffer-constructor.rule.yaml +10 -0
  446. package/rules/typescript/ts.security.log-injection.rule.yaml +10 -0
  447. package/rules/typescript/ts.security.manual-html-sanitization.rule.yaml +10 -0
  448. package/rules/typescript/ts.security.missing-authorization-before-sensitive-action.rule.yaml +10 -0
  449. package/rules/typescript/ts.security.missing-integrity-check.rule.yaml +10 -0
  450. package/rules/typescript/ts.security.missing-message-origin-check.rule.yaml +10 -0
  451. package/rules/typescript/ts.security.missing-ownership-validation.rule.yaml +10 -0
  452. package/rules/typescript/ts.security.missing-request-timeout-or-retry.rule.yaml +10 -0
  453. package/rules/typescript/ts.security.nestjs-helmet-after-route-mount.rule.yaml +16 -0
  454. package/rules/typescript/ts.security.nestjs-missing-global-validation-pipe.rule.yaml +16 -0
  455. package/rules/typescript/ts.security.nestjs-skip-throttle-sensitive-route.rule.yaml +16 -0
  456. package/rules/typescript/ts.security.nestjs-validation-pipe-without-whitelist.rule.yaml +16 -0
  457. package/rules/typescript/ts.security.no-alert-confirm-prompt.rule.yaml +44 -0
  458. package/rules/typescript/ts.security.no-arguments-callee.rule.yaml +44 -0
  459. package/rules/typescript/ts.security.no-assign-mutable-export.rule.yaml +45 -0
  460. package/rules/typescript/ts.security.no-dynamic-execution.rule.yaml +10 -0
  461. package/rules/typescript/ts.security.no-fs-readfile-sync-in-handler.rule.yaml +46 -0
  462. package/rules/typescript/ts.security.no-global-native-reassignment.rule.yaml +44 -0
  463. package/rules/typescript/ts.security.no-innerhtml-assignment.rule.yaml +10 -0
  464. package/rules/typescript/ts.security.no-javascript-url.rule.yaml +44 -0
  465. package/rules/typescript/ts.security.no-native-prototype-extension.rule.yaml +44 -0
  466. package/rules/typescript/ts.security.no-sync-child-process-exec.rule.yaml +45 -0
  467. package/rules/typescript/ts.security.no-throw-literal.rule.yaml +44 -0
  468. package/rules/typescript/ts.security.no-with-statement.rule.yaml +44 -0
  469. package/rules/typescript/ts.security.non-literal-fs-filename.rule.yaml +10 -0
  470. package/rules/typescript/ts.security.nuxt-public-runtime-secret.rule.yaml +13 -0
  471. package/rules/typescript/ts.security.observable-timing-discrepancy.rule.yaml +10 -0
  472. package/rules/typescript/ts.security.open-redirect.rule.yaml +10 -0
  473. package/rules/typescript/ts.security.permissive-allow-origin.rule.yaml +10 -0
  474. package/rules/typescript/ts.security.permissive-file-permissions.rule.yaml +10 -0
  475. package/rules/typescript/ts.security.postmessage-wildcard-origin.rule.yaml +10 -0
  476. package/rules/typescript/ts.security.predictable-token-generation.rule.yaml +10 -0
  477. package/rules/typescript/ts.security.raw-html-using-user-input.rule.yaml +10 -0
  478. package/rules/typescript/ts.security.request-driven-array-index-access.rule.yaml +10 -0
  479. package/rules/typescript/ts.security.sensitive-data-egress.rule.yaml +10 -0
  480. package/rules/typescript/ts.security.sensitive-data-in-exception.rule.yaml +10 -0
  481. package/rules/typescript/ts.security.sensitive-data-written-to-file.rule.yaml +10 -0
  482. package/rules/typescript/ts.security.ssrf.rule.yaml +10 -0
  483. package/rules/typescript/ts.security.token-or-session-not-validated.rule.yaml +10 -0
  484. package/rules/typescript/ts.security.ui-redress.rule.yaml +10 -0
  485. package/rules/typescript/ts.security.unsafe-dirname-path-concat.rule.yaml +44 -0
  486. package/rules/typescript/ts.security.unsafe-dompurify-version.rule.yaml +10 -0
  487. package/rules/typescript/ts.security.unsafe-marked-version.rule.yaml +10 -0
  488. package/rules/typescript/ts.security.unsanitized-http-response.rule.yaml +10 -0
  489. package/rules/typescript/ts.security.unvalidated-external-input.rule.yaml +10 -0
  490. package/rules/typescript/ts.security.user-controlled-sendfile.rule.yaml +10 -0
  491. package/rules/typescript/ts.security.user-controlled-view-render.rule.yaml +10 -0
  492. package/rules/typescript/ts.security.weak-cipher-or-mode.rule.yaml +10 -0
  493. package/rules/typescript/ts.security.weak-key-strength.rule.yaml +10 -0
  494. package/rules/typescript/ts.security.weak-tls-version.rule.yaml +10 -0
  495. package/rules/typescript/ts.security.xml-parse-string-with-untrusted-input.rule.yaml +10 -0
@@ -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
+
@@ -5,6 +5,15 @@ metadata:
5
5
  title: Use authenticated encryption for secrets and tokens
6
6
  summary: Session, cookie, and token encryption should provide integrity protection in the same helper.
7
7
  rationale: Confidentiality-only encryption leaves secret-bearing values vulnerable to tampering unless the code also applies an integrity check or uses an authenticated 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
@@ -34,3 +43,4 @@ emit:
34
43
  summary: "`${captures.issue.text}` encrypts a secret-bearing value without authenticated encryption or a same-helper integrity check."
35
44
  remediation:
36
45
  summary: Prefer authenticated encryption such as AES-GCM, or pair non-AEAD encryption with an explicit integrity check in the same helper.
46
+
@@ -5,6 +5,15 @@ metadata:
5
5
  title: Verify `message` event origins
6
6
  summary: "`message` handlers should validate `event.origin` before trusting cross-window data."
7
7
  rationale: Without an origin check, hostile pages can post crafted messages into the handler.
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}` handles cross-window messages without validating the sender origin."
35
44
  remediation:
36
45
  summary: Gate the handler on a strict allowlist of expected origins before reading `event.data`.
46
+
@@ -5,6 +5,15 @@ metadata:
5
5
  title: Missing ownership validation
6
6
  summary: Resource identifiers from request input should be checked against the caller before sensitive actions run.
7
7
  rationale: Authorization alone is not enough when handlers act on caller-provided resource ids that may belong to someone else.
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}` is used in a sensitive path without a matching ownership check."
34
43
  remediation:
35
44
  summary: Compare the request-derived resource id to the authenticated caller or load the resource through an ownership-enforcing query.
45
+
@@ -5,6 +5,15 @@ metadata:
5
5
  title: Missing request timeout or retry protection
6
6
  summary: External calls should define timeout, cancellation, or retry behavior before they enter security-sensitive flows.
7
7
  rationale: Authentication and dependency calls that have neither timeout nor retry protection fail unpredictably under network stress.
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
  - resilience
@@ -33,3 +42,4 @@ emit:
33
42
  summary: "`${captures.issue.text}` performs an external call without timeout, cancellation, or retry handling."
34
43
  remediation:
35
44
  summary: Add explicit timeout or cancellation support, wrap the call in retry handling, or do both when the dependency is critical.
45
+
@@ -5,6 +5,21 @@ metadata:
5
5
  title: Register Helmet before Nest route mounts
6
6
  summary: Nest bootstrap files should apply Helmet before mounting path-bound routers.
7
7
  rationale: Middleware order determines whether framed routes inherit Helmet protections; mounting routers too early widens exposure.
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: NestJS security
22
+ url: https://docs.nestjs.com/security/authentication
8
23
  tags:
9
24
  - security
10
25
  - nestjs
@@ -32,3 +47,4 @@ emit:
32
47
  summary: Helmet runs after a route-mounted `app.use` in this Nest bootstrap.
33
48
  remediation:
34
49
  summary: Call `helmet()` before registering routers bound to external paths unless another gateway applies equivalent protections.
50
+
@@ -5,6 +5,21 @@ metadata:
5
5
  title: Add a global Nest ValidationPipe
6
6
  summary: Nest bootstrap entries should register `ValidationPipe` globally when controllers parse bodies or DTOs.
7
7
  rationale: Without a validation pipe unexpected fields can reach controllers and weaken input hygiene.
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
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: NestJS security
22
+ url: https://docs.nestjs.com/security/authentication
8
23
  tags:
9
24
  - security
10
25
  - nestjs
@@ -33,3 +48,4 @@ emit:
33
48
  remediation:
34
49
  summary: >-
35
50
  Call app.useGlobalPipes with ValidationPipe using whitelist and forbidNonWhitelisted flags near bootstrap completion.
51
+
@@ -5,6 +5,21 @@ metadata:
5
5
  title: Do not skip throttling on credential routes
6
6
  summary: Sensitive Nest routes should not disable `@nestjs/throttler` protections without a compensating throttle.
7
7
  rationale: Authentication endpoints are brute-force magnets; removing throttling removes basic abuse resistance.
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: NestJS security
22
+ url: https://docs.nestjs.com/security/authentication
8
23
  tags:
9
24
  - security
10
25
  - nestjs
@@ -33,3 +48,4 @@ emit:
33
48
  summary: "`${captures.issue.text}` disables throttling on an authentication-sensitive route."
34
49
  remediation:
35
50
  summary: Remove `@SkipThrottle()` or pair it with an explicit `@Throttle` policy tuned for the handler.
51
+
@@ -5,6 +5,21 @@ metadata:
5
5
  title: Harden Nest ValidationPipe with whitelist mode
6
6
  summary: Global ValidationPipe instances should enable whitelist-style stripping for unexpected fields.
7
7
  rationale: Allowing undeclared fields preserves attack surface for mass-assignment style bugs.
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
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: NestJS security
22
+ url: https://docs.nestjs.com/security/authentication
8
23
  tags:
9
24
  - security
10
25
  - nestjs
@@ -34,3 +49,4 @@ emit:
34
49
  remediation:
35
50
  summary: >-
36
51
  Enable whitelist true and usually forbidNonWhitelisted true on the global ValidationPipe.
52
+
@@ -0,0 +1,44 @@
1
+ apiVersion: critiq.dev/v1alpha1
2
+ kind: Rule
3
+ metadata:
4
+ id: ts.security.no-alert-confirm-prompt
5
+ title: Avoid blocking dialog APIs
6
+ summary: Do not call `alert`, `confirm`, or `prompt` in application code.
7
+ rationale: Blocking dialogs freeze the UI thread, are easy to abuse for social engineering, and are inappropriate for production UX.
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
+ tags:
18
+ - security
19
+ - ux
20
+ - rules-catalog
21
+ stability: stable
22
+ appliesTo: block
23
+ scope:
24
+ languages:
25
+ - typescript
26
+ - javascript
27
+ match:
28
+ fact:
29
+ kind: security.alert-confirm-prompt
30
+ bind: issue
31
+ emit:
32
+ finding:
33
+ category: security.ux
34
+ severity: medium
35
+ confidence: 0.93
36
+ tags:
37
+ - security
38
+ - ux
39
+ message:
40
+ title: Avoid blocking dialog APIs
41
+ summary: "`${captures.issue.text}` uses a blocking browser dialog that should not ship in application code."
42
+ remediation:
43
+ summary: Replace blocking dialogs with in-app UI components or structured notifications.
44
+
@@ -0,0 +1,44 @@
1
+ apiVersion: critiq.dev/v1alpha1
2
+ kind: Rule
3
+ metadata:
4
+ id: ts.security.no-arguments-callee
5
+ title: Avoid `arguments.callee` and `arguments.caller`
6
+ summary: Do not read `arguments.callee` or `arguments.caller` in functions.
7
+ rationale: These legacy properties break optimizations, leak stack details, and are restricted in strict mode.
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.arguments-callee-or-caller
30
+ bind: issue
31
+ emit:
32
+ finding:
33
+ category: security.language
34
+ severity: medium
35
+ confidence: 0.95
36
+ tags:
37
+ - security
38
+ - language
39
+ message:
40
+ title: Avoid `${captures.issue.text}`
41
+ summary: "`${captures.issue.text}` relies on deprecated `arguments` metadata and should not be used."
42
+ remediation:
43
+ summary: Use named function expressions or arrow functions instead of `arguments.callee` or `arguments.caller`.
44
+
@@ -0,0 +1,45 @@
1
+ apiVersion: critiq.dev/v1alpha1
2
+ kind: Rule
3
+ metadata:
4
+ id: ts.security.no-assign-mutable-export
5
+ title: Avoid mutable module exports
6
+ summary: Shared module state should not be exported with `let`/`var` or reassigned after export.
7
+ rationale: Mutable exports make it easy for unrelated modules to change shared security or configuration state at runtime.
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
+ tags:
18
+ - security
19
+ - express
20
+ - maintainability
21
+ - rules-catalog
22
+ stability: stable
23
+ appliesTo: block
24
+ scope:
25
+ languages:
26
+ - typescript
27
+ - javascript
28
+ match:
29
+ fact:
30
+ kind: security.mutable-module-export
31
+ bind: issue
32
+ emit:
33
+ finding:
34
+ category: security.maintainability
35
+ severity: low
36
+ confidence: 0.84
37
+ tags:
38
+ - security
39
+ - module-boundary
40
+ message:
41
+ title: Keep exported module state immutable for `${captures.issue.text}`
42
+ summary: "`${captures.issue.text}` is exported with a mutable binding that can change at runtime."
43
+ remediation:
44
+ summary: Export read-only values, freeze shared objects, or expose accessors instead of mutable bindings.
45
+