@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
@@ -0,0 +1,53 @@
1
+ apiVersion: critiq.dev/v1alpha1
2
+ kind: Rule
3
+ metadata:
4
+ id: cfn.security.check-if-iam-policies-are-properly-configured
5
+ title: Check if iam policies are properly configured
6
+ summary: Check if iam policies are properly configured
7
+ rationale: cfn-lint reports E2507 when Check if iam policies are properly configured.
8
+ aliases:
9
+ - CFLIN-E2507
10
+ tags:
11
+ - cfn
12
+ - cfn-lint
13
+ - cloudformation
14
+ - e2507
15
+ - rules-catalog
16
+ stability: stable
17
+ appliesTo: file
18
+ detection:
19
+ kind: pattern
20
+ references:
21
+ - kind: url
22
+ title: AWS CloudFormation Linter (E2507)
23
+ url: https://github.com/aws-cloudformation/cfn-lint
24
+ scope:
25
+ languages:
26
+ - all
27
+ paths:
28
+ include:
29
+ - "**/*.yaml"
30
+ - "**/*.yml"
31
+ - "**/*.json"
32
+ exclude:
33
+ - "**/node_modules/**"
34
+ match:
35
+ fact:
36
+ kind: cfn.lint.finding
37
+ bind: finding
38
+ where:
39
+ - path: ruleId
40
+ equals: E2507
41
+ emit:
42
+ finding:
43
+ category: security.configuration
44
+ severity: high
45
+ confidence: 0.9
46
+ tags:
47
+ - cfn
48
+ - cloudformation
49
+ message:
50
+ title: Check if iam policies are properly configured
51
+ summary: "${captures.finding.text} matches cfn-lint E2507."
52
+ remediation:
53
+ summary: Resolve the cfn-lint E2507 finding in this CloudFormation template.
@@ -0,0 +1,53 @@
1
+ apiVersion: critiq.dev/v1alpha1
2
+ kind: Rule
3
+ metadata:
4
+ id: cfn.security.check-if-password-properties-are-correctly-configured
5
+ title: Check if password properties are correctly configured
6
+ summary: Check if password properties are correctly configured
7
+ rationale: cfn-lint reports W2501 when Check if password properties are correctly configured.
8
+ aliases:
9
+ - CFLIN-W2501
10
+ tags:
11
+ - cfn
12
+ - cfn-lint
13
+ - cloudformation
14
+ - w2501
15
+ - rules-catalog
16
+ stability: stable
17
+ appliesTo: file
18
+ detection:
19
+ kind: pattern
20
+ references:
21
+ - kind: url
22
+ title: AWS CloudFormation Linter (W2501)
23
+ url: https://github.com/aws-cloudformation/cfn-lint
24
+ scope:
25
+ languages:
26
+ - all
27
+ paths:
28
+ include:
29
+ - "**/*.yaml"
30
+ - "**/*.yml"
31
+ - "**/*.json"
32
+ exclude:
33
+ - "**/node_modules/**"
34
+ match:
35
+ fact:
36
+ kind: cfn.lint.finding
37
+ bind: finding
38
+ where:
39
+ - path: ruleId
40
+ equals: W2501
41
+ emit:
42
+ finding:
43
+ category: security.configuration
44
+ severity: medium
45
+ confidence: 0.85
46
+ tags:
47
+ - cfn
48
+ - cloudformation
49
+ message:
50
+ title: Check if password properties are correctly configured
51
+ summary: "${captures.finding.text} matches cfn-lint W2501."
52
+ remediation:
53
+ summary: Resolve the cfn-lint W2501 finding in this CloudFormation template.
@@ -0,0 +1,53 @@
1
+ apiVersion: critiq.dev/v1alpha1
2
+ kind: Rule
3
+ metadata:
4
+ id: cfn.security.controlling-access-to-an-s3-bucket-should-be-done-with-bucket-policies
5
+ title: Controlling access to an s3 bucket should be done with bucket policies
6
+ summary: Controlling access to an s3 bucket should be done with bucket policies
7
+ rationale: cfn-lint reports W3045 when Controlling access to an s3 bucket should be done with bucket policies.
8
+ aliases:
9
+ - CFLIN-W3045
10
+ tags:
11
+ - cfn
12
+ - cfn-lint
13
+ - cloudformation
14
+ - w3045
15
+ - rules-catalog
16
+ stability: stable
17
+ appliesTo: file
18
+ detection:
19
+ kind: pattern
20
+ references:
21
+ - kind: url
22
+ title: AWS CloudFormation Linter (W3045)
23
+ url: https://github.com/aws-cloudformation/cfn-lint
24
+ scope:
25
+ languages:
26
+ - all
27
+ paths:
28
+ include:
29
+ - "**/*.yaml"
30
+ - "**/*.yml"
31
+ - "**/*.json"
32
+ exclude:
33
+ - "**/node_modules/**"
34
+ match:
35
+ fact:
36
+ kind: cfn.lint.finding
37
+ bind: finding
38
+ where:
39
+ - path: ruleId
40
+ equals: W3045
41
+ emit:
42
+ finding:
43
+ category: security.configuration
44
+ severity: medium
45
+ confidence: 0.85
46
+ tags:
47
+ - cfn
48
+ - cloudformation
49
+ message:
50
+ title: Controlling access to an s3 bucket should be done with bucket policies
51
+ summary: "${captures.finding.text} matches cfn-lint W3045."
52
+ remediation:
53
+ summary: Resolve the cfn-lint W3045 finding in this CloudFormation template.
@@ -0,0 +1,44 @@
1
+ apiVersion: critiq.dev/v1alpha1
2
+ kind: Rule
3
+ metadata:
4
+ id: go.correctness.defer-close-before-check
5
+ title: Check error before deferring Close
6
+ summary: A deferred Close runs even when the open call failed and returned a nil handle.
7
+ rationale: >-
8
+ When `defer file.Close()` runs before the matching `if err != nil` check, a failed
9
+ open dereferences a nil resource and panics during cleanup.
10
+ tags:
11
+ - correctness
12
+ - go
13
+ - rules-catalog
14
+ stability: stable
15
+ appliesTo: block
16
+ scope:
17
+ languages:
18
+ - go
19
+ paths:
20
+ include:
21
+ - "**/*.go"
22
+ exclude:
23
+ - "**/*_test.go"
24
+ - "**/testdata/**"
25
+ - "**/vendor/**"
26
+ match:
27
+ fact:
28
+ kind: go.correctness.defer-close-before-check
29
+ bind: issue
30
+ emit:
31
+ finding:
32
+ category: correctness.exceptions
33
+ severity: high
34
+ confidence: 0.85
35
+ tags:
36
+ - correctness
37
+ - go
38
+ message:
39
+ title: Move `defer ... Close()` after the err check in `${captures.issue.text}`
40
+ summary: "A `defer ...Close()` runs before the matching `if err != nil` check on the open call."
41
+ remediation:
42
+ summary: >-
43
+ Return early when the open call sets a non-nil error, then defer the matching
44
+ `Close()` only once the resource is known to be valid.
@@ -0,0 +1,47 @@
1
+ apiVersion: critiq.dev/v1alpha1
2
+ kind: Rule
3
+ metadata:
4
+ id: go.correctness.defer-in-loop
5
+ title: Avoid defer inside loops
6
+ summary: defer inside a loop holds resources until the surrounding function returns.
7
+ rationale: >-
8
+ `defer` runs when the enclosing function returns, not when the iteration ends.
9
+ Deferring inside a `for` or `for ... range` block accumulates open handles for
10
+ the lifetime of the function and can exhaust file descriptors or memory.
11
+ tags:
12
+ - correctness
13
+ - go
14
+ - resource-leak
15
+ - rules-catalog
16
+ stability: stable
17
+ appliesTo: block
18
+ scope:
19
+ languages:
20
+ - go
21
+ paths:
22
+ include:
23
+ - "**/*.go"
24
+ exclude:
25
+ - "**/*_test.go"
26
+ - "**/testdata/**"
27
+ - "**/vendor/**"
28
+ match:
29
+ fact:
30
+ kind: go.correctness.defer-in-loop
31
+ bind: issue
32
+ emit:
33
+ finding:
34
+ category: correctness.resource-leak
35
+ severity: medium
36
+ confidence: 0.85
37
+ tags:
38
+ - correctness
39
+ - go
40
+ - resource-leak
41
+ message:
42
+ title: Remove `${captures.issue.text}` from the loop body
43
+ summary: "A `defer` statement runs inside a `for` loop and accumulates cleanups until the function returns."
44
+ remediation:
45
+ summary: >-
46
+ Wrap the per-iteration work in a helper or closure so the deferred call runs
47
+ when the iteration ends, not at function return.
@@ -0,0 +1,43 @@
1
+ apiVersion: critiq.dev/v1alpha1
2
+ kind: Rule
3
+ metadata:
4
+ id: go.correctness.nil-context-passed
5
+ title: Pass a real context.Context
6
+ summary: Context-accepting calls should not receive a literal `nil` as their first argument.
7
+ rationale: >-
8
+ Standard library functions that take `context.Context` panic or skip cancellation
9
+ semantics when called with `nil`. Use `context.Background()`, `context.TODO()`, or
10
+ a propagated context instead.
11
+ tags:
12
+ - correctness
13
+ - go
14
+ - rules-catalog
15
+ stability: stable
16
+ appliesTo: block
17
+ scope:
18
+ languages:
19
+ - go
20
+ paths:
21
+ include:
22
+ - "**/*.go"
23
+ exclude:
24
+ - "**/*_test.go"
25
+ - "**/testdata/**"
26
+ - "**/vendor/**"
27
+ match:
28
+ fact:
29
+ kind: go.correctness.nil-context-passed
30
+ bind: issue
31
+ emit:
32
+ finding:
33
+ category: correctness.api-usage
34
+ severity: medium
35
+ confidence: 0.9
36
+ tags:
37
+ - correctness
38
+ - go
39
+ message:
40
+ title: Pass a real context to `${captures.issue.text}`
41
+ summary: "A context-accepting call receives a literal `nil` as its first argument."
42
+ remediation:
43
+ summary: Use `context.Background()`, `context.TODO()`, or a propagated context value instead of `nil`.
@@ -0,0 +1,42 @@
1
+ apiVersion: critiq.dev/v1alpha1
2
+ kind: Rule
3
+ metadata:
4
+ id: go.correctness.nil-map-assignment
5
+ title: Initialize maps before assignment
6
+ summary: Writing to a nil map panics at runtime.
7
+ rationale: >-
8
+ A `var m map[K]V` declaration leaves `m` nil. Any `m[key] = value` write before
9
+ `make(map[K]V)` or a map literal initialization causes a runtime panic.
10
+ tags:
11
+ - correctness
12
+ - go
13
+ - rules-catalog
14
+ stability: stable
15
+ appliesTo: block
16
+ scope:
17
+ languages:
18
+ - go
19
+ paths:
20
+ include:
21
+ - "**/*.go"
22
+ exclude:
23
+ - "**/*_test.go"
24
+ - "**/testdata/**"
25
+ - "**/vendor/**"
26
+ match:
27
+ fact:
28
+ kind: go.correctness.nil-map-assignment
29
+ bind: issue
30
+ emit:
31
+ finding:
32
+ category: correctness.runtime
33
+ severity: high
34
+ confidence: 0.85
35
+ tags:
36
+ - correctness
37
+ - go
38
+ message:
39
+ title: Initialize map before writing to `${captures.issue.text}`
40
+ summary: "A `var m map[...]...` declaration is written to before `make(...)` or a literal initialization."
41
+ remediation:
42
+ summary: Initialize the map with `make(map[K]V)` or a map literal before writing to it.
@@ -0,0 +1,44 @@
1
+ apiVersion: critiq.dev/v1alpha1
2
+ kind: Rule
3
+ metadata:
4
+ id: go.correctness.time-tick-leak
5
+ title: Avoid time.Tick for stoppable timers
6
+ summary: time.Tick leaks the underlying ticker because it cannot be stopped.
7
+ rationale: >-
8
+ `time.Tick` is documented as appropriate only for cases that run forever. Use
9
+ `time.NewTicker` so the ticker can be `Stop`ped when the consumer is done with it.
10
+ tags:
11
+ - correctness
12
+ - go
13
+ - rules-catalog
14
+ stability: stable
15
+ appliesTo: block
16
+ scope:
17
+ languages:
18
+ - go
19
+ paths:
20
+ include:
21
+ - "**/*.go"
22
+ exclude:
23
+ - "**/*_test.go"
24
+ - "**/testdata/**"
25
+ - "**/vendor/**"
26
+ match:
27
+ fact:
28
+ kind: go.correctness.time-tick-leak
29
+ bind: issue
30
+ emit:
31
+ finding:
32
+ category: correctness.resource-leak
33
+ severity: medium
34
+ confidence: 0.9
35
+ tags:
36
+ - correctness
37
+ - go
38
+ message:
39
+ title: Use `time.NewTicker` instead of `${captures.issue.text}`
40
+ summary: "`time.Tick` cannot be stopped and leaks the ticker goroutine."
41
+ remediation:
42
+ summary: >-
43
+ Replace `time.Tick(d)` with `time.NewTicker(d)` and defer `ticker.Stop()` once
44
+ the consumer no longer needs the channel.
@@ -0,0 +1,43 @@
1
+ apiVersion: critiq.dev/v1alpha1
2
+ kind: Rule
3
+ metadata:
4
+ id: go.correctness.unused-append-result
5
+ title: Assign the result of append
6
+ summary: append returns a new slice; dropping the result loses the appended element.
7
+ rationale: >-
8
+ `append` may allocate a new backing array, so it always returns the resulting
9
+ slice. Calling `append(s, x)` as a standalone statement silently throws the
10
+ update away.
11
+ tags:
12
+ - correctness
13
+ - go
14
+ - rules-catalog
15
+ stability: stable
16
+ appliesTo: block
17
+ scope:
18
+ languages:
19
+ - go
20
+ paths:
21
+ include:
22
+ - "**/*.go"
23
+ exclude:
24
+ - "**/*_test.go"
25
+ - "**/testdata/**"
26
+ - "**/vendor/**"
27
+ match:
28
+ fact:
29
+ kind: go.correctness.unused-append-result
30
+ bind: issue
31
+ emit:
32
+ finding:
33
+ category: correctness.api-usage
34
+ severity: high
35
+ confidence: 0.9
36
+ tags:
37
+ - correctness
38
+ - go
39
+ message:
40
+ title: Capture the result of `${captures.issue.text}`
41
+ summary: "An `append(...)` call appears as a standalone statement without assigning its result."
42
+ remediation:
43
+ summary: Assign the result back to the slice variable, e.g. `s = append(s, x)`.
@@ -0,0 +1,45 @@
1
+ apiVersion: critiq.dev/v1alpha1
2
+ kind: Rule
3
+ metadata:
4
+ id: go.correctness.waitgroup-add-in-goroutine
5
+ title: Call WaitGroup.Add before launching the goroutine
6
+ summary: WaitGroup.Add called inside the goroutine races with Wait.
7
+ rationale: >-
8
+ `sync.WaitGroup.Add` must happen before the launching goroutine returns to the
9
+ caller. If `Add` runs inside the goroutine, `Wait` may observe a zero counter and
10
+ return before the work begins.
11
+ tags:
12
+ - correctness
13
+ - go
14
+ - concurrency
15
+ - rules-catalog
16
+ stability: stable
17
+ appliesTo: block
18
+ scope:
19
+ languages:
20
+ - go
21
+ paths:
22
+ include:
23
+ - "**/*.go"
24
+ exclude:
25
+ - "**/*_test.go"
26
+ - "**/testdata/**"
27
+ - "**/vendor/**"
28
+ match:
29
+ fact:
30
+ kind: go.correctness.waitgroup-add-in-goroutine
31
+ bind: issue
32
+ emit:
33
+ finding:
34
+ category: correctness.concurrency
35
+ severity: high
36
+ confidence: 0.88
37
+ tags:
38
+ - correctness
39
+ - go
40
+ - concurrency
41
+ message:
42
+ title: Move `${captures.issue.text}` before `go func`
43
+ summary: "A `WaitGroup.Add` call runs inside a `go func()` body and can race with `Wait`."
44
+ remediation:
45
+ summary: Call `wg.Add(n)` on the launching goroutine before the `go` statement starts the worker.
@@ -0,0 +1,57 @@
1
+ apiVersion: critiq.dev/v1alpha1
2
+ kind: Rule
3
+ metadata:
4
+ id: go.security.bind-all-interfaces
5
+ title: Avoid binding Go services to all interfaces
6
+ summary: >-
7
+ Go network services should avoid explicit binds to `0.0.0.0`, `::`, or `[::]` unless public exposure is intentional and controlled.
8
+ rationale: >-
9
+ Binding every interface can unintentionally expose internal services beyond expected trust boundaries.
10
+ detection:
11
+ kind: pattern
12
+ references:
13
+ - kind: cwe
14
+ id: CWE-668
15
+ title: Exposure of Resource to Wrong Sphere
16
+ - kind: url
17
+ title: CWE-668 Exposure of Resource to Wrong Sphere
18
+ url: https://cwe.mitre.org/data/definitions/668.html
19
+ tags:
20
+ - security
21
+ - go
22
+ - network
23
+ - exposure
24
+ - rules-catalog
25
+ stability: experimental
26
+ appliesTo: block
27
+ scope:
28
+ languages:
29
+ - go
30
+ paths:
31
+ include:
32
+ - "**/*.go"
33
+ exclude:
34
+ - "**/*_test.go"
35
+ - "**/testdata/**"
36
+ - "**/vendor/**"
37
+ match:
38
+ fact:
39
+ kind: go.security.bind-all-interfaces
40
+ bind: issue
41
+ emit:
42
+ finding:
43
+ category: security.network
44
+ severity: medium
45
+ confidence: 0.85
46
+ tags:
47
+ - security
48
+ - go
49
+ - network
50
+ - exposure
51
+ message:
52
+ title: Restrict interface bind in `${captures.issue.text}`
53
+ summary: "`${captures.issue.text}` binds a service to all network interfaces."
54
+ remediation:
55
+ summary: >-
56
+ Prefer loopback or an explicit interface bind unless broad exposure is required and defended by network controls.
57
+
@@ -8,6 +8,15 @@ metadata:
8
8
  rationale: >-
9
9
  Regex-based heuristics flag Echo `Bind` usage when the file defines structs with sensitive fields that omit `validate` or `binding` style tags.
10
10
  This is intentionally conservative and may miss cross-file structs or middleware-protected routes.
11
+ detection:
12
+ kind: pattern
13
+ references:
14
+ - kind: cwe
15
+ id: CWE-20
16
+ title: Improper Input Validation
17
+ - kind: owasp
18
+ title: Input Validation Cheat Sheet
19
+ url: https://cheatsheetseries.owasp.org/cheatsheets/Input_Validation_Cheat_Sheet.html
11
20
  tags:
12
21
  - security
13
22
  - go
@@ -44,3 +53,4 @@ emit:
44
53
  remediation:
45
54
  summary: >-
46
55
  Add `validate` tags, use Echo's binding helpers with explicit validation, or route through a hardened DTO layer.
56
+
@@ -7,6 +7,15 @@ metadata:
7
7
  Multipart handlers should cap body size, sanitize filenames with `filepath.Base`, and avoid concatenating user filenames into destination paths.
8
8
  rationale: >-
9
9
  Unbounded multipart reads and raw `FormFile().Filename` usage enable DoS and path traversal when combined with predictable upload directories.
10
+ detection:
11
+ kind: pattern
12
+ references:
13
+ - kind: cwe
14
+ id: CWE-434
15
+ title: Unrestricted Upload of File with Dangerous Type
16
+ - kind: owasp
17
+ title: File Upload Cheat Sheet
18
+ url: https://cheatsheetseries.owasp.org/cheatsheets/File_Upload_Cheat_Sheet.html
10
19
  tags:
11
20
  - security
12
21
  - go
@@ -43,3 +52,4 @@ emit:
43
52
  remediation:
44
53
  summary: >-
45
54
  Wrap the request body with `http.MaxBytesReader`, normalize filenames with `filepath.Base`, enforce extension allowlists, and prefer storage APIs that never trust client paths.
55
+
@@ -7,6 +7,15 @@ metadata:
7
7
  Sensitive Fiber parsers should pair structs with validator tags or explicit validation so roles and secrets cannot be silently omitted.
8
8
  rationale: >-
9
9
  Regex heuristics flag `BodyParser`/`JSON` usage when structs in the same file define sensitive fields without `validate` or `binding` style tags.
10
+ detection:
11
+ kind: pattern
12
+ references:
13
+ - kind: cwe
14
+ id: CWE-20
15
+ title: Improper Input Validation
16
+ - kind: owasp
17
+ title: Input Validation Cheat Sheet
18
+ url: https://cheatsheetseries.owasp.org/cheatsheets/Input_Validation_Cheat_Sheet.html
10
19
  tags:
11
20
  - security
12
21
  - go
@@ -43,3 +52,4 @@ emit:
43
52
  remediation:
44
53
  summary: >-
45
54
  Add `validate` struct tags, use Fiber validator middleware, or centralize DTO validation before business logic.
55
+
@@ -7,6 +7,15 @@ metadata:
7
7
  Fiber upload helpers should enforce size limits and never persist client-controlled filenames without normalization.
8
8
  rationale: >-
9
9
  `FormFile`/`SaveFile` flows that concatenate `Filename` into paths or skip `filepath.Base` are a common path traversal and storage abuse vector.
10
+ detection:
11
+ kind: pattern
12
+ references:
13
+ - kind: cwe
14
+ id: CWE-434
15
+ title: Unrestricted Upload of File with Dangerous Type
16
+ - kind: owasp
17
+ title: File Upload Cheat Sheet
18
+ url: https://cheatsheetseries.owasp.org/cheatsheets/File_Upload_Cheat_Sheet.html
10
19
  tags:
11
20
  - security
12
21
  - go
@@ -43,3 +52,4 @@ emit:
43
52
  remediation:
44
53
  summary: >-
45
54
  Apply `filepath.Base`, cap reader sizes, allowlist extensions, and store uploads using server-generated object keys.
55
+
@@ -7,6 +7,15 @@ metadata:
7
7
  Sensitive Gin binds should use `binding` or validator tags so authentication and mutation payloads cannot be silently empty.
8
8
  rationale: >-
9
9
  Regex heuristics flag `ShouldBindJSON`/`BindJSON` usage when structs in the same file omit `binding`/`validate` tags on sensitive fields such as passwords or roles.
10
+ detection:
11
+ kind: pattern
12
+ references:
13
+ - kind: cwe
14
+ id: CWE-20
15
+ title: Improper Input Validation
16
+ - kind: owasp
17
+ title: Input Validation Cheat Sheet
18
+ url: https://cheatsheetseries.owasp.org/cheatsheets/Input_Validation_Cheat_Sheet.html
10
19
  tags:
11
20
  - security
12
21
  - go
@@ -43,3 +52,4 @@ emit:
43
52
  remediation:
44
53
  summary: >-
45
54
  Add `binding`/`validate` tags, register validators, or reject requests before they reach persistence layers.
55
+
@@ -7,6 +7,15 @@ metadata:
7
7
  `SetTrustedProxies` should list real upstreams instead of `nil` or `0.0.0.0/0` style catch-alls that spoof `X-Forwarded-For`.
8
8
  rationale: >-
9
9
  Trusting every proxy allows clients to forge client IP headers and bypass IP-based controls or auditing.
10
+ detection:
11
+ kind: pattern
12
+ references:
13
+ - kind: cwe
14
+ id: CWE-16
15
+ title: Configuration
16
+ - kind: owasp
17
+ title: Secure Configuration Cheat Sheet
18
+ url: https://cheatsheetseries.owasp.org/cheatsheets/Secure_Configuration_Cheat_Sheet.html
10
19
  tags:
11
20
  - security
12
21
  - go
@@ -43,3 +52,4 @@ emit:
43
52
  remediation:
44
53
  summary: >-
45
54
  Replace catch-all trusted proxy lists with explicit CIDRs for your ingress tier and document the expected hop count.
55
+
@@ -7,6 +7,15 @@ metadata:
7
7
  `gin-contrib/cors` configurations must not combine wildcard origins with `AllowCredentials: true`.
8
8
  rationale: >-
9
9
  Wildcard origins with credentials violate browser CORS safety expectations and often mask missing origin allowlists in APIs that should be locked down.
10
+ detection:
11
+ kind: pattern
12
+ references:
13
+ - kind: cwe
14
+ id: CWE-942
15
+ title: Permissive Cross-domain Policy with Untrusted Domains
16
+ - kind: owasp
17
+ title: Cross-Origin Resource Sharing (CORS)
18
+ url: https://owasp.org/www-community/attacks/CORS_OriginHeaderScrutiny
10
19
  tags:
11
20
  - security
12
21
  - go
@@ -45,3 +54,4 @@ emit:
45
54
  remediation:
46
55
  summary: >-
47
56
  Replace wildcard origins with explicit HTTPS origins, disable credentials when public anonymous access is intended, or move token APIs to header-only auth without credentialed CORS.
57
+