pipeline-check 0.2.0__tar.gz

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 (464) hide show
  1. pipeline_check-0.2.0/LICENSE +21 -0
  2. pipeline_check-0.2.0/PKG-INFO +351 -0
  3. pipeline_check-0.2.0/README.md +324 -0
  4. pipeline_check-0.2.0/pipeline_check/__init__.py +6 -0
  5. pipeline_check-0.2.0/pipeline_check/cli.py +1795 -0
  6. pipeline_check-0.2.0/pipeline_check/core/__init__.py +0 -0
  7. pipeline_check-0.2.0/pipeline_check/core/autofix.py +1171 -0
  8. pipeline_check-0.2.0/pipeline_check/core/chains/__init__.py +25 -0
  9. pipeline_check-0.2.0/pipeline_check/core/chains/base.py +138 -0
  10. pipeline_check-0.2.0/pipeline_check/core/chains/engine.py +89 -0
  11. pipeline_check-0.2.0/pipeline_check/core/chains/rules/__init__.py +6 -0
  12. pipeline_check-0.2.0/pipeline_check/core/chains/rules/ac001_fork_pr_credential_theft.py +76 -0
  13. pipeline_check-0.2.0/pipeline_check/core/chains/rules/ac002_injection_to_unprotected_deploy.py +72 -0
  14. pipeline_check-0.2.0/pipeline_check/core/chains/rules/ac003_unpinned_action_to_credentials.py +75 -0
  15. pipeline_check-0.2.0/pipeline_check/core/chains/rules/ac004_self_hosted_runner_foothold.py +74 -0
  16. pipeline_check-0.2.0/pipeline_check/core/chains/rules/ac005_unsigned_artifact_to_prod.py +99 -0
  17. pipeline_check-0.2.0/pipeline_check/core/chains/rules/ac006_cache_poisoning.py +75 -0
  18. pipeline_check-0.2.0/pipeline_check/core/chains/rules/ac007_iam_privesc_via_codebuild.py +89 -0
  19. pipeline_check-0.2.0/pipeline_check/core/chains/rules/ac008_dependency_confusion_window.py +74 -0
  20. pipeline_check-0.2.0/pipeline_check/core/checks/__init__.py +0 -0
  21. pipeline_check-0.2.0/pipeline_check/core/checks/_confidence.py +90 -0
  22. pipeline_check-0.2.0/pipeline_check/core/checks/_context.py +188 -0
  23. pipeline_check-0.2.0/pipeline_check/core/checks/_iam_policy.py +194 -0
  24. pipeline_check-0.2.0/pipeline_check/core/checks/_malicious.py +295 -0
  25. pipeline_check-0.2.0/pipeline_check/core/checks/_patterns.py +194 -0
  26. pipeline_check-0.2.0/pipeline_check/core/checks/_primitives/__init__.py +14 -0
  27. pipeline_check-0.2.0/pipeline_check/core/checks/_primitives/container_image.py +107 -0
  28. pipeline_check-0.2.0/pipeline_check/core/checks/_primitives/deploy_names.py +15 -0
  29. pipeline_check-0.2.0/pipeline_check/core/checks/_primitives/lockfile_integrity.py +134 -0
  30. pipeline_check-0.2.0/pipeline_check/core/checks/_primitives/remote_script_exec.py +213 -0
  31. pipeline_check-0.2.0/pipeline_check/core/checks/_primitives/secret_shapes.py +29 -0
  32. pipeline_check-0.2.0/pipeline_check/core/checks/_primitives/shell_eval.py +141 -0
  33. pipeline_check-0.2.0/pipeline_check/core/checks/_primitives/tls_bypass.py +119 -0
  34. pipeline_check-0.2.0/pipeline_check/core/checks/_secrets.py +247 -0
  35. pipeline_check-0.2.0/pipeline_check/core/checks/aws/__init__.py +0 -0
  36. pipeline_check-0.2.0/pipeline_check/core/checks/aws/_catalog.py +573 -0
  37. pipeline_check-0.2.0/pipeline_check/core/checks/aws/base.py +116 -0
  38. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/__init__.py +13 -0
  39. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/ca001_domain_encryption.py +42 -0
  40. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/ca002_public_upstream.py +54 -0
  41. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/ca003_domain_policy_public.py +60 -0
  42. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/ca004_repo_wildcard_actions.py +73 -0
  43. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/cb001_plaintext_secrets.py +67 -0
  44. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/cb002_privileged_mode.py +49 -0
  45. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/cb003_logging.py +48 -0
  46. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/cb004_timeout.py +47 -0
  47. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/cb005_image_version.py +62 -0
  48. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/cb006_source_auth.py +79 -0
  49. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/cb007_webhook_filter.py +48 -0
  50. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/cb008_inline_buildspec.py +75 -0
  51. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/cb009_image_not_digest.py +55 -0
  52. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/cb010_fork_pr_builds.py +81 -0
  53. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/cb011_malicious_buildspec.py +76 -0
  54. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/ccm001_approval_rule.py +49 -0
  55. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/ccm002_repo_encryption.py +46 -0
  56. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/ccm003_trigger_cross_account.py +61 -0
  57. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/cd001_auto_rollback.py +43 -0
  58. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/cd002_all_at_once.py +49 -0
  59. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/cd003_alarm_config.py +45 -0
  60. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/cp001_approval_before_deploy.py +49 -0
  61. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/cp002_artifact_encryption.py +49 -0
  62. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/cp003_source_polling.py +49 -0
  63. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/cp004_legacy_github.py +46 -0
  64. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/cp005_production_approval.py +69 -0
  65. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/cp007_v2_all_branches.py +55 -0
  66. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/ct001_trail_exists.py +50 -0
  67. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/ct002_log_file_validation.py +41 -0
  68. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/ct003_multi_region.py +40 -0
  69. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/cw001_failed_build_alarm.py +48 -0
  70. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/cwl001_codebuild_retention.py +41 -0
  71. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/cwl002_codebuild_kms.py +42 -0
  72. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/eb001_pipeline_failure_rule.py +57 -0
  73. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/eb002_wildcard_target.py +36 -0
  74. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/ecr001_scan_on_push.py +40 -0
  75. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/ecr002_tag_mutability.py +42 -0
  76. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/ecr003_public_policy.py +79 -0
  77. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/ecr004_lifecycle_policy.py +50 -0
  78. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/ecr005_kms_encryption.py +39 -0
  79. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/ecr006_pull_through_untrusted.py +57 -0
  80. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/ecr007_inspector_enhanced.py +67 -0
  81. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/iam001_admin_access.py +46 -0
  82. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/iam002_wildcard_action.py +37 -0
  83. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/iam003_permission_boundary.py +35 -0
  84. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/iam004_passrole.py +43 -0
  85. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/iam005_external_trust.py +59 -0
  86. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/iam006_sensitive_wildcard.py +53 -0
  87. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/iam007_key_age.py +69 -0
  88. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/iam008_oidc_audience.py +89 -0
  89. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/kms001_rotation.py +48 -0
  90. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/kms002_policy_wildcard.py +65 -0
  91. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/lmb001_code_signing.py +49 -0
  92. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/lmb002_function_url_auth.py +46 -0
  93. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/lmb003_plaintext_env.py +53 -0
  94. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/lmb004_resource_policy_public.py +74 -0
  95. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/pbac001_vpc_config.py +54 -0
  96. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/pbac002_shared_service_role.py +57 -0
  97. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/pbac003_sg_egress.py +62 -0
  98. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/pbac005_stage_role_reuse.py +53 -0
  99. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/s3001_public_access_block.py +76 -0
  100. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/s3002_encryption.py +70 -0
  101. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/s3003_versioning.py +57 -0
  102. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/s3004_access_logging.py +57 -0
  103. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/s3005_secure_transport.py +87 -0
  104. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/sign001_profile_exists.py +53 -0
  105. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/sign002_profile_revoked.py +46 -0
  106. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/sm001_rotation.py +70 -0
  107. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/sm002_public_policy.py +51 -0
  108. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/ssm001_secret_string_type.py +41 -0
  109. pipeline_check-0.2.0/pipeline_check/core/checks/aws/rules/ssm002_default_key.py +42 -0
  110. pipeline_check-0.2.0/pipeline_check/core/checks/aws/workflows.py +181 -0
  111. pipeline_check-0.2.0/pipeline_check/core/checks/azure/__init__.py +1 -0
  112. pipeline_check-0.2.0/pipeline_check/core/checks/azure/base.py +188 -0
  113. pipeline_check-0.2.0/pipeline_check/core/checks/azure/pipelines.py +40 -0
  114. pipeline_check-0.2.0/pipeline_check/core/checks/azure/rules/__init__.py +0 -0
  115. pipeline_check-0.2.0/pipeline_check/core/checks/azure/rules/_helpers.py +48 -0
  116. pipeline_check-0.2.0/pipeline_check/core/checks/azure/rules/ado001_task_pinning.py +56 -0
  117. pipeline_check-0.2.0/pipeline_check/core/checks/azure/rules/ado002_script_injection.py +111 -0
  118. pipeline_check-0.2.0/pipeline_check/core/checks/azure/rules/ado003_literal_secrets.py +75 -0
  119. pipeline_check-0.2.0/pipeline_check/core/checks/azure/rules/ado004_deployment_env.py +82 -0
  120. pipeline_check-0.2.0/pipeline_check/core/checks/azure/rules/ado005_container_pinning.py +66 -0
  121. pipeline_check-0.2.0/pipeline_check/core/checks/azure/rules/ado006_signing.py +49 -0
  122. pipeline_check-0.2.0/pipeline_check/core/checks/azure/rules/ado007_sbom.py +46 -0
  123. pipeline_check-0.2.0/pipeline_check/core/checks/azure/rules/ado008_literal_secrets.py +44 -0
  124. pipeline_check-0.2.0/pipeline_check/core/checks/azure/rules/ado009_digest_pinning.py +71 -0
  125. pipeline_check-0.2.0/pipeline_check/core/checks/azure/rules/ado010_cross_pipeline_download.py +87 -0
  126. pipeline_check-0.2.0/pipeline_check/core/checks/azure/rules/ado011_template_local_on_pr.py +75 -0
  127. pipeline_check-0.2.0/pipeline_check/core/checks/azure/rules/ado012_cache_pr_input.py +64 -0
  128. pipeline_check-0.2.0/pipeline_check/core/checks/azure/rules/ado013_self_hosted_ephemeral.py +74 -0
  129. pipeline_check-0.2.0/pipeline_check/core/checks/azure/rules/ado014_aws_long_lived.py +93 -0
  130. pipeline_check-0.2.0/pipeline_check/core/checks/azure/rules/ado015_timeout.py +48 -0
  131. pipeline_check-0.2.0/pipeline_check/core/checks/azure/rules/ado016_curl_pipe.py +44 -0
  132. pipeline_check-0.2.0/pipeline_check/core/checks/azure/rules/ado017_docker_insecure.py +42 -0
  133. pipeline_check-0.2.0/pipeline_check/core/checks/azure/rules/ado018_pkg_insecure.py +43 -0
  134. pipeline_check-0.2.0/pipeline_check/core/checks/azure/rules/ado019_extends_injection.py +84 -0
  135. pipeline_check-0.2.0/pipeline_check/core/checks/azure/rules/ado020_vuln_scanning.py +51 -0
  136. pipeline_check-0.2.0/pipeline_check/core/checks/azure/rules/ado021_pkg_no_lockfile.py +44 -0
  137. pipeline_check-0.2.0/pipeline_check/core/checks/azure/rules/ado022_dep_update.py +44 -0
  138. pipeline_check-0.2.0/pipeline_check/core/checks/azure/rules/ado023_tls_bypass.py +45 -0
  139. pipeline_check-0.2.0/pipeline_check/core/checks/azure/rules/ado024_slsa_provenance.py +52 -0
  140. pipeline_check-0.2.0/pipeline_check/core/checks/azure/rules/ado025_template_pinning.py +123 -0
  141. pipeline_check-0.2.0/pipeline_check/core/checks/azure/rules/ado026_malicious_activity.py +55 -0
  142. pipeline_check-0.2.0/pipeline_check/core/checks/azure/rules/ado027_shell_eval.py +52 -0
  143. pipeline_check-0.2.0/pipeline_check/core/checks/azure/rules/ado028_pkg_source_integrity.py +48 -0
  144. pipeline_check-0.2.0/pipeline_check/core/checks/base.py +354 -0
  145. pipeline_check-0.2.0/pipeline_check/core/checks/bitbucket/__init__.py +1 -0
  146. pipeline_check-0.2.0/pipeline_check/core/checks/bitbucket/base.py +143 -0
  147. pipeline_check-0.2.0/pipeline_check/core/checks/bitbucket/pipelines.py +40 -0
  148. pipeline_check-0.2.0/pipeline_check/core/checks/bitbucket/rules/__init__.py +0 -0
  149. pipeline_check-0.2.0/pipeline_check/core/checks/bitbucket/rules/_helpers.py +34 -0
  150. pipeline_check-0.2.0/pipeline_check/core/checks/bitbucket/rules/bb001_pipe_pinning.py +58 -0
  151. pipeline_check-0.2.0/pipeline_check/core/checks/bitbucket/rules/bb002_script_injection.py +92 -0
  152. pipeline_check-0.2.0/pipeline_check/core/checks/bitbucket/rules/bb003_literal_secrets.py +66 -0
  153. pipeline_check-0.2.0/pipeline_check/core/checks/bitbucket/rules/bb004_deploy_env.py +87 -0
  154. pipeline_check-0.2.0/pipeline_check/core/checks/bitbucket/rules/bb005_max_time.py +45 -0
  155. pipeline_check-0.2.0/pipeline_check/core/checks/bitbucket/rules/bb006_signing.py +50 -0
  156. pipeline_check-0.2.0/pipeline_check/core/checks/bitbucket/rules/bb007_sbom.py +49 -0
  157. pipeline_check-0.2.0/pipeline_check/core/checks/bitbucket/rules/bb008_literal_secrets.py +45 -0
  158. pipeline_check-0.2.0/pipeline_check/core/checks/bitbucket/rules/bb009_digest_pinning.py +54 -0
  159. pipeline_check-0.2.0/pipeline_check/core/checks/bitbucket/rules/bb010_pr_artifact_handover.py +78 -0
  160. pipeline_check-0.2.0/pipeline_check/core/checks/bitbucket/rules/bb011_aws_long_lived.py +75 -0
  161. pipeline_check-0.2.0/pipeline_check/core/checks/bitbucket/rules/bb012_curl_pipe.py +44 -0
  162. pipeline_check-0.2.0/pipeline_check/core/checks/bitbucket/rules/bb013_docker_insecure.py +42 -0
  163. pipeline_check-0.2.0/pipeline_check/core/checks/bitbucket/rules/bb014_pkg_insecure.py +43 -0
  164. pipeline_check-0.2.0/pipeline_check/core/checks/bitbucket/rules/bb015_vuln_scanning.py +51 -0
  165. pipeline_check-0.2.0/pipeline_check/core/checks/bitbucket/rules/bb016_self_hosted_ephemeral.py +50 -0
  166. pipeline_check-0.2.0/pipeline_check/core/checks/bitbucket/rules/bb017_token_persistence.py +66 -0
  167. pipeline_check-0.2.0/pipeline_check/core/checks/bitbucket/rules/bb018_cache_key.py +86 -0
  168. pipeline_check-0.2.0/pipeline_check/core/checks/bitbucket/rules/bb019_after_script_leak.py +66 -0
  169. pipeline_check-0.2.0/pipeline_check/core/checks/bitbucket/rules/bb020_clone_depth.py +54 -0
  170. pipeline_check-0.2.0/pipeline_check/core/checks/bitbucket/rules/bb021_pkg_no_lockfile.py +44 -0
  171. pipeline_check-0.2.0/pipeline_check/core/checks/bitbucket/rules/bb022_dep_update.py +44 -0
  172. pipeline_check-0.2.0/pipeline_check/core/checks/bitbucket/rules/bb023_tls_bypass.py +45 -0
  173. pipeline_check-0.2.0/pipeline_check/core/checks/bitbucket/rules/bb024_slsa_provenance.py +50 -0
  174. pipeline_check-0.2.0/pipeline_check/core/checks/bitbucket/rules/bb025_malicious_activity.py +54 -0
  175. pipeline_check-0.2.0/pipeline_check/core/checks/bitbucket/rules/bb026_shell_eval.py +52 -0
  176. pipeline_check-0.2.0/pipeline_check/core/checks/bitbucket/rules/bb027_pkg_source_integrity.py +48 -0
  177. pipeline_check-0.2.0/pipeline_check/core/checks/blob.py +62 -0
  178. pipeline_check-0.2.0/pipeline_check/core/checks/circleci/__init__.py +0 -0
  179. pipeline_check-0.2.0/pipeline_check/core/checks/circleci/base.py +184 -0
  180. pipeline_check-0.2.0/pipeline_check/core/checks/circleci/pipelines.py +37 -0
  181. pipeline_check-0.2.0/pipeline_check/core/checks/circleci/rules/__init__.py +0 -0
  182. pipeline_check-0.2.0/pipeline_check/core/checks/circleci/rules/_helpers.py +48 -0
  183. pipeline_check-0.2.0/pipeline_check/core/checks/circleci/rules/cc001_orb_pinning.py +65 -0
  184. pipeline_check-0.2.0/pipeline_check/core/checks/circleci/rules/cc002_script_injection.py +54 -0
  185. pipeline_check-0.2.0/pipeline_check/core/checks/circleci/rules/cc003_docker_image_pinning.py +56 -0
  186. pipeline_check-0.2.0/pipeline_check/core/checks/circleci/rules/cc004_context_restrictions.py +62 -0
  187. pipeline_check-0.2.0/pipeline_check/core/checks/circleci/rules/cc005_aws_long_lived.py +57 -0
  188. pipeline_check-0.2.0/pipeline_check/core/checks/circleci/rules/cc006_signing.py +52 -0
  189. pipeline_check-0.2.0/pipeline_check/core/checks/circleci/rules/cc007_sbom.py +54 -0
  190. pipeline_check-0.2.0/pipeline_check/core/checks/circleci/rules/cc008_literal_secrets.py +49 -0
  191. pipeline_check-0.2.0/pipeline_check/core/checks/circleci/rules/cc009_deploy_approval.py +74 -0
  192. pipeline_check-0.2.0/pipeline_check/core/checks/circleci/rules/cc010_self_hosted_runner.py +61 -0
  193. pipeline_check-0.2.0/pipeline_check/core/checks/circleci/rules/cc011_build_retention.py +55 -0
  194. pipeline_check-0.2.0/pipeline_check/core/checks/circleci/rules/cc012_setup_workflow.py +49 -0
  195. pipeline_check-0.2.0/pipeline_check/core/checks/circleci/rules/cc013_branch_filter.py +53 -0
  196. pipeline_check-0.2.0/pipeline_check/core/checks/circleci/rules/cc014_resource_class.py +48 -0
  197. pipeline_check-0.2.0/pipeline_check/core/checks/circleci/rules/cc015_timeout.py +56 -0
  198. pipeline_check-0.2.0/pipeline_check/core/checks/circleci/rules/cc016_curl_pipe.py +44 -0
  199. pipeline_check-0.2.0/pipeline_check/core/checks/circleci/rules/cc017_docker_insecure.py +42 -0
  200. pipeline_check-0.2.0/pipeline_check/core/checks/circleci/rules/cc018_pkg_insecure.py +43 -0
  201. pipeline_check-0.2.0/pipeline_check/core/checks/circleci/rules/cc019_ssh_keys.py +60 -0
  202. pipeline_check-0.2.0/pipeline_check/core/checks/circleci/rules/cc020_vuln_scanning.py +51 -0
  203. pipeline_check-0.2.0/pipeline_check/core/checks/circleci/rules/cc021_pkg_no_lockfile.py +45 -0
  204. pipeline_check-0.2.0/pipeline_check/core/checks/circleci/rules/cc022_dep_update.py +45 -0
  205. pipeline_check-0.2.0/pipeline_check/core/checks/circleci/rules/cc023_tls_bypass.py +46 -0
  206. pipeline_check-0.2.0/pipeline_check/core/checks/circleci/rules/cc024_slsa_provenance.py +50 -0
  207. pipeline_check-0.2.0/pipeline_check/core/checks/circleci/rules/cc025_cache_key.py +84 -0
  208. pipeline_check-0.2.0/pipeline_check/core/checks/circleci/rules/cc026_malicious_activity.py +54 -0
  209. pipeline_check-0.2.0/pipeline_check/core/checks/circleci/rules/cc027_shell_eval.py +52 -0
  210. pipeline_check-0.2.0/pipeline_check/core/checks/circleci/rules/cc028_pkg_source_integrity.py +48 -0
  211. pipeline_check-0.2.0/pipeline_check/core/checks/circleci/rules/cc029_machine_image.py +96 -0
  212. pipeline_check-0.2.0/pipeline_check/core/checks/circleci/rules/cc030_context_ungated.py +139 -0
  213. pipeline_check-0.2.0/pipeline_check/core/checks/cloudbuild/__init__.py +0 -0
  214. pipeline_check-0.2.0/pipeline_check/core/checks/cloudbuild/base.py +181 -0
  215. pipeline_check-0.2.0/pipeline_check/core/checks/cloudbuild/pipelines.py +29 -0
  216. pipeline_check-0.2.0/pipeline_check/core/checks/cloudbuild/rules/__init__.py +0 -0
  217. pipeline_check-0.2.0/pipeline_check/core/checks/cloudbuild/rules/gcb001_step_image.py +78 -0
  218. pipeline_check-0.2.0/pipeline_check/core/checks/cloudbuild/rules/gcb002_service_account.py +67 -0
  219. pipeline_check-0.2.0/pipeline_check/core/checks/cloudbuild/rules/gcb003_secrets_in_args.py +99 -0
  220. pipeline_check-0.2.0/pipeline_check/core/checks/cloudbuild/rules/gcb004_dynamic_substitutions.py +105 -0
  221. pipeline_check-0.2.0/pipeline_check/core/checks/cloudbuild/rules/gcb005_timeout.py +109 -0
  222. pipeline_check-0.2.0/pipeline_check/core/checks/cloudbuild/rules/gcb006_shell_eval.py +59 -0
  223. pipeline_check-0.2.0/pipeline_check/core/checks/cloudbuild/rules/gcb007_secret_version_latest.py +95 -0
  224. pipeline_check-0.2.0/pipeline_check/core/checks/cloudbuild/rules/gcb008_vuln_scanning.py +52 -0
  225. pipeline_check-0.2.0/pipeline_check/core/checks/cloudbuild/rules/gcb009_signing.py +69 -0
  226. pipeline_check-0.2.0/pipeline_check/core/checks/cloudbuild/rules/gcb010_remote_script.py +58 -0
  227. pipeline_check-0.2.0/pipeline_check/core/checks/cloudbuild/rules/gcb011_tls_bypass.py +58 -0
  228. pipeline_check-0.2.0/pipeline_check/core/checks/cloudbuild/rules/gcb012_literal_secrets.py +60 -0
  229. pipeline_check-0.2.0/pipeline_check/core/checks/cloudbuild/rules/gcb013_pkg_source_integrity.py +62 -0
  230. pipeline_check-0.2.0/pipeline_check/core/checks/cloudbuild/rules/gcb014_logging_disabled.py +75 -0
  231. pipeline_check-0.2.0/pipeline_check/core/checks/cloudbuild/rules/gcb015_sbom.py +63 -0
  232. pipeline_check-0.2.0/pipeline_check/core/checks/cloudformation/__init__.py +13 -0
  233. pipeline_check-0.2.0/pipeline_check/core/checks/cloudformation/base.py +387 -0
  234. pipeline_check-0.2.0/pipeline_check/core/checks/cloudformation/codebuild.py +310 -0
  235. pipeline_check-0.2.0/pipeline_check/core/checks/cloudformation/codedeploy.py +98 -0
  236. pipeline_check-0.2.0/pipeline_check/core/checks/cloudformation/codepipeline.py +180 -0
  237. pipeline_check-0.2.0/pipeline_check/core/checks/cloudformation/ecr.py +164 -0
  238. pipeline_check-0.2.0/pipeline_check/core/checks/cloudformation/extended.py +383 -0
  239. pipeline_check-0.2.0/pipeline_check/core/checks/cloudformation/iam.py +257 -0
  240. pipeline_check-0.2.0/pipeline_check/core/checks/cloudformation/pbac.py +102 -0
  241. pipeline_check-0.2.0/pipeline_check/core/checks/cloudformation/phase3.py +252 -0
  242. pipeline_check-0.2.0/pipeline_check/core/checks/cloudformation/phase4.py +335 -0
  243. pipeline_check-0.2.0/pipeline_check/core/checks/cloudformation/s3.py +242 -0
  244. pipeline_check-0.2.0/pipeline_check/core/checks/cloudformation/services.py +383 -0
  245. pipeline_check-0.2.0/pipeline_check/core/checks/github/__init__.py +0 -0
  246. pipeline_check-0.2.0/pipeline_check/core/checks/github/base.py +123 -0
  247. pipeline_check-0.2.0/pipeline_check/core/checks/github/rules/__init__.py +0 -0
  248. pipeline_check-0.2.0/pipeline_check/core/checks/github/rules/_helpers.py +66 -0
  249. pipeline_check-0.2.0/pipeline_check/core/checks/github/rules/gha001_pinned_actions.py +61 -0
  250. pipeline_check-0.2.0/pipeline_check/core/checks/github/rules/gha002_pull_request_target.py +66 -0
  251. pipeline_check-0.2.0/pipeline_check/core/checks/github/rules/gha003_script_injection.py +106 -0
  252. pipeline_check-0.2.0/pipeline_check/core/checks/github/rules/gha004_permissions.py +112 -0
  253. pipeline_check-0.2.0/pipeline_check/core/checks/github/rules/gha005_aws_long_lived.py +121 -0
  254. pipeline_check-0.2.0/pipeline_check/core/checks/github/rules/gha006_signing.py +54 -0
  255. pipeline_check-0.2.0/pipeline_check/core/checks/github/rules/gha007_sbom.py +55 -0
  256. pipeline_check-0.2.0/pipeline_check/core/checks/github/rules/gha008_literal_secrets.py +58 -0
  257. pipeline_check-0.2.0/pipeline_check/core/checks/github/rules/gha009_workflow_run_artifact.py +89 -0
  258. pipeline_check-0.2.0/pipeline_check/core/checks/github/rules/gha010_local_action.py +66 -0
  259. pipeline_check-0.2.0/pipeline_check/core/checks/github/rules/gha011_cache_key.py +68 -0
  260. pipeline_check-0.2.0/pipeline_check/core/checks/github/rules/gha012_self_hosted_ephemeral.py +81 -0
  261. pipeline_check-0.2.0/pipeline_check/core/checks/github/rules/gha013_issue_comment.py +81 -0
  262. pipeline_check-0.2.0/pipeline_check/core/checks/github/rules/gha014_deploy_environment.py +78 -0
  263. pipeline_check-0.2.0/pipeline_check/core/checks/github/rules/gha015_timeout.py +49 -0
  264. pipeline_check-0.2.0/pipeline_check/core/checks/github/rules/gha016_curl_pipe.py +52 -0
  265. pipeline_check-0.2.0/pipeline_check/core/checks/github/rules/gha017_docker_insecure.py +42 -0
  266. pipeline_check-0.2.0/pipeline_check/core/checks/github/rules/gha018_pkg_insecure.py +43 -0
  267. pipeline_check-0.2.0/pipeline_check/core/checks/github/rules/gha019_token_persistence.py +64 -0
  268. pipeline_check-0.2.0/pipeline_check/core/checks/github/rules/gha020_vuln_scanning.py +51 -0
  269. pipeline_check-0.2.0/pipeline_check/core/checks/github/rules/gha021_pkg_no_lockfile.py +44 -0
  270. pipeline_check-0.2.0/pipeline_check/core/checks/github/rules/gha022_dep_update.py +44 -0
  271. pipeline_check-0.2.0/pipeline_check/core/checks/github/rules/gha023_tls_bypass.py +45 -0
  272. pipeline_check-0.2.0/pipeline_check/core/checks/github/rules/gha024_slsa_provenance.py +59 -0
  273. pipeline_check-0.2.0/pipeline_check/core/checks/github/rules/gha025_reusable_workflow_pin.py +77 -0
  274. pipeline_check-0.2.0/pipeline_check/core/checks/github/rules/gha026_container_egress.py +83 -0
  275. pipeline_check-0.2.0/pipeline_check/core/checks/github/rules/gha027_malicious_activity.py +72 -0
  276. pipeline_check-0.2.0/pipeline_check/core/checks/github/rules/gha028_shell_eval.py +67 -0
  277. pipeline_check-0.2.0/pipeline_check/core/checks/github/rules/gha029_pkg_source_integrity.py +62 -0
  278. pipeline_check-0.2.0/pipeline_check/core/checks/github/workflows.py +40 -0
  279. pipeline_check-0.2.0/pipeline_check/core/checks/gitlab/__init__.py +1 -0
  280. pipeline_check-0.2.0/pipeline_check/core/checks/gitlab/base.py +125 -0
  281. pipeline_check-0.2.0/pipeline_check/core/checks/gitlab/pipelines.py +40 -0
  282. pipeline_check-0.2.0/pipeline_check/core/checks/gitlab/rules/__init__.py +0 -0
  283. pipeline_check-0.2.0/pipeline_check/core/checks/gitlab/rules/_helpers.py +75 -0
  284. pipeline_check-0.2.0/pipeline_check/core/checks/gitlab/rules/gl001_image_pinning.py +65 -0
  285. pipeline_check-0.2.0/pipeline_check/core/checks/gitlab/rules/gl002_script_injection.py +95 -0
  286. pipeline_check-0.2.0/pipeline_check/core/checks/gitlab/rules/gl003_literal_secrets.py +68 -0
  287. pipeline_check-0.2.0/pipeline_check/core/checks/gitlab/rules/gl004_deploy_gating.py +78 -0
  288. pipeline_check-0.2.0/pipeline_check/core/checks/gitlab/rules/gl005_include_pinning.py +67 -0
  289. pipeline_check-0.2.0/pipeline_check/core/checks/gitlab/rules/gl006_signing.py +51 -0
  290. pipeline_check-0.2.0/pipeline_check/core/checks/gitlab/rules/gl007_sbom.py +51 -0
  291. pipeline_check-0.2.0/pipeline_check/core/checks/gitlab/rules/gl008_literal_secrets.py +47 -0
  292. pipeline_check-0.2.0/pipeline_check/core/checks/gitlab/rules/gl009_digest_pinning.py +62 -0
  293. pipeline_check-0.2.0/pipeline_check/core/checks/gitlab/rules/gl010_multi_project_artifact.py +72 -0
  294. pipeline_check-0.2.0/pipeline_check/core/checks/gitlab/rules/gl011_include_local_on_mr.py +70 -0
  295. pipeline_check-0.2.0/pipeline_check/core/checks/gitlab/rules/gl012_cache_key.py +65 -0
  296. pipeline_check-0.2.0/pipeline_check/core/checks/gitlab/rules/gl013_aws_long_lived.py +78 -0
  297. pipeline_check-0.2.0/pipeline_check/core/checks/gitlab/rules/gl014_self_hosted_ephemeral.py +67 -0
  298. pipeline_check-0.2.0/pipeline_check/core/checks/gitlab/rules/gl015_timeout.py +47 -0
  299. pipeline_check-0.2.0/pipeline_check/core/checks/gitlab/rules/gl016_curl_pipe.py +44 -0
  300. pipeline_check-0.2.0/pipeline_check/core/checks/gitlab/rules/gl017_docker_insecure.py +42 -0
  301. pipeline_check-0.2.0/pipeline_check/core/checks/gitlab/rules/gl018_pkg_insecure.py +43 -0
  302. pipeline_check-0.2.0/pipeline_check/core/checks/gitlab/rules/gl019_vuln_scanning.py +51 -0
  303. pipeline_check-0.2.0/pipeline_check/core/checks/gitlab/rules/gl020_token_persistence.py +68 -0
  304. pipeline_check-0.2.0/pipeline_check/core/checks/gitlab/rules/gl021_pkg_no_lockfile.py +44 -0
  305. pipeline_check-0.2.0/pipeline_check/core/checks/gitlab/rules/gl022_dep_update.py +44 -0
  306. pipeline_check-0.2.0/pipeline_check/core/checks/gitlab/rules/gl023_tls_bypass.py +45 -0
  307. pipeline_check-0.2.0/pipeline_check/core/checks/gitlab/rules/gl024_slsa_provenance.py +52 -0
  308. pipeline_check-0.2.0/pipeline_check/core/checks/gitlab/rules/gl025_malicious_activity.py +57 -0
  309. pipeline_check-0.2.0/pipeline_check/core/checks/gitlab/rules/gl026_shell_eval.py +60 -0
  310. pipeline_check-0.2.0/pipeline_check/core/checks/gitlab/rules/gl027_pkg_source_integrity.py +52 -0
  311. pipeline_check-0.2.0/pipeline_check/core/checks/gitlab/rules/gl028_services_pinning.py +104 -0
  312. pipeline_check-0.2.0/pipeline_check/core/checks/gitlab/rules/gl029_manual_allow_failure.py +104 -0
  313. pipeline_check-0.2.0/pipeline_check/core/checks/gitlab/rules/gl030_trigger_include_pinning.py +99 -0
  314. pipeline_check-0.2.0/pipeline_check/core/checks/jenkins/__init__.py +0 -0
  315. pipeline_check-0.2.0/pipeline_check/core/checks/jenkins/base.py +166 -0
  316. pipeline_check-0.2.0/pipeline_check/core/checks/jenkins/jenkinsfile.py +41 -0
  317. pipeline_check-0.2.0/pipeline_check/core/checks/jenkins/rules/__init__.py +0 -0
  318. pipeline_check-0.2.0/pipeline_check/core/checks/jenkins/rules/_helpers.py +168 -0
  319. pipeline_check-0.2.0/pipeline_check/core/checks/jenkins/rules/jf001_library_pinning.py +52 -0
  320. pipeline_check-0.2.0/pipeline_check/core/checks/jenkins/rules/jf002_script_injection.py +57 -0
  321. pipeline_check-0.2.0/pipeline_check/core/checks/jenkins/rules/jf003_agent_any.py +44 -0
  322. pipeline_check-0.2.0/pipeline_check/core/checks/jenkins/rules/jf004_aws_long_lived.py +62 -0
  323. pipeline_check-0.2.0/pipeline_check/core/checks/jenkins/rules/jf005_deploy_input.py +56 -0
  324. pipeline_check-0.2.0/pipeline_check/core/checks/jenkins/rules/jf006_signing.py +49 -0
  325. pipeline_check-0.2.0/pipeline_check/core/checks/jenkins/rules/jf007_sbom.py +51 -0
  326. pipeline_check-0.2.0/pipeline_check/core/checks/jenkins/rules/jf008_literal_secrets.py +43 -0
  327. pipeline_check-0.2.0/pipeline_check/core/checks/jenkins/rules/jf009_docker_image_pinning.py +58 -0
  328. pipeline_check-0.2.0/pipeline_check/core/checks/jenkins/rules/jf010_env_aws_keys.py +53 -0
  329. pipeline_check-0.2.0/pipeline_check/core/checks/jenkins/rules/jf011_build_discarder.py +44 -0
  330. pipeline_check-0.2.0/pipeline_check/core/checks/jenkins/rules/jf012_load_step.py +43 -0
  331. pipeline_check-0.2.0/pipeline_check/core/checks/jenkins/rules/jf013_copy_artifacts.py +53 -0
  332. pipeline_check-0.2.0/pipeline_check/core/checks/jenkins/rules/jf014_self_hosted_ephemeral.py +54 -0
  333. pipeline_check-0.2.0/pipeline_check/core/checks/jenkins/rules/jf015_timeout.py +47 -0
  334. pipeline_check-0.2.0/pipeline_check/core/checks/jenkins/rules/jf016_curl_pipe.py +43 -0
  335. pipeline_check-0.2.0/pipeline_check/core/checks/jenkins/rules/jf017_docker_insecure.py +40 -0
  336. pipeline_check-0.2.0/pipeline_check/core/checks/jenkins/rules/jf018_pkg_insecure.py +41 -0
  337. pipeline_check-0.2.0/pipeline_check/core/checks/jenkins/rules/jf019_sandbox_escape.py +48 -0
  338. pipeline_check-0.2.0/pipeline_check/core/checks/jenkins/rules/jf020_vuln_scanning.py +51 -0
  339. pipeline_check-0.2.0/pipeline_check/core/checks/jenkins/rules/jf021_pkg_no_lockfile.py +42 -0
  340. pipeline_check-0.2.0/pipeline_check/core/checks/jenkins/rules/jf022_dep_update.py +42 -0
  341. pipeline_check-0.2.0/pipeline_check/core/checks/jenkins/rules/jf023_tls_bypass.py +44 -0
  342. pipeline_check-0.2.0/pipeline_check/core/checks/jenkins/rules/jf024_input_submitter.py +150 -0
  343. pipeline_check-0.2.0/pipeline_check/core/checks/jenkins/rules/jf025_k8s_privileged.py +66 -0
  344. pipeline_check-0.2.0/pipeline_check/core/checks/jenkins/rules/jf026_build_job_unchecked.py +65 -0
  345. pipeline_check-0.2.0/pipeline_check/core/checks/jenkins/rules/jf027_archive_fingerprint.py +55 -0
  346. pipeline_check-0.2.0/pipeline_check/core/checks/jenkins/rules/jf028_slsa_provenance.py +65 -0
  347. pipeline_check-0.2.0/pipeline_check/core/checks/jenkins/rules/jf029_malicious_activity.py +60 -0
  348. pipeline_check-0.2.0/pipeline_check/core/checks/jenkins/rules/jf030_shell_eval.py +52 -0
  349. pipeline_check-0.2.0/pipeline_check/core/checks/jenkins/rules/jf031_pkg_source_integrity.py +46 -0
  350. pipeline_check-0.2.0/pipeline_check/core/checks/rule.py +109 -0
  351. pipeline_check-0.2.0/pipeline_check/core/checks/terraform/__init__.py +0 -0
  352. pipeline_check-0.2.0/pipeline_check/core/checks/terraform/base.py +116 -0
  353. pipeline_check-0.2.0/pipeline_check/core/checks/terraform/codebuild.py +313 -0
  354. pipeline_check-0.2.0/pipeline_check/core/checks/terraform/codedeploy.py +115 -0
  355. pipeline_check-0.2.0/pipeline_check/core/checks/terraform/codepipeline.py +145 -0
  356. pipeline_check-0.2.0/pipeline_check/core/checks/terraform/ecr.py +187 -0
  357. pipeline_check-0.2.0/pipeline_check/core/checks/terraform/extended.py +439 -0
  358. pipeline_check-0.2.0/pipeline_check/core/checks/terraform/iam.py +298 -0
  359. pipeline_check-0.2.0/pipeline_check/core/checks/terraform/pbac.py +93 -0
  360. pipeline_check-0.2.0/pipeline_check/core/checks/terraform/phase3.py +209 -0
  361. pipeline_check-0.2.0/pipeline_check/core/checks/terraform/phase4.py +328 -0
  362. pipeline_check-0.2.0/pipeline_check/core/checks/terraform/s3.py +213 -0
  363. pipeline_check-0.2.0/pipeline_check/core/checks/terraform/services.py +359 -0
  364. pipeline_check-0.2.0/pipeline_check/core/checks/tokens.py +118 -0
  365. pipeline_check-0.2.0/pipeline_check/core/config.py +287 -0
  366. pipeline_check-0.2.0/pipeline_check/core/diff.py +88 -0
  367. pipeline_check-0.2.0/pipeline_check/core/explain.py +255 -0
  368. pipeline_check-0.2.0/pipeline_check/core/gate.py +514 -0
  369. pipeline_check-0.2.0/pipeline_check/core/html_reporter.py +852 -0
  370. pipeline_check-0.2.0/pipeline_check/core/init_template.py +59 -0
  371. pipeline_check-0.2.0/pipeline_check/core/inventory.py +59 -0
  372. pipeline_check-0.2.0/pipeline_check/core/junit_reporter.py +120 -0
  373. pipeline_check-0.2.0/pipeline_check/core/manual.py +777 -0
  374. pipeline_check-0.2.0/pipeline_check/core/markdown_reporter.py +170 -0
  375. pipeline_check-0.2.0/pipeline_check/core/providers/__init__.py +57 -0
  376. pipeline_check-0.2.0/pipeline_check/core/providers/aws.py +296 -0
  377. pipeline_check-0.2.0/pipeline_check/core/providers/azure.py +52 -0
  378. pipeline_check-0.2.0/pipeline_check/core/providers/base.py +59 -0
  379. pipeline_check-0.2.0/pipeline_check/core/providers/bitbucket.py +49 -0
  380. pipeline_check-0.2.0/pipeline_check/core/providers/circleci.py +63 -0
  381. pipeline_check-0.2.0/pipeline_check/core/providers/cloudbuild.py +64 -0
  382. pipeline_check-0.2.0/pipeline_check/core/providers/cloudformation.py +144 -0
  383. pipeline_check-0.2.0/pipeline_check/core/providers/github.py +98 -0
  384. pipeline_check-0.2.0/pipeline_check/core/providers/gitlab.py +55 -0
  385. pipeline_check-0.2.0/pipeline_check/core/providers/jenkins.py +73 -0
  386. pipeline_check-0.2.0/pipeline_check/core/providers/terraform.py +131 -0
  387. pipeline_check-0.2.0/pipeline_check/core/reporter.py +306 -0
  388. pipeline_check-0.2.0/pipeline_check/core/sarif_reporter.py +460 -0
  389. pipeline_check-0.2.0/pipeline_check/core/scanner.py +329 -0
  390. pipeline_check-0.2.0/pipeline_check/core/scorer.py +95 -0
  391. pipeline_check-0.2.0/pipeline_check/core/standards/__init__.py +55 -0
  392. pipeline_check-0.2.0/pipeline_check/core/standards/base.py +58 -0
  393. pipeline_check-0.2.0/pipeline_check/core/standards/data/__init__.py +0 -0
  394. pipeline_check-0.2.0/pipeline_check/core/standards/data/cis_aws_foundations.py +52 -0
  395. pipeline_check-0.2.0/pipeline_check/core/standards/data/cis_supply_chain.py +140 -0
  396. pipeline_check-0.2.0/pipeline_check/core/standards/data/esf_supply_chain.py +276 -0
  397. pipeline_check-0.2.0/pipeline_check/core/standards/data/nist_800_190.py +222 -0
  398. pipeline_check-0.2.0/pipeline_check/core/standards/data/nist_800_53.py +149 -0
  399. pipeline_check-0.2.0/pipeline_check/core/standards/data/nist_csf_2.py +327 -0
  400. pipeline_check-0.2.0/pipeline_check/core/standards/data/nist_ssdf.py +132 -0
  401. pipeline_check-0.2.0/pipeline_check/core/standards/data/openssf_scorecard.py +267 -0
  402. pipeline_check-0.2.0/pipeline_check/core/standards/data/owasp_cicd_top_10.py +328 -0
  403. pipeline_check-0.2.0/pipeline_check/core/standards/data/pci_dss_v4.py +125 -0
  404. pipeline_check-0.2.0/pipeline_check/core/standards/data/s2c2f.py +167 -0
  405. pipeline_check-0.2.0/pipeline_check/core/standards/data/slsa.py +184 -0
  406. pipeline_check-0.2.0/pipeline_check/core/standards/data/soc2.py +236 -0
  407. pipeline_check-0.2.0/pipeline_check/core/standards/registry.py +48 -0
  408. pipeline_check-0.2.0/pipeline_check/lambda_handler.py +247 -0
  409. pipeline_check-0.2.0/pipeline_check.egg-info/PKG-INFO +351 -0
  410. pipeline_check-0.2.0/pipeline_check.egg-info/SOURCES.txt +462 -0
  411. pipeline_check-0.2.0/pipeline_check.egg-info/dependency_links.txt +1 -0
  412. pipeline_check-0.2.0/pipeline_check.egg-info/entry_points.txt +2 -0
  413. pipeline_check-0.2.0/pipeline_check.egg-info/requires.txt +4 -0
  414. pipeline_check-0.2.0/pipeline_check.egg-info/top_level.txt +1 -0
  415. pipeline_check-0.2.0/pyproject.toml +67 -0
  416. pipeline_check-0.2.0/setup.cfg +4 -0
  417. pipeline_check-0.2.0/tests/test_attack_chains.py +373 -0
  418. pipeline_check-0.2.0/tests/test_autofix.py +339 -0
  419. pipeline_check-0.2.0/tests/test_azure_scenarios.py +65 -0
  420. pipeline_check-0.2.0/tests/test_bitbucket_scenarios.py +60 -0
  421. pipeline_check-0.2.0/tests/test_bug_fixes.py +286 -0
  422. pipeline_check-0.2.0/tests/test_circleci_phase5.py +210 -0
  423. pipeline_check-0.2.0/tests/test_cli.py +181 -0
  424. pipeline_check-0.2.0/tests/test_cli_branches.py +193 -0
  425. pipeline_check-0.2.0/tests/test_cli_ease_of_use.py +238 -0
  426. pipeline_check-0.2.0/tests/test_cli_explain.py +172 -0
  427. pipeline_check-0.2.0/tests/test_cli_fix.py +80 -0
  428. pipeline_check-0.2.0/tests/test_cli_help_improvements.py +227 -0
  429. pipeline_check-0.2.0/tests/test_cli_ux.py +327 -0
  430. pipeline_check-0.2.0/tests/test_cloudbuild_phase1.py +423 -0
  431. pipeline_check-0.2.0/tests/test_cloudbuild_phase2.py +279 -0
  432. pipeline_check-0.2.0/tests/test_confidence.py +283 -0
  433. pipeline_check-0.2.0/tests/test_config.py +361 -0
  434. pipeline_check-0.2.0/tests/test_coverage_gaps.py +175 -0
  435. pipeline_check-0.2.0/tests/test_custom_secret_patterns.py +49 -0
  436. pipeline_check-0.2.0/tests/test_detection_quality.py +398 -0
  437. pipeline_check-0.2.0/tests/test_diff_mode.py +50 -0
  438. pipeline_check-0.2.0/tests/test_expected_failures_manifest.py +76 -0
  439. pipeline_check-0.2.0/tests/test_gate.py +501 -0
  440. pipeline_check-0.2.0/tests/test_gitlab_phase5.py +200 -0
  441. pipeline_check-0.2.0/tests/test_gitlab_scenarios.py +71 -0
  442. pipeline_check-0.2.0/tests/test_html_reporter.py +186 -0
  443. pipeline_check-0.2.0/tests/test_ignore_yaml.py +99 -0
  444. pipeline_check-0.2.0/tests/test_inventory.py +556 -0
  445. pipeline_check-0.2.0/tests/test_jenkins_provider.py +467 -0
  446. pipeline_check-0.2.0/tests/test_json_schema.py +104 -0
  447. pipeline_check-0.2.0/tests/test_junit_reporter.py +116 -0
  448. pipeline_check-0.2.0/tests/test_lambda_handler.py +235 -0
  449. pipeline_check-0.2.0/tests/test_manual.py +107 -0
  450. pipeline_check-0.2.0/tests/test_markdown_reporter.py +97 -0
  451. pipeline_check-0.2.0/tests/test_new_features.py +256 -0
  452. pipeline_check-0.2.0/tests/test_parser_edge_cases.py +451 -0
  453. pipeline_check-0.2.0/tests/test_per_check_real_examples.py +380 -0
  454. pipeline_check-0.2.0/tests/test_pipeline_poisoning.py +228 -0
  455. pipeline_check-0.2.0/tests/test_primitives.py +344 -0
  456. pipeline_check-0.2.0/tests/test_reporter.py +108 -0
  457. pipeline_check-0.2.0/tests/test_rule_framework.py +137 -0
  458. pipeline_check-0.2.0/tests/test_sarif_reporter.py +288 -0
  459. pipeline_check-0.2.0/tests/test_scorer.py +90 -0
  460. pipeline_check-0.2.0/tests/test_secret_detection.py +276 -0
  461. pipeline_check-0.2.0/tests/test_secret_registry_lifecycle.py +35 -0
  462. pipeline_check-0.2.0/tests/test_standards.py +236 -0
  463. pipeline_check-0.2.0/tests/test_terraform_diff_filter.py +91 -0
  464. pipeline_check-0.2.0/tests/test_workflow_fixtures.py +291 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Daniel Martin
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,351 @@
1
+ Metadata-Version: 2.4
2
+ Name: pipeline-check
3
+ Version: 0.2.0
4
+ Summary: CI/CD Security Posture Scanner — scores AWS, Terraform, GitHub Actions, GitLab CI, Azure DevOps, Bitbucket Pipelines, and Jenkins against OWASP Top 10 CI/CD Risks
5
+ Author: Daniel Martin
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/dmartinochoa/pipeline-check
8
+ Project-URL: Repository, https://github.com/dmartinochoa/pipeline-check
9
+ Project-URL: Issues, https://github.com/dmartinochoa/pipeline-check/issues
10
+ Project-URL: Changelog, https://github.com/dmartinochoa/pipeline-check/blob/master/CHANGELOG.md
11
+ Classifier: Development Status :: 3 - Alpha
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: Topic :: Security
14
+ Classifier: Programming Language :: Python :: 3.10
15
+ Classifier: Programming Language :: Python :: 3.11
16
+ Classifier: Programming Language :: Python :: 3.12
17
+ Classifier: Programming Language :: Python :: 3.13
18
+ Classifier: Operating System :: OS Independent
19
+ Requires-Python: >=3.10
20
+ Description-Content-Type: text/markdown
21
+ License-File: LICENSE
22
+ Requires-Dist: boto3>=1.34.0
23
+ Requires-Dist: click>=8.1.0
24
+ Requires-Dist: PyYAML>=6.0
25
+ Requires-Dist: rich>=13.0.0
26
+ Dynamic: license-file
27
+
28
+ <div align="center">
29
+
30
+ # Pipeline-Check
31
+
32
+ **Find security risks in your CI/CD pipelines before attackers do.**
33
+
34
+ Scans CI/CD configurations against the [OWASP Top 10 CI/CD Security Risks](https://owasp.org/www-project-top-10-ci-cd-security-risks/) and twelve other compliance frameworks. Scores findings A--D so you can gate merges on the result.
35
+
36
+ **283 checks** across **10 providers** -- mapped to **13 compliance standards** -- with **68 autofixers** -- plus **8 attack chains** correlating findings into MITRE ATT&CK-mapped kill chains
37
+
38
+ [Quick start](#quick-start) |
39
+ [Providers](#supported-providers) |
40
+ [How it works](#how-it-works) |
41
+ [CI integration](#ci-integration) |
42
+ [Compliance](#compliance-standards) |
43
+ [Docs](docs/)
44
+
45
+ </div>
46
+
47
+ ---
48
+
49
+ ## Quick start
50
+
51
+ ```bash
52
+ pip install -e . # Python >= 3.10
53
+
54
+ pipeline_check # auto-detects the provider from cwd
55
+ pipeline_check init # scaffold .pipeline-check.yml
56
+ pipeline_check -p github -o json # short flags work too
57
+ pipeline_check --pipeline aws # force the live-AWS scan
58
+ ```
59
+
60
+ Run `pipeline_check` with no flags in any supported repo — it inspects
61
+ the working directory (`.github/workflows/`, `.gitlab-ci.yml`,
62
+ `Jenkinsfile`, `cloudbuild.yaml`, `template.yml`, …), picks the matching
63
+ provider, and falls back to `aws` when nothing recognisable is found.
64
+
65
+ No API tokens required. CI configs are parsed from disk; AWS uses the
66
+ standard boto3 credential chain.
67
+
68
+ ---
69
+
70
+ ## Supported providers
71
+
72
+ | Provider | Input | Auto-detect | Checks |
73
+ |----------|-------|-------------|--------|
74
+ | **AWS** | Live account via boto3 | `--region` | 72 checks (CodeBuild, CodePipeline, CodeDeploy, ECR, IAM, PBAC, S3, CloudTrail, CloudWatch Logs, Secrets Manager, CodeArtifact, CodeCommit, Lambda, KMS, SSM, EventBridge, Signer) |
75
+ | **Terraform** | `terraform show -json` plan | `--tf-plan` | AWS-parity shift-left checks, pre-provisioning |
76
+ | **CloudFormation** | YAML or JSON template | `--cfn-template` | ~63 AWS-parity shift-left checks; handles `!Ref`/`!Sub`/`!GetAtt` intrinsics (treats unresolved values as strict) |
77
+ | **GitHub Actions** | `.github/workflows/*.yml` | `--gha-path` | 29 checks (`GHA-001`--`029`) |
78
+ | **GitLab CI** | `.gitlab-ci.yml` | `--gitlab-path` | 30 checks (`GL-001`--`030`) |
79
+ | **Bitbucket Pipelines** | `bitbucket-pipelines.yml` | `--bitbucket-path` | 27 checks (`BB-001`--`027`) |
80
+ | **Azure DevOps** | `azure-pipelines.yml` | `--azure-path` | 28 checks (`ADO-001`--`028`) |
81
+ | **Jenkins** | `Jenkinsfile` (Declarative/Scripted) | `--jenkinsfile-path` | 31 checks (`JF-001`--`031`) |
82
+ | **CircleCI** | `.circleci/config.yml` | `--circleci-path` | 30 checks (`CC-001`--`030`) |
83
+ | **Google Cloud Build** | `cloudbuild.yaml` | `--cloudbuild-path` | 15 checks (`GCB-001`--`015`) |
84
+
85
+ Each CI provider checks for: dependency pinning, script injection, credential
86
+ leaks, deploy approval gates, artifact signing, SBOM generation, Docker
87
+ security, package integrity, timeout enforcement, vulnerability scanning, TLS
88
+ verification, and more. See [docs/providers/](docs/providers/) for the full
89
+ per-check reference.
90
+
91
+ ---
92
+
93
+ ## How it works
94
+
95
+ ```
96
+ +-----------+
97
+ Config files | Scanner | 283 checks across 10 providers
98
+ or live APIs ----> +---> Findings (check_id, severity, resource)
99
+ +-----------+
100
+ |
101
+ +-----------+
102
+ | Scorer | Severity-weighted: CRITICAL=20, HIGH=10, MED=5, LOW=2
103
+ | +---> Score 0-100, Grade A/B/C/D
104
+ +-----------+
105
+ |
106
+ +-----------+
107
+ | Gate | --fail-on, --min-grade, --max-failures, --baseline
108
+ | +---> Exit 0 (pass) or 1 (fail)
109
+ +-----------+
110
+ |
111
+ +-----------+
112
+ | Reporter | Terminal, JSON, HTML, SARIF 2.1.0
113
+ +-----------+
114
+ ```
115
+
116
+ Every finding is annotated with compliance controls from all enabled
117
+ standards, so a single scan satisfies multiple audit frameworks.
118
+
119
+ ---
120
+
121
+ ## Key features
122
+
123
+ | Feature | Description |
124
+ |---------|-------------|
125
+ | **Autofix** | `--fix` emits unified-diff patches; `--fix --apply` writes in place. 67 fixers cover script injection, secrets, timeouts, pinning, Docker flags, TLS, and more. |
126
+ | **CI gate** | `--fail-on HIGH`, `--min-grade B`, `--max-failures 5`, `--fail-on-check GHA-002`. Any condition trips exit 1. |
127
+ | **Baselines** | `--baseline prior.json` or `--baseline-from-git origin/main:report.json` -- only gate on *new* findings. |
128
+ | **Diff-mode** | `--diff-base origin/main` scans only files changed by the branch. |
129
+ | **Suppressions** | `.pipelinecheckignore` (flat or YAML with `expires:` dates). |
130
+ | **Custom secrets** | `--secret-pattern '^acme_[a-f0-9]{32}$'` extends the credential scanner. |
131
+ | **Glob selection** | `--checks 'GHA-*'` or `--checks '*-008'` to scope checks. |
132
+ | **Standard audit** | `--standard-report nist_ssdf` prints the control-to-check matrix and coverage gaps. |
133
+ | **Component inventory** | `--inventory` emits the list of resources / workflows / templates the scanner discovered, with per-type metadata (encryption, runtime, tags, lifecycle policies). Filter with `--inventory-type 'AWS::IAM::*'`; skip checks entirely with `--inventory-only`. Feeds asset-register dashboards and drift detectors. |
134
+
135
+ ---
136
+
137
+ ## Output formats
138
+
139
+ ```bash
140
+ pipeline_check --output terminal # rich table to stdout (default)
141
+ pipeline_check --output json # machine-readable JSON
142
+ pipeline_check --output html --output-file report.html # self-contained HTML
143
+ pipeline_check --output sarif --output-file scan.sarif # SARIF 2.1.0 for GitHub/GitLab
144
+ pipeline_check --output both # terminal on stderr + JSON on stdout
145
+ ```
146
+
147
+ ---
148
+
149
+ ## CI integration
150
+
151
+ ### GitHub Actions
152
+
153
+ ```yaml
154
+ - name: Scan CI/CD security posture
155
+ run: |
156
+ pip install pipeline-check
157
+ pipeline_check --pipeline github \
158
+ --output sarif --output-file pipeline-check.sarif \
159
+ --fail-on HIGH
160
+
161
+ - name: Upload SARIF
162
+ if: always()
163
+ uses: github/codeql-action/upload-sarif@v3
164
+ with:
165
+ sarif_file: pipeline-check.sarif
166
+ ```
167
+
168
+ ### GitLab CI
169
+
170
+ ```yaml
171
+ security-scan:
172
+ script:
173
+ - pip install pipeline-check
174
+ - pipeline_check --pipeline gitlab --fail-on HIGH --output json > report.json
175
+ artifacts:
176
+ reports:
177
+ sast: report.json
178
+ ```
179
+
180
+ ### Any CI system
181
+
182
+ ```bash
183
+ # Gate on grade
184
+ pipeline_check --pipeline github --min-grade B
185
+
186
+ # Gate on new findings only (baseline diff)
187
+ pipeline_check --pipeline github --fail-on HIGH \
188
+ --baseline-from-git origin/main:baseline.json
189
+ ```
190
+
191
+ Exit codes: `0` = pass, `1` = gate failed, `2` = scanner error, `3` = config error.
192
+
193
+ ---
194
+
195
+ ## Configuration
196
+
197
+ Every CLI flag can be set in `pyproject.toml`, `.pipeline-check.yml`, or
198
+ environment variables. Precedence: CLI > env > file > defaults.
199
+
200
+ ```toml
201
+ # pyproject.toml
202
+ [tool.pipeline_check]
203
+ pipeline = "github"
204
+ severity_threshold = "MEDIUM"
205
+
206
+ [tool.pipeline_check.gate]
207
+ fail_on = "HIGH"
208
+ baseline = "artifacts/baseline.json"
209
+ ignore_file = ".pipelinecheckignore"
210
+ ```
211
+
212
+ Full reference: [docs/config.md](docs/config.md).
213
+
214
+ ---
215
+
216
+ ## Compliance standards
217
+
218
+ Each finding is tagged with controls from all enabled frameworks. One scan
219
+ covers multiple audits.
220
+
221
+ | Standard | Version | Coverage |
222
+ |----------|---------|----------|
223
+ | [OWASP Top 10 CI/CD Security Risks](docs/standards/owasp_cicd_top_10.md) | 2022 | 10/10 risks |
224
+ | [SLSA Build Track](docs/standards/slsa.md) | 1.0 | 6/7 levels (110 check mappings) |
225
+ | [NIST SSDF (SP 800-218)](docs/standards/nist_ssdf.md) | v1.1 | CI/CD subset |
226
+ | [NIST SP 800-53](docs/standards/nist_800_53.md) | Rev. 5 | CI/CD subset |
227
+ | [CIS Software Supply Chain](docs/standards/cis_supply_chain.md) | 1.0 | CI/CD subset |
228
+ | [CIS AWS Foundations](docs/standards/cis_aws_foundations.md) | 3.0.0 | CI/CD subset |
229
+ | [PCI DSS v4.0](docs/standards/pci_dss_v4.md) | 4.0 | CI/CD subset |
230
+ | [NSA/CISA ESF Supply Chain](docs/standards/esf_supply_chain.md) | 2022 | CI/CD subset |
231
+
232
+ ```bash
233
+ # Explore a standard's control-to-check matrix
234
+ pipeline_check --standard-report slsa
235
+
236
+ # Restrict a scan to specific standards
237
+ pipeline_check --standard owasp_cicd_top_10 --standard nist_ssdf
238
+ ```
239
+
240
+ Standards are pure data. Adding SOC 2 or an internal policy is one Python module.
241
+ See [docs/standards/](docs/standards/).
242
+
243
+ ---
244
+
245
+ ## CLI reference
246
+
247
+ | Flag | Default | Description |
248
+ |------|---------|-------------|
249
+ | `--pipeline` / `-p` | `auto` | `auto` (detect from cwd), `aws`, `terraform`, `cloudformation`, `github`, `gitlab`, `bitbucket`, `azure`, `jenkins`, `circleci`, `cloudbuild` |
250
+ | `--output` / `-o` | `terminal` | `terminal`, `json`, `html`, `sarif`, `junit`, `markdown`, `both` |
251
+ | `--output-file` / `-O` | | Required with `html`; optional with `sarif` |
252
+ | `--fail-on` / `-f` | | Fail if any finding >= severity (`CRITICAL`, `HIGH`, `MEDIUM`, `LOW`) |
253
+ | `--min-grade` | | Fail if grade worse than `A`/`B`/`C`/`D` |
254
+ | `--max-failures` | | Fail if > N effective findings |
255
+ | `--fail-on-check` | | Fail if named check fails (repeat for multiple) |
256
+ | `--baseline` | | Prior JSON report; existing findings don't gate |
257
+ | `--baseline-from-git` | | `REF:PATH` -- resolve baseline via `git show` |
258
+ | `--ignore-file` | `.pipelinecheckignore` | Suppressions (flat or YAML with `expires:`) |
259
+ | `--diff-base` | | Only scan files changed vs this git ref |
260
+ | `--fix` | | Emit unified-diff patches to stdout |
261
+ | `--apply` | | With `--fix`, write patches in place |
262
+ | `--checks` / `-c` | all | Check ID(s) or globs (`GHA-*`, `*-008`) |
263
+ | `--severity-threshold` | `INFO` | Minimum severity to display |
264
+ | `--secret-pattern` | | Extra regex for credential scanning (repeat) |
265
+ | `--standard` | all | Standard(s) to annotate findings with |
266
+ | `--standard-report` | | Print control-to-check matrix and exit |
267
+ | `--inventory` | | Emit scanned-component inventory alongside findings |
268
+ | `--inventory-type` | | Glob pattern to scope inventory by type (repeatable, implies `--inventory`) |
269
+ | `--inventory-only` | | Skip checks; emit inventory only (implies `--inventory`) |
270
+ | `--config` | auto | Config file path (TOML or YAML) |
271
+ | `--config-check` | | Validate config, exit non-zero on unknown keys |
272
+ | `--man [TOPIC]` | | Extended docs (`gate`, `autofix`, `diff`, `secrets`, `standards`, `config`, `output`, `lambda`, `recipes`) |
273
+ | `--region` / `-r` | `us-east-1` | AWS region |
274
+ | `--profile` | | AWS CLI named profile |
275
+ | `--verbose` / `-v` | | Debug output to stderr |
276
+ | `--quiet` / `-q` | | Suppress all output; exit code only |
277
+ | `--version` | | Print version |
278
+
279
+ Provider-specific path flags (`--gha-path`, `--gitlab-path`, `--bitbucket-path`, `--cfn-template`,
280
+ `--azure-path`, `--jenkinsfile-path`, `--circleci-path`, `--tf-plan`) are
281
+ auto-detected from the working directory when omitted.
282
+
283
+ Subcommand: **`pipeline_check init`** writes a starter `.pipeline-check.yml`
284
+ to the current directory, pre-filling the `pipeline:` key based on what it
285
+ finds in cwd. Pass `--path PATH` to redirect the output, or `--force` to
286
+ overwrite an existing file.
287
+
288
+ ---
289
+
290
+ ## Architecture
291
+
292
+ ```
293
+ pipeline_check/
294
+ ├── cli.py # Click CLI
295
+ ├── lambda_handler.py # AWS Lambda entry point
296
+ └── core/
297
+ ├── scanner.py # Provider-agnostic orchestrator
298
+ ├── scorer.py # Severity-weighted scoring (A/B/C/D)
299
+ ├── gate.py # CI gate (pass/fail thresholds + baselines)
300
+ ├── autofix.py # 67 fixers (text-based, comment-preserving)
301
+ ├── reporter.py # Terminal + JSON
302
+ ├── html_reporter.py # Self-contained HTML
303
+ ├── sarif_reporter.py # SARIF 2.1.0
304
+ ├── config.py # TOML/YAML/env config loader
305
+ ├── providers/ # One module per provider (register + go)
306
+ ├── standards/data/ # One module per compliance standard
307
+ └── checks/
308
+ ├── base.py # Finding, Severity, shared detection patterns
309
+ ├── aws/ # 32 class-based checks (CB, CP, CD, ECR, IAM, PBAC, S3)
310
+ │ └── rules/ # 38 rule-based checks (CT, CWL, SM, CA, CCM, LMB, KMS, SSM, EB, SIGN, CW, plus CB-008+/IAM-007+/PBAC-003+/CP-005+/ECR-006+)
311
+ ├── terraform/ # AWS-parity checks against plan JSON
312
+ ├── cloudformation/ # AWS-parity checks against CFN templates (YAML/JSON)
313
+ ├── github/rules/ # GHA-001 .. GHA-023
314
+ ├── gitlab/rules/ # GL-001 .. GL-023
315
+ ├── bitbucket/rules/ # BB-001 .. BB-023
316
+ ├── azure/rules/ # ADO-001 .. ADO-023
317
+ ├── jenkins/rules/ # JF-001 .. JF-027
318
+ └── circleci/rules/ # CC-001 .. CC-023
319
+ ```
320
+
321
+ Adding a new check is a one-file change. Adding a new provider is three files.
322
+ See [docs/providers/](docs/providers/) for the full pattern.
323
+
324
+ ---
325
+
326
+ ## Lambda deployment
327
+
328
+ Pipeline-Check can run as an AWS Lambda for scheduled scans.
329
+ See [docs/lambda.md](docs/) for packaging, IAM permissions, event payload
330
+ shapes, and SNS alerting.
331
+
332
+ ---
333
+
334
+ ## Extending
335
+
336
+ **New check:** Drop a module in `checks/<provider>/rules/` exporting `RULE`
337
+ and `check()`. The orchestrator auto-discovers it.
338
+
339
+ **New provider:** Subclass `BaseProvider`, register in `providers/__init__.py`.
340
+ Available via `--pipeline <name>` immediately.
341
+
342
+ **New standard:** Add a Python module under `standards/data/` with a
343
+ `STANDARD` object. The CLI and reporters pick it up automatically.
344
+
345
+ See [docs/providers/README.md](docs/providers/README.md) for the full contract.
346
+
347
+ ---
348
+
349
+ ## License
350
+
351
+ MIT -- see [LICENSE](LICENSE).