gitlabcis 1.3.2__py3-none-any.whl

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 (218) hide show
  1. gitlabcis/__init__.py +12 -0
  2. gitlabcis/__main__.py +7 -0
  3. gitlabcis/benchmarks/__init__.py +8 -0
  4. gitlabcis/benchmarks/artifacts_4/__init__.py +4 -0
  5. gitlabcis/benchmarks/artifacts_4/access_to_artifacts_4_2.py +139 -0
  6. gitlabcis/benchmarks/artifacts_4/origin_traceability_4_4.py +11 -0
  7. gitlabcis/benchmarks/artifacts_4/package_registries_4_3.py +105 -0
  8. gitlabcis/benchmarks/artifacts_4/verification_4_1.py +83 -0
  9. gitlabcis/benchmarks/build_pipelines_2/__init__.py +4 -0
  10. gitlabcis/benchmarks/build_pipelines_2/build_environment_2_1.py +268 -0
  11. gitlabcis/benchmarks/build_pipelines_2/build_worker_2_2.py +129 -0
  12. gitlabcis/benchmarks/build_pipelines_2/pipeline_instructions_2_3.py +444 -0
  13. gitlabcis/benchmarks/build_pipelines_2/pipeline_integrity_2_4.py +146 -0
  14. gitlabcis/benchmarks/dependencies_3/__init__.py +2 -0
  15. gitlabcis/benchmarks/dependencies_3/third_party_packages_3_1.py +171 -0
  16. gitlabcis/benchmarks/dependencies_3/validate_packages_3_2.py +182 -0
  17. gitlabcis/benchmarks/deployment_5/__init__.py +2 -0
  18. gitlabcis/benchmarks/deployment_5/deployment_configuration_5_1.py +165 -0
  19. gitlabcis/benchmarks/deployment_5/deployment_environment_5_2.py +66 -0
  20. gitlabcis/benchmarks/source_code_1/__init__.py +6 -0
  21. gitlabcis/benchmarks/source_code_1/code_changes_1_1.py +665 -0
  22. gitlabcis/benchmarks/source_code_1/code_risks_1_5.py +506 -0
  23. gitlabcis/benchmarks/source_code_1/contribution_access_1_3.py +334 -0
  24. gitlabcis/benchmarks/source_code_1/repository_management_1_2.py +168 -0
  25. gitlabcis/benchmarks/source_code_1/third_party_1_4.py +139 -0
  26. gitlabcis/cli/__init__.py +0 -0
  27. gitlabcis/cli/log.py +30 -0
  28. gitlabcis/cli/main.py +541 -0
  29. gitlabcis/cli/output.py +151 -0
  30. gitlabcis/recommendations/artifacts_4/access_to_artifacts_4_2/external_auth_server.yml +51 -0
  31. gitlabcis/recommendations/artifacts_4/access_to_artifacts_4_2/limit_artifact_uploaders.yml +57 -0
  32. gitlabcis/recommendations/artifacts_4/access_to_artifacts_4_2/limit_certifying_artifacts.yml +53 -0
  33. gitlabcis/recommendations/artifacts_4/access_to_artifacts_4_2/minimum_package_registry_admins.yml +54 -0
  34. gitlabcis/recommendations/artifacts_4/access_to_artifacts_4_2/readme.md +14 -0
  35. gitlabcis/recommendations/artifacts_4/access_to_artifacts_4_2/require_mfa_to_package_registry.yml +52 -0
  36. gitlabcis/recommendations/artifacts_4/access_to_artifacts_4_2/restrict_anonymous_access.yml +67 -0
  37. gitlabcis/recommendations/artifacts_4/origin_traceability_4_4/artifact_origin_info.yml +56 -0
  38. gitlabcis/recommendations/artifacts_4/origin_traceability_4_4/readme.md +7 -0
  39. gitlabcis/recommendations/artifacts_4/package_registries_4_3/all_artifact_versions_signed.yml +70 -0
  40. gitlabcis/recommendations/artifacts_4/package_registries_4_3/audit_package_registry_config.yml +46 -0
  41. gitlabcis/recommendations/artifacts_4/package_registries_4_3/readme.md +12 -0
  42. gitlabcis/recommendations/artifacts_4/package_registries_4_3/secure_repo_webhooks.yml +50 -0
  43. gitlabcis/recommendations/artifacts_4/package_registries_4_3/validate_signed_artifacts_on_upload.yml +72 -0
  44. gitlabcis/recommendations/artifacts_4/readme.md +12 -0
  45. gitlabcis/recommendations/artifacts_4/verification_4_1/encrypt_artifacts_before_distribution.yml +47 -0
  46. gitlabcis/recommendations/artifacts_4/verification_4_1/only_authorized_platforms_can_decrypt_artifacts.yml +59 -0
  47. gitlabcis/recommendations/artifacts_4/verification_4_1/readme.md +11 -0
  48. gitlabcis/recommendations/artifacts_4/verification_4_1/sign_artifacts_in_build_pipeline.yml +40 -0
  49. gitlabcis/recommendations/build_pipelines_2/build_environment_2_1/authenticate_build_access.yml +55 -0
  50. gitlabcis/recommendations/build_pipelines_2/build_environment_2_1/build_automation.yml +54 -0
  51. gitlabcis/recommendations/build_pipelines_2/build_environment_2_1/build_env_admins.yml +55 -0
  52. gitlabcis/recommendations/build_pipelines_2/build_environment_2_1/build_logging.yml +49 -0
  53. gitlabcis/recommendations/build_pipelines_2/build_environment_2_1/disable_build_tools_default_passwords.yml +54 -0
  54. gitlabcis/recommendations/build_pipelines_2/build_environment_2_1/immutable_pipeline_infrastructure.yml +60 -0
  55. gitlabcis/recommendations/build_pipelines_2/build_environment_2_1/limit_build_access.yml +64 -0
  56. gitlabcis/recommendations/build_pipelines_2/build_environment_2_1/limit_build_secrets_scope.yml +56 -0
  57. gitlabcis/recommendations/build_pipelines_2/build_environment_2_1/readme.md +19 -0
  58. gitlabcis/recommendations/build_pipelines_2/build_environment_2_1/secure_build_env_webhooks.yml +43 -0
  59. gitlabcis/recommendations/build_pipelines_2/build_environment_2_1/single_responsibility_pipeline.yml +58 -0
  60. gitlabcis/recommendations/build_pipelines_2/build_environment_2_1/vuln_scanning.yml +64 -0
  61. gitlabcis/recommendations/build_pipelines_2/build_worker_2_2/build_worker_vuln_scanning.yml +58 -0
  62. gitlabcis/recommendations/build_pipelines_2/build_worker_2_2/monitor_worker_resource_consumption.yml +59 -0
  63. gitlabcis/recommendations/build_pipelines_2/build_worker_2_2/pass_worker_envs_and_commands.yml +48 -0
  64. gitlabcis/recommendations/build_pipelines_2/build_worker_2_2/readme.md +16 -0
  65. gitlabcis/recommendations/build_pipelines_2/build_worker_2_2/restrict_worker_connectivity.yml +61 -0
  66. gitlabcis/recommendations/build_pipelines_2/build_worker_2_2/segregate_worker_duties.yml +78 -0
  67. gitlabcis/recommendations/build_pipelines_2/build_worker_2_2/single_use_workers.yml +47 -0
  68. gitlabcis/recommendations/build_pipelines_2/build_worker_2_2/store_worker_config.yml +62 -0
  69. gitlabcis/recommendations/build_pipelines_2/build_worker_2_2/worker_runtime_security.yml +37 -0
  70. gitlabcis/recommendations/build_pipelines_2/pipeline_instructions_2_3/build_stage_io.yml +49 -0
  71. gitlabcis/recommendations/build_pipelines_2/pipeline_instructions_2_3/build_steps_as_code.yml +42 -0
  72. gitlabcis/recommendations/build_pipelines_2/pipeline_instructions_2_3/limit_pipeline_triggers.yml +76 -0
  73. gitlabcis/recommendations/build_pipelines_2/pipeline_instructions_2_3/pipeline_misconfiguration_scanning.yml +48 -0
  74. gitlabcis/recommendations/build_pipelines_2/pipeline_instructions_2_3/pipeline_secret_scanning.yml +56 -0
  75. gitlabcis/recommendations/build_pipelines_2/pipeline_instructions_2_3/pipeline_vuln_scanning.yml +44 -0
  76. gitlabcis/recommendations/build_pipelines_2/pipeline_instructions_2_3/readme.md +16 -0
  77. gitlabcis/recommendations/build_pipelines_2/pipeline_instructions_2_3/secure_pipeline_output.yml +52 -0
  78. gitlabcis/recommendations/build_pipelines_2/pipeline_instructions_2_3/track_pipeline_files.yml +48 -0
  79. gitlabcis/recommendations/build_pipelines_2/pipeline_integrity_2_4/create_reproducible_artifacts.yml +52 -0
  80. gitlabcis/recommendations/build_pipelines_2/pipeline_integrity_2_4/lock_dependencies.yml +59 -0
  81. gitlabcis/recommendations/build_pipelines_2/pipeline_integrity_2_4/pipeline_produces_sbom.yml +81 -0
  82. gitlabcis/recommendations/build_pipelines_2/pipeline_integrity_2_4/pipeline_signs_sbom.yml +38 -0
  83. gitlabcis/recommendations/build_pipelines_2/pipeline_integrity_2_4/readme.md +14 -0
  84. gitlabcis/recommendations/build_pipelines_2/pipeline_integrity_2_4/sign_artifacts.yml +35 -0
  85. gitlabcis/recommendations/build_pipelines_2/pipeline_integrity_2_4/validate_dependencies.yml +63 -0
  86. gitlabcis/recommendations/build_pipelines_2/readme.md +12 -0
  87. gitlabcis/recommendations/dependencies_3/readme.md +10 -0
  88. gitlabcis/recommendations/dependencies_3/third_party_packages_3_1/define_package_managers.yml +84 -0
  89. gitlabcis/recommendations/dependencies_3/third_party_packages_3_1/dependency_sbom.yml +84 -0
  90. gitlabcis/recommendations/dependencies_3/third_party_packages_3_1/monitor_dependencies.yml +61 -0
  91. gitlabcis/recommendations/dependencies_3/third_party_packages_3_1/packages_over_60_days_old.yml +95 -0
  92. gitlabcis/recommendations/dependencies_3/third_party_packages_3_1/pin_dependency_version.yml +48 -0
  93. gitlabcis/recommendations/dependencies_3/third_party_packages_3_1/readme.md +14 -0
  94. gitlabcis/recommendations/dependencies_3/third_party_packages_3_1/third_party_sbom_required.yml +70 -0
  95. gitlabcis/recommendations/dependencies_3/third_party_packages_3_1/verify_artifacts.yml +45 -0
  96. gitlabcis/recommendations/dependencies_3/third_party_packages_3_1/verify_signed_metadata.yml +41 -0
  97. gitlabcis/recommendations/dependencies_3/validate_packages_3_2/org_wide_dependency_policy.yml +47 -0
  98. gitlabcis/recommendations/dependencies_3/validate_packages_3_2/package_license_scanning.yml +47 -0
  99. gitlabcis/recommendations/dependencies_3/validate_packages_3_2/package_ownership_change.yml +42 -0
  100. gitlabcis/recommendations/dependencies_3/validate_packages_3_2/package_vuln_scanning.yml +62 -0
  101. gitlabcis/recommendations/dependencies_3/validate_packages_3_2/readme.md +10 -0
  102. gitlabcis/recommendations/deployment_5/deployment_configuration_5_1/audit_deployment_config.yml +46 -0
  103. gitlabcis/recommendations/deployment_5/deployment_configuration_5_1/limit_deployment_config_access.yml +51 -0
  104. gitlabcis/recommendations/deployment_5/deployment_configuration_5_1/pin_deployment_config_manifests.yml +59 -0
  105. gitlabcis/recommendations/deployment_5/deployment_configuration_5_1/readme.md +13 -0
  106. gitlabcis/recommendations/deployment_5/deployment_configuration_5_1/scan_iac.yml +72 -0
  107. gitlabcis/recommendations/deployment_5/deployment_configuration_5_1/secret_scan_deployment_config.yml +45 -0
  108. gitlabcis/recommendations/deployment_5/deployment_configuration_5_1/separate_deployment_config.yml +50 -0
  109. gitlabcis/recommendations/deployment_5/deployment_configuration_5_1/verify_deployment_config.yml +49 -0
  110. gitlabcis/recommendations/deployment_5/deployment_environment_5_2/automate_deployment.yml +47 -0
  111. gitlabcis/recommendations/deployment_5/deployment_environment_5_2/disable_default_passwords.yml +63 -0
  112. gitlabcis/recommendations/deployment_5/deployment_environment_5_2/limit_prod_access.yml +45 -0
  113. gitlabcis/recommendations/deployment_5/deployment_environment_5_2/readme.md +12 -0
  114. gitlabcis/recommendations/deployment_5/deployment_environment_5_2/reproducible_deployment.yml +50 -0
  115. gitlabcis/recommendations/deployment_5/readme.md +10 -0
  116. gitlabcis/recommendations/readme.md +24 -0
  117. gitlabcis/recommendations/source_code_1/code_changes_1_1/audit_branch_protections.yml +56 -0
  118. gitlabcis/recommendations/source_code_1/code_changes_1_1/auto_risk_scan_merges.yml +62 -0
  119. gitlabcis/recommendations/source_code_1/code_changes_1_1/branch_protections_for_admins.yml +60 -0
  120. gitlabcis/recommendations/source_code_1/code_changes_1_1/branches_updated_before_merging.yml +56 -0
  121. gitlabcis/recommendations/source_code_1/code_changes_1_1/checks_pass_before_merging.yml +57 -0
  122. gitlabcis/recommendations/source_code_1/code_changes_1_1/code_approval_dismissals.yml +62 -0
  123. gitlabcis/recommendations/source_code_1/code_changes_1_1/code_approvals.yml +65 -0
  124. gitlabcis/recommendations/source_code_1/code_changes_1_1/code_changes_require_code_owners.yml +68 -0
  125. gitlabcis/recommendations/source_code_1/code_changes_1_1/code_dismissal_restrictions.yml +69 -0
  126. gitlabcis/recommendations/source_code_1/code_changes_1_1/code_owners.yml +61 -0
  127. gitlabcis/recommendations/source_code_1/code_changes_1_1/code_tracing.yml +52 -0
  128. gitlabcis/recommendations/source_code_1/code_changes_1_1/comments_resolved_before_merging.yml +59 -0
  129. gitlabcis/recommendations/source_code_1/code_changes_1_1/commits_must_be_signed_before_merging.yml +63 -0
  130. gitlabcis/recommendations/source_code_1/code_changes_1_1/default_branch_protected.yml +85 -0
  131. gitlabcis/recommendations/source_code_1/code_changes_1_1/deny_branch_deletions.yml +76 -0
  132. gitlabcis/recommendations/source_code_1/code_changes_1_1/ensure_force_push_is_denied.yml +59 -0
  133. gitlabcis/recommendations/source_code_1/code_changes_1_1/linear_history_required.yml +56 -0
  134. gitlabcis/recommendations/source_code_1/code_changes_1_1/merging_restrictions.yml +65 -0
  135. gitlabcis/recommendations/source_code_1/code_changes_1_1/readme.md +26 -0
  136. gitlabcis/recommendations/source_code_1/code_changes_1_1/stale_branch_reviews.yml +72 -0
  137. gitlabcis/recommendations/source_code_1/code_changes_1_1/version_control.yml +45 -0
  138. gitlabcis/recommendations/source_code_1/code_risks_1_5/dast_api_scanning.yml +50 -0
  139. gitlabcis/recommendations/source_code_1/code_risks_1_5/dast_web_scanning.yml +51 -0
  140. gitlabcis/recommendations/source_code_1/code_risks_1_5/dependency_scanning.yml +84 -0
  141. gitlabcis/recommendations/source_code_1/code_risks_1_5/enable_secret_detection.yml +45 -0
  142. gitlabcis/recommendations/source_code_1/code_risks_1_5/license_scanning.yml +47 -0
  143. gitlabcis/recommendations/source_code_1/code_risks_1_5/readme.md +14 -0
  144. gitlabcis/recommendations/source_code_1/code_risks_1_5/secure_iac_instructions.yml +81 -0
  145. gitlabcis/recommendations/source_code_1/code_risks_1_5/secure_pipeline_instructions.yml +62 -0
  146. gitlabcis/recommendations/source_code_1/code_risks_1_5/vulnerability_scanning.yml +48 -0
  147. gitlabcis/recommendations/source_code_1/contribution_access_1_3/domain_verification.yml +65 -0
  148. gitlabcis/recommendations/source_code_1/contribution_access_1_3/ensure_2_admins_per_repo.yml +56 -0
  149. gitlabcis/recommendations/source_code_1/contribution_access_1_3/limit_top_level_group_creation.yml +61 -0
  150. gitlabcis/recommendations/source_code_1/contribution_access_1_3/limit_user_registration_domain.yml +58 -0
  151. gitlabcis/recommendations/source_code_1/contribution_access_1_3/minimum_number_of_admins.yml +56 -0
  152. gitlabcis/recommendations/source_code_1/contribution_access_1_3/org_provided_ssh_certs.yml +70 -0
  153. gitlabcis/recommendations/source_code_1/contribution_access_1_3/readme.md +21 -0
  154. gitlabcis/recommendations/source_code_1/contribution_access_1_3/require_mfa_at_org_level.yml +89 -0
  155. gitlabcis/recommendations/source_code_1/contribution_access_1_3/require_mfa_for_contributors.yml +76 -0
  156. gitlabcis/recommendations/source_code_1/contribution_access_1_3/restrict_ip_addresses.yml +84 -0
  157. gitlabcis/recommendations/source_code_1/contribution_access_1_3/review_and_remove_inactive_users.yml +62 -0
  158. gitlabcis/recommendations/source_code_1/contribution_access_1_3/scm_notification_restriction.yml +46 -0
  159. gitlabcis/recommendations/source_code_1/contribution_access_1_3/strict_permissions_for_repo.yml +62 -0
  160. gitlabcis/recommendations/source_code_1/contribution_access_1_3/track_code_anomalies.yml +43 -0
  161. gitlabcis/recommendations/source_code_1/readme.md +13 -0
  162. gitlabcis/recommendations/source_code_1/repository_management_1_2/limit_issue_deletions.yml +57 -0
  163. gitlabcis/recommendations/source_code_1/repository_management_1_2/limit_repo_creations.yml +64 -0
  164. gitlabcis/recommendations/source_code_1/repository_management_1_2/limit_repo_deletions.yml +57 -0
  165. gitlabcis/recommendations/source_code_1/repository_management_1_2/public_repos_have_security_file.yml +59 -0
  166. gitlabcis/recommendations/source_code_1/repository_management_1_2/readme.md +15 -0
  167. gitlabcis/recommendations/source_code_1/repository_management_1_2/review_and_archive_stale_repos.yml +65 -0
  168. gitlabcis/recommendations/source_code_1/repository_management_1_2/track_forks.yml +74 -0
  169. gitlabcis/recommendations/source_code_1/repository_management_1_2/track_project_visibility_status.yml +74 -0
  170. gitlabcis/recommendations/source_code_1/third_party_1_4/README.md +12 -0
  171. gitlabcis/recommendations/source_code_1/third_party_1_4/admin_approval_for_app_installs.yml +83 -0
  172. gitlabcis/recommendations/source_code_1/third_party_1_4/least_privilge_app_permissions.yml +103 -0
  173. gitlabcis/recommendations/source_code_1/third_party_1_4/secure_webhooks.yml +73 -0
  174. gitlabcis/recommendations/source_code_1/third_party_1_4/stale_app_reviews.yml +66 -0
  175. gitlabcis/recommendations/template.yml +30 -0
  176. gitlabcis/tests/__init__.py +0 -0
  177. gitlabcis/tests/input/__init__.py +0 -0
  178. gitlabcis/tests/input/conftest.py +29 -0
  179. gitlabcis/tests/input/no_input_test.py +82 -0
  180. gitlabcis/tests/input/switch_test.py +19 -0
  181. gitlabcis/tests/input/version_test.py +7 -0
  182. gitlabcis/tests/unit/__init__.py +0 -0
  183. gitlabcis/tests/unit/benchmarks/artifacts_4/access_to_artifacts_4_2_test.py +131 -0
  184. gitlabcis/tests/unit/benchmarks/artifacts_4/origin_traceability_4_4_test.py +15 -0
  185. gitlabcis/tests/unit/benchmarks/artifacts_4/package_registries_4_3_test.py +102 -0
  186. gitlabcis/tests/unit/benchmarks/artifacts_4/verification_4_1_test.py +78 -0
  187. gitlabcis/tests/unit/benchmarks/build_pipelines_2/build_environment_2_1_test.py +239 -0
  188. gitlabcis/tests/unit/benchmarks/build_pipelines_2/build_worker_2_2_test.py +105 -0
  189. gitlabcis/tests/unit/benchmarks/build_pipelines_2/pipeline_instructions_2_3_test.py +340 -0
  190. gitlabcis/tests/unit/benchmarks/build_pipelines_2/pipeline_integrity_2_4_test.py +115 -0
  191. gitlabcis/tests/unit/benchmarks/conftest.py +47 -0
  192. gitlabcis/tests/unit/benchmarks/dependencies_3/third_party_packages_3_1_test.py +135 -0
  193. gitlabcis/tests/unit/benchmarks/dependencies_3/validate_packages_3_2_test.py +171 -0
  194. gitlabcis/tests/unit/benchmarks/deployment_5/deployment_configuration_5_1_test.py +140 -0
  195. gitlabcis/tests/unit/benchmarks/deployment_5/deployment_environment_5_2_test.py +60 -0
  196. gitlabcis/tests/unit/benchmarks/function_test.py +24 -0
  197. gitlabcis/tests/unit/benchmarks/source_code_1/code_changes_1_1_test.py +565 -0
  198. gitlabcis/tests/unit/benchmarks/source_code_1/code_risks_1_5_test.py +419 -0
  199. gitlabcis/tests/unit/benchmarks/source_code_1/contribution_access_1_3_test.py +265 -0
  200. gitlabcis/tests/unit/benchmarks/source_code_1/repository_management_1_2_test.py +142 -0
  201. gitlabcis/tests/unit/benchmarks/source_code_1/third_party_1_4_test.py +119 -0
  202. gitlabcis/tests/unit/conftest.py +94 -0
  203. gitlabcis/tests/unit/log/log_test.py +23 -0
  204. gitlabcis/tests/unit/utils/argfilters_test.py +9 -0
  205. gitlabcis/tests/unit/utils/ci_test.py +156 -0
  206. gitlabcis/tests/unit/utils/output_test.py +95 -0
  207. gitlabcis/tests/unit/utils/utils_general_test.py +149 -0
  208. gitlabcis/tests/unit/utils/version_test.py +11 -0
  209. gitlabcis/tests/unit/yaml/bad_file_test.py +15 -0
  210. gitlabcis/tests/unit/yaml/recommendation_test.py +123 -0
  211. gitlabcis/utils/__init__.py +146 -0
  212. gitlabcis/utils/ci.py +132 -0
  213. gitlabcis-1.3.2.dist-info/LICENSE +21 -0
  214. gitlabcis-1.3.2.dist-info/METADATA +241 -0
  215. gitlabcis-1.3.2.dist-info/RECORD +218 -0
  216. gitlabcis-1.3.2.dist-info/WHEEL +5 -0
  217. gitlabcis-1.3.2.dist-info/entry_points.txt +2 -0
  218. gitlabcis-1.3.2.dist-info/top_level.txt +1 -0
@@ -0,0 +1,62 @@
1
+ ---
2
+ id: 1.5.2
3
+ name: secure_pipeline_instructions
4
+ title: Detect and prevent misconfigurations and insecure instructions in CI pipelines
5
+ profile: 2
6
+ category: source_code
7
+ sub_category: code_risks
8
+ description: >-
9
+ Detect and prevent misconfigurations and insecure instructions in CI pipelines
10
+ rationale: >-
11
+ Detecting and fixing misconfigurations or insecure instructions in CI pipelines decreases
12
+ the risk for a successful attack through or on the CI pipeline. The more secure the
13
+ pipeline, the less risk there is for potential exposure of sensitive data, a deployment
14
+ being compromised, or external access mistakenly being granted to the CI infrastructure
15
+ or the source code.
16
+ impact: >-
17
+ audit: |
18
+ For every project:
19
+ • Identify if one or more CI configuration files exist
20
+ • Review CI configuration files for misconfigurations or insecure instructions
21
+ • Review whether the absence of any CI configuration is itself a misconfiguration
22
+ remediation: |
23
+ For every project identified during the Audit as having misconfigured or insecure CI instructions:
24
+ • Update the CI instructions
25
+ • Consider using Scan Execution Policies at the project or group level to enforce security scans
26
+ • Consider using the Compliance Framework feature to enforce pipeline configuration
27
+ • Consider procuring and enabling a CI instructions scanning tool to identify and
28
+ prevent misconfigurations and insecure instructions and scans all CI pipelines.
29
+ default_value:
30
+ references:
31
+ cis_controls:
32
+ - id: 7.5
33
+ version: 8
34
+ name: Perform Automated Vulnerability Scans of Internal Enterprise Assets
35
+ description: >-
36
+ Perform automated vulnerability scans of internal enterprise assets on a
37
+ quarterly, or more frequent, basis. Conduct both authenticated and
38
+ unauthenticated scans, using a SCAP-compliant vulnerability scanning tool.
39
+ implementation_groups:
40
+ - IG2
41
+ - IG3
42
+ - id: 7.6
43
+ version: 8
44
+ name: Perform Automated Vulnerability Scans of Externally-Exposed Enterprise Assets
45
+ description: >-
46
+ Perform automated vulnerability scans of externally-exposed enterprise assets
47
+ using a SCAP-compliant vulnerability scanning tool. Perform scans on a monthly,
48
+ or more frequent, basis.
49
+ implementation_groups:
50
+ - IG2
51
+ - IG3
52
+ - id: 3.1
53
+ version: 7
54
+ name: Run Automated Vulnerability Scanning Tools
55
+ description: >-
56
+ Utilize an up-to-date SCAP-compliant vulnerability scanning tool to
57
+ automatically scan all systems on the network on a weekly or more frequent basis
58
+ to identify all potential vulnerabilities on the organization's systems.
59
+ implementation_groups:
60
+ - IG2
61
+ - IG3
62
+ additional_info: >-
@@ -0,0 +1,48 @@
1
+ ---
2
+ id: 1.5.4
3
+ name: vulnerability_scanning
4
+ title: Ensure scanners are in place for code vulnerabilities
5
+ profile: 2
6
+ category: source_code
7
+ sub_category: code_risks
8
+ description: >-
9
+ Detect and prevent known open source vulnerabilities in the code.
10
+ rationale: >-
11
+ Open source code blocks are used a lot in developed software. This has its own
12
+ advantages, but it also has risks. Because the code is open for everyone, it means that
13
+ attackers can publish or add malicious code to these open-source code blocks, or use
14
+ their knowledge to find vulnerabilities in an existing code. Detecting and fixing such
15
+ code vulnerabilities, by SCA (Software Composition Analysis) prevents insecure flaws
16
+ from reaching production. It gives another opportunity for developers to secure the
17
+ source code before it is deployed in production, where it is far more exposed and
18
+ vulnerable to attacks.
19
+ impact: >-
20
+ audit: |
21
+ For every repository that is in use, verify that a scanning tool is set to identify and prevent code vulnerabilities by performing the following:
22
+ 1. On GitLab, navigate to the main page of the repository.
23
+ 2. Review the CI pipeline configuration to verify that SAST has been configured to run on this project.
24
+ remediation: |
25
+ For every repository that is in use, set a scanning tool to identify and prevent code vulnerabilities by performing the following:
26
+ 1. On GitLab, navigate to the main page of the repository.
27
+ 2. Configure SAST to run on this project.
28
+ default_value:
29
+ references:
30
+ cis_controls:
31
+ - id: 16.12
32
+ version: 8
33
+ name: Implement Code-Level Security Checks
34
+ description: >-
35
+ Apply static and dynamic analysis tools within the application life cycle to verify
36
+ that secure coding practices are being followed.
37
+ implementation_groups:
38
+ - IG3
39
+ - id: 18.7
40
+ version: 7
41
+ name: Apply Static and Dynamic Code Analysis Tools
42
+ description: >-
43
+ Apply static and dynamic analysis tools to verify that secure coding
44
+ practices are being adhered to for internally developed software.
45
+ implementation_groups:
46
+ - IG2
47
+ - IG3
48
+ additional_info: >-
@@ -0,0 +1,65 @@
1
+ ---
2
+ id: 1.3.9
3
+ name: domain_verification
4
+ title: Ensure an organization's identity is confirmed with a “Verified” badge
5
+ profile: 2
6
+ category: source_code
7
+ sub_category: contribution_access
8
+ description: >-
9
+ Confirm the domains an organization owns with a "Verified" badge.
10
+ rationale: >-
11
+ Verifying the organization's domain gives developers assurance that a given domain is
12
+ truly the official home for a public organization. Attackers can pretend to be an
13
+ organization and steal information via a faked/spoof domain, therefore the use of a
14
+ "Verified" badge instills more confidence and trust between developers and the open-
15
+ source community.
16
+ impact: >-
17
+ audit: >-
18
+ On the left sidebar, select Search or go to and find your top-level group.
19
+ Select Settings > Domain Verification.
20
+ View your domains and if they are verified or unverified.
21
+ remediation: |
22
+ Step 1:
23
+ • On the left sidebar, select Search or go to and find your top-level group.
24
+ • Select Settings > Domain Verification.
25
+ • In the upper-right corner, select Add Domain.
26
+ • In Domain, enter the domain name.
27
+ • In Project, link to a project.
28
+ • In Certificate:
29
+ • If you do not have or do not want to use an SSL certificate, leave Automatic certificate management using Let's Encrypt selected.
30
+ • Optional. Turn on the Manually enter certificate information toggle to add an SSL/TLS certificate. You can also add the certificate and key later.
31
+ • Select Add Domain.
32
+ Step 2:
33
+ • After you create a new domain, the verification code prompts you. Copy the values from GitLab and paste them in your domain's control panel as a TXT record.
34
+ Step 3:
35
+ After you have added all the DNS records:
36
+ • On the left sidebar, select Search or go to and find your group.
37
+ • Select Settings > Domain Verification.
38
+ • On the domain table row, Select Retry verification ().
39
+ default_value:
40
+ references:
41
+ - https://docs.gitlab.com/ee/user/enterprise_user/#verified-domains-for-groups
42
+ cis_controls:
43
+ - id: 16.1
44
+ version: 8
45
+ name: Establish and Maintain a Secure Application Development Process
46
+ description: >-
47
+ Establish and maintain a secure application development process. In the
48
+ process, address such items as: secure application design standards, secure coding
49
+ practices, developer training, vulnerability management, security of third-party code,
50
+ and application security testing procedures. Review and update documentation
51
+ annually, or when significant enterprise changes occur that could impact this
52
+ Safeguard.
53
+ implementation_groups:
54
+ - IG2
55
+ - IG3
56
+ - id: 18.1
57
+ version: 7
58
+ name: Establish Secure Coding Practices
59
+ description: >-
60
+ Establish secure coding practices appropriate to the programming language and
61
+ development environment being used.
62
+ implementation_groups:
63
+ - IG2
64
+ - IG3
65
+ additional_info: >-
@@ -0,0 +1,56 @@
1
+ ---
2
+ id: 1.3.7
3
+ name: ensure_2_admins_per_repo
4
+ title: Ensure two administrators are set for each repository
5
+ profile: 2
6
+ category: source_code
7
+ sub_category: contribution_access
8
+ description: >-
9
+ Ensure every repository has two users with administrative permissions.
10
+ rationale: >-
11
+ Repository administrators have the highest permissions to said repository. These
12
+ include the ability to add/remove collaborators, change branch protection policy, and
13
+ convert to a publicly-accessible repository. Due to the liberal access granted to a
14
+ repository administrator, it is highly recommended that only two contributors occupy this
15
+ role.
16
+ impact: >-
17
+ Removing administrative users from a repository would result in them losing high-level
18
+ access to that repository.
19
+ audit: |
20
+ For every group, verify there are two administrators by performing the following:
21
+ • On the left sidebar, at the bottom, select Admin Area.
22
+ • Select Overview > Users.
23
+ • List users selecting the Admin tab.
24
+ • Verify that there are only 2 members with Admin permission.
25
+ remediation: |
26
+ For every group in use, set two administrators by performing the following:
27
+ • On the left sidebar, at the bottom, select Admin Area.
28
+ • Select Overview > Users.
29
+ • List users selecting the Admin tab.
30
+ • Find the team or person whose you'd like to revoke admin permissions. To edit a user, in the user's row, select Edit.
31
+ default_value:
32
+ references:
33
+ - https://docs.gitlab.com/ee/administration/admin_area.html#administering-users
34
+ cis_controls:
35
+ - id: 3.3
36
+ version: 8
37
+ name: Configure Data Access Control Lists
38
+ description: >-
39
+ Configure data access control lists based on a user's need to know. Apply data
40
+ access control lists, also known as access permissions, to local and remote file
41
+ systems, databases, and applications.
42
+ implementation_groups:
43
+ - IG1
44
+ - IG2
45
+ - IG3
46
+ - id: 14.6
47
+ version: 7
48
+ name: Protect Information through Access Control Lists
49
+ description: >-
50
+ Protect all information stored on systems with file system, network share,
51
+ claims, application, or database specific access control lists. These controls will
52
+ enforce the principle that only authorized individuals should have access to the
53
+ information based on their need to access the information as a part of their
54
+ responsibilities.
55
+ implementation_groups:
56
+ additional_info: >-
@@ -0,0 +1,61 @@
1
+ ---
2
+ id: 1.3.2
3
+ name: limit_top_level_group_creation
4
+ title: Ensure top-level group creation is limited to specific members
5
+ profile: 1
6
+ category: source_code
7
+ sub_category: contribution_access
8
+ description: >-
9
+ Limit ability to create teams to trusted and specific users.
10
+ rationale: >-
11
+ The ability to create new teams should be restricted to specific members in order to
12
+ keep the organization orderly and ensure users have access to only the lowest privilege
13
+ level necessary. Teams typically inherit permissions from their parent team, thus if base
14
+ permissions are less restricted and any user has the ability to create a team, a
15
+ permission leverage could occur in which certain data is made available to users who
16
+ should not have access to it. Such a situation could potentially lead to the creation of
17
+ shadow teams by an attacker. Restricting team creation will also reduce additional
18
+ clutter in the organizational structure, and as a result will make it easier to track
19
+ changes and anomalies.
20
+ impact: >-
21
+ Only specific users will be able to create new teams.
22
+ audit: |
23
+ For every organization, ensure that top-level group creation is limited to specific, trusted users by performing the following:
24
+ • On the left sidebar, at the bottom, select Admin Area.
25
+ • Select Settings > General.
26
+ • Expand Account and limit.
27
+ • Verify that the Allow new users to create top-level groups checkbox is not checked.
28
+ remediation: |
29
+ For every organization, limit top-level group creation to specific, trusted users by performing the following:
30
+ • On the left sidebar, at the bottom, select Admin Area.
31
+ • Select Settings > General.
32
+ • Expand Account and limit.
33
+ • Clear the Allow new users to create top-level groups checkbox.
34
+ default_value:
35
+ references:
36
+ - https://docs.gitlab.com/ee/administration/settings/account_and_limit_settings.html#prevent-new-users-from-creating-top-level-groups
37
+ cis_controls:
38
+ - id: 5.4
39
+ version: 8
40
+ name: Restrict Administrator Privileges to Dedicated Administrator Accounts
41
+ description: >-
42
+ Restrict administrator privileges to dedicated administrator accounts on
43
+ enterprise assets. Conduct general computing activities, such as internet
44
+ browsing, email, and productivity suite use, from the user's primary, non-privileged
45
+ account.
46
+ implementation_groups:
47
+ - IG1
48
+ - IG2
49
+ - IG3
50
+ - id: 4.3
51
+ version: 7
52
+ name: Ensure the Use of Dedicated Administrative Accounts
53
+ description: >-
54
+ Ensure that all users with administrative account access use a dedicated or
55
+ secondary account for elevated activities. This account should only be used for
56
+ administrative activities and not internet browsing, email, or similar activities.
57
+ implementation_groups:
58
+ - IG1
59
+ - IG2
60
+ - IG3
61
+ additional_info: >-
@@ -0,0 +1,58 @@
1
+ ---
2
+ id: 1.3.6
3
+ name: limit_user_registration_domain
4
+ title: Ensure new members are required to be invited using company-approved email
5
+ profile: 2
6
+ category: source_code
7
+ sub_category: contribution_access
8
+ description: >-
9
+ Existing members of an organization can invite new members to join, however new
10
+ members must only be invited with their company-approved email.
11
+ rationale: >-
12
+ Ensuring new members of an organization have company-approved email prevents
13
+ existing members of the organization from inviting arbitrary new users to join. Without
14
+ this verification, they can invite anyone who is using the organization's version control
15
+ system or has an active email account, thus allowing outside users (and potential threat
16
+ actors) to easily gain access to company private code and resources. This practice will
17
+ subsequently reduce the chance of human error or typos when inviting a new member.
18
+ impact: >-
19
+ Existing members would not be able to invite new users who do not have a company-
20
+ approved email address.
21
+ audit: >-
22
+ For each group in use, verify for every invitation that the invited email address is
23
+ company-approved by performing the following:
24
+ On the left sidebar, select Search or go to and find your group.
25
+ Select Manage > Members.
26
+ Members that are not automatically added are displayed on the Invited tab.
27
+ Verify that each invitation email is company approved by your company.
28
+ remediation: >-
29
+ For each group, allow only users with company-approved email to be invited. If a user
30
+ was invited without company-approved email, perform the following:
31
+ On the left sidebar, select Search or go to and find your group.
32
+ Select Manage > Members.
33
+ Members that are not automatically added are displayed on the Invited tab.
34
+ Verify that each invitation email is company approved by your company.
35
+ To cancel the user's invitation to join your organization, click Cancel invitation.
36
+ default_value:
37
+ references:
38
+ - https://docs.gitlab.com/ee/user/group/#add-users-to-a-group
39
+ cis_controls:
40
+ - id: 6.1
41
+ version: 8
42
+ name: Establish an Access Granting Process
43
+ description: >-
44
+ Establish and follow a process, preferably automated, for granting access to
45
+ enterprise assets upon new hire, rights grant, or role change of a user.
46
+ implementation_groups:
47
+ - IG1
48
+ - IG2
49
+ - IG3
50
+ - id: 14.7
51
+ version: 7
52
+ name: Enforce Access Control to Data through Automated Tools
53
+ description: >-
54
+ Use an automated tool, such as host-based Data Loss Prevention, to
55
+ enforce access controls to data even when data is copied off a system.
56
+ implementation_groups:
57
+ - IG3
58
+ additional_info: >-
@@ -0,0 +1,56 @@
1
+ ---
2
+ id: 1.3.3
3
+ name: minimum_number_of_admins
4
+ title: Ensure minimum number of administrators are set for the organization
5
+ profile: 1
6
+ category: source_code
7
+ sub_category: contribution_access
8
+ description: >-
9
+ Ensure the organization has a minimum number of administrators.
10
+ rationale: >-
11
+ Organization administrators have the highest level of permissions, including the ability
12
+ to add/remove collaborators, create or delete repositories, change branch protection
13
+ policy, and convert to a publicly-accessible repository. Due to the permissive access
14
+ granted to an organization administrator, it is highly recommended to keep the number
15
+ of administrator accounts as minimal as possible.
16
+ impact: >-
17
+ audit: |
18
+ Verify the minimum number of administrators in your project by performing the following:
19
+ • On the left sidebar, select Search or go to and find your project.
20
+ • Select Manage > Members.
21
+ • At the top of the member list, from the dropdown list, select Max role the members have in the group and descending order.
22
+ • If there are minimum number of members with Owner/Maintainer role in the list, you are compliant.
23
+ remediation: |
24
+ Set the minimum number of administrators in your project by performing the following:
25
+ • On the left sidebar, select Search or go to and find your project.
26
+ • Select Manage > Members.
27
+ • At the top of the member list, from the dropdown list, select Max role the members have in the group and descending order.
28
+ • Next to the project member you want to remove, select Remove member.
29
+ default_value:
30
+ references:
31
+ - https://docs.gitlab.com/ee/user/project/members/#filter-and-sort-project-members
32
+ cis_controls:
33
+ - id: 5.4
34
+ version: 8
35
+ name: Restrict Administrator Privileges to Dedicated Administrator Accounts
36
+ description: >-
37
+ Restrict administrator privileges to dedicated administrator accounts on
38
+ enterprise assets. Conduct general computing activities, such as internet
39
+ browsing, email, and productivity suite use, from the user's primary, non-privileged
40
+ account.
41
+ implementation_groups:
42
+ - IG1
43
+ - IG2
44
+ - IG3
45
+ - id: 4.3
46
+ version: 7
47
+ name: Ensure the Use of Dedicated Administrative Accounts
48
+ description: >-
49
+ Ensure that all users with administrative account access use a dedicated or
50
+ secondary account for elevated activities. This account should only be used for
51
+ administrative activities and not internet browsing, email, or similar activities.
52
+ implementation_groups:
53
+ - IG1
54
+ - IG2
55
+ - IG3
56
+ additional_info: >-
@@ -0,0 +1,70 @@
1
+ ---
2
+ id: 1.3.11
3
+ name: org_provided_ssh_certs
4
+ title: Ensure an organization provides SSH certificates
5
+ profile: 2
6
+ category: source_code
7
+ sub_category: contribution_access
8
+ description: >-
9
+ As an organization, become an SSH Certificate Authority and provide SSH keys for
10
+ accessing repositories.
11
+ rationale: >-
12
+ There are two ways for remotely working with Source Code Management: via HTTPS,
13
+ which requires authentication by user/password, or via SSH, which requires the use of
14
+ SSH keys. SSH authentication is better in terms of security; key creation and
15
+ distribution, however, must be done in a secure manner. This can be accomplished by
16
+ implementing SSH certificates, which are used to validate the server's identity. A
17
+ developer will not be able to connect to a Git server if its key cannot be verified by the
18
+ SSH Certificate Authority (CA) server. As an organization, one can verify the SSH
19
+ certificate signature used to authenticate if a CA is defined and used. This ensures that
20
+ only verified developers can access organization repositories, as their SSH key will be
21
+ the only one signed by the CA certificate. This reduces the risk of misuse and malicious
22
+ code commits.
23
+ impact: >-
24
+ Members with unverified keys will not be able to clone organization repositories.
25
+ Signing, certification, and verification might also slow down the development process.
26
+ audit: |
27
+ GitLab allows you to restrict the allowed SSH key technology as well as specify the minimum key length for each technology:
28
+ 1. On the left sidebar, at the bottom, select Admin Area.
29
+ 2. Select Settings > General .
30
+ 3. Expand Visibility and access controls
31
+ 4. If a restriction is imposed on any key type, users cannot upload new SSH keys that don't meet the requirement. Any existing keys that don't meet it are disabled but not removed and users cannot pull or push code using them.
32
+ remediation: |
33
+ If you do not have an existing SSH key pair, generate a new one:
34
+ 1. Open a terminal.
35
+ 2. Run ssh-keygen -t followed by the key type and an optional comment. This comment is included in the .pub file that's created.
36
+ 3. Press Enter.
37
+ 4. Accept the suggested filename and directory, unless you are generating a deploy key or want to save in a specific directory where you store other keys.
38
+ 5. Specify a passphrase
39
+ 6. A confirmation is displayed, including information about where your files are stored. A public and private key are generated.
40
+ 7. Add the public SSH key to your GitLab account and keep the private key secure.
41
+ default_value:
42
+ references:
43
+ - https://docs.gitlab.com/ee/user/ssh.html#generate-an-ssh-key-pair
44
+ - https://docs.gitlab.com/ee/security/ssh_keys_restrictions.html
45
+ cis_controls:
46
+ - id: 12.5
47
+ version: 8
48
+ name: Centralize Network Authentication, Authorization, and Auditing (AAA)
49
+ description: >-
50
+ Centralize network AAA.
51
+ implementation_groups:
52
+ - IG2
53
+ - IG3
54
+ - id: 12.7
55
+ version: 8
56
+ name: Ensure Remote Devices Utilize a VPN and are Connecting to an Enterprise's AAA Infrastructure
57
+ description: >-
58
+ Require users to authenticate to enterprise-managed VPN and authentication
59
+ services prior to accessing enterprise resources on end-user devices.
60
+ implementation_groups:
61
+ - IG2
62
+ - IG3
63
+ - id: 1.8
64
+ version: 7
65
+ name: Utilize Client Certificates to Authenticate Hardware Assets
66
+ description: >-
67
+ Use client certificates to authenticate hardware assets connecting to the organization's trusted network.
68
+ implementation_groups:
69
+ - IG3
70
+ additional_info: >-
@@ -0,0 +1,21 @@
1
+ # 1.3 Contribution Access
2
+
3
+ This section consists of security recommendations for managing access to the application code. This includes managing both internal and external access, administrator accounts, permissions, identification methods, etc. Securing these items is important for software safety because every security constraint on access is an obstacle in the way of attacks.
4
+
5
+ This section differentiates between the common user account and an admin account. It is important to understand that due to the high permissions of the admin account, it should be used only for administrative work and not for everyday tasks.
6
+
7
+ ## Recommendations
8
+
9
+ * [1.3.1 - review_and_remove_inactive_users.yml](./review_and_remove_inactive_users.yml)
10
+ * [1.3.2 - limit_top_level_group_creation.yml](./limit_top_level_group_creation.yml)
11
+ * [1.3.3 - minimum_number_of_admins.yml](./minimum_number_of_admins.yml)
12
+ * [1.3.4 - require_mfa_for_contributors.yml](./require_mfa_for_contributors.yml)
13
+ * [1.3.5 - require_mfa_at_org_level.yml](./require_mfa_at_org_level.yml)
14
+ * [1.3.6 - limit_user_registration_domain.yml](./limit_user_registration_domain.yml)
15
+ * [1.3.7 - ensure_2_admins_per_repo.yml](./ensure_2_admins_per_repo.yml)
16
+ * [1.3.8 - strict_permissions_for_repo.yml](./strict_permissions_for_repo.yml)
17
+ * [1.3.9 - domain_verification.yml](./domain_verification.yml)
18
+ * [1.3.10 - scm_notification_restriction.yml](./scm_notification_restriction.yml)
19
+ * [1.3.11 - org_provided_ssh_certs.yml](./org_provided_ssh_certs.yml)
20
+ * [1.3.12 - restrict_ip_addresses.yml](./restrict_ip_addresses.yml)
21
+ * [1.3.13 - track_code_anomalies.yml](./track_code_anomalies.yml)
@@ -0,0 +1,89 @@
1
+ ---
2
+ id: 1.3.5
3
+ name: require_mfa_at_org_level
4
+ title: Ensure the organization is requiring members to use Multi-Factor Authentication (MFA)
5
+ profile: 2
6
+ category: source_code
7
+ sub_category: contribution_access
8
+ description: >-
9
+ Require members of the organization to use Multi-Factor Authentication (MFA) in
10
+ addition to a standard user name and password when authenticating to the source code
11
+ management platform.
12
+ rationale: >-
13
+ By default every user authenticates within the system by password only. If the password
14
+ of a user is compromised, however, the user account and every repository to which they
15
+ have access are in danger of data loss, malicious code commits, and data theft. It is
16
+ therefore recommended that each user has Multi-Factor Authentication enabled. This
17
+ adds an additional layer of protection to ensure the account remains secure even if the
18
+ user's password is compromised.
19
+ impact: >-
20
+ Members will be removed from the organization if they don't have Multi-Factor
21
+ Authentication already enabled. If this is the case, it is recommended that an invitation
22
+ be sent to reinstate the user's access and former privileges. They must enable Multi-
23
+ Factor Authentication to accept the invitation.
24
+ audit: |
25
+ For every organization that exists in your GitLab platform, verify that Two-Factor Authentication is enforced and is the only way to authenticate. Administrators can enforce 2FA for all users in two different ways:
26
+ • Enforce on next sign in.
27
+ • Suggest on next sign in, but allow a grace period before enforcing.
28
+
29
+ Use the UI:
30
+ 1. On the left sidebar, select Search or go to.
31
+ 2. Select Admin Area.
32
+ 3. On the left sidebar, select Settings > General.
33
+ 4. Expand the Sign-in restrictions section:
34
+ 5. Verify that Enforce two-factor authentication is enabled.
35
+ remediation: |
36
+ Use the UI:
37
+ 1. On the left sidebar, select Search or go to.
38
+ 2. Select Admin Area.
39
+ 3. On the left sidebar, select Settings > General.
40
+ 4. Expand the Sign-in restrictions section:
41
+ • Select Enforce two-factor authentication to enable this feature.
42
+ • In Two-factor grace period, enter a number of hours. If you want to enforce 2FA on next sign-in attempt, enter 0.
43
+
44
+ Use the API:
45
+ Use the application settings API to modify the following settings:
46
+ • require_two_factor_authentication, set to TRUE.
47
+ default_value:
48
+ references:
49
+ - https://docs.gitlab.com/ee/security/two_factor_authentication.html
50
+ cis_controls:
51
+ - id: 6.3
52
+ version: 8
53
+ name: Require MFA for Externally-Exposed Applications
54
+ description: >-
55
+ Require all externally-exposed enterprise or third-party applications to enforce
56
+ MFA, where supported. Enforcing MFA through a directory service or SSO
57
+ provider is a satisfactory implementation of this Safeguard.
58
+ implementation_groups:
59
+ - IG2
60
+ - IG3
61
+ - id: 6.4
62
+ version: 8
63
+ name: Require MFA for Remote Network Access
64
+ description: >-
65
+ Require MFA for remote network access
66
+ implementation_groups:
67
+ - IG1
68
+ - IG2
69
+ - IG3
70
+ - id: 6.5
71
+ version: 8
72
+ name: Require MFA for Administrative Access
73
+ description: >-
74
+ Require MFA for all administrative access accounts, where supported, on all
75
+ enterprise assets, whether managed on-site or through a third-party provider.
76
+ implementation_groups:
77
+ - IG1
78
+ - IG2
79
+ - IG3
80
+ - id: 16.3
81
+ version: 7
82
+ name: Require Multi-factor Authentication
83
+ description: >-
84
+ Require multi-factor authentication for all user accounts, on all systems,
85
+ whether managed onsite or by a third-party provider.
86
+ implementation_groups:
87
+ - IG2
88
+ - IG3
89
+ additional_info: >-
@@ -0,0 +1,76 @@
1
+ ---
2
+ id: 1.3.4
3
+ name: require_mfa_for_contributors
4
+ title: Ensure Multi-Factor Authentication (MFA) is required for contributors of new code
5
+ profile: 2
6
+ category: source_code
7
+ sub_category: contribution_access
8
+ description: >-
9
+ Require collaborators from outside the organization to use Multi-Factor Authentication
10
+ (MFA) in addition to a standard user name and password when authenticating to the
11
+ source code management platform.
12
+ rationale: >-
13
+ By default every user authenticates within the system by password only. If the password
14
+ of a user is compromised, however, the user account and every repository to which they
15
+ have access are in danger of data loss, malicious code commits, and data theft. It is
16
+ therefore recommended that each user has Multi-Factor Authentication enabled. This
17
+ adds an additional layer of protection to ensure the account remains secure even if the
18
+ user's password is compromised.
19
+ impact: >-
20
+ A member without enabled Multi-Factor Authentication cannot contribute to the project.
21
+ They must enable Multi-Factor Authentication a before they can contribute any code.
22
+ audit: |
23
+ For your top-level group, verify that Multi-Factor Authentication is enforced for contributors and is the only way to authenticate, by doing the following:
24
+ • On the left sidebar, at the bottom, select Admin Area.
25
+ • Select Settings > General.
26
+ • Expand Sign-in restrictions:
27
+ • Check if Enforce two-factor authentication is enabled. If so, you are compliant.
28
+ remediation: |
29
+ For your top-level group, enforce that Multi-Factor Authentication is enforced for contributors and is the only way to authenticate, by doing the following:
30
+ • On the left sidebar, at the bottom, select Admin Area.
31
+ • Select Settings > General.
32
+ • Expand Sign-in restrictions:
33
+ • Select Enforce two-factor authentication to enable this feature.
34
+ default_value:
35
+ references:
36
+ - https://docs.gitlab.com/ee/security/two_factor_authentication.html
37
+ cis_controls:
38
+ - id: 6.3
39
+ version: 8
40
+ name: Require MFA for Externally-Exposed Applications
41
+ description: >-
42
+ Require all externally-exposed enterprise or third-party applications to enforce
43
+ MFA, where supported. Enforcing MFA through a directory service or SSO
44
+ provider is a satisfactory implementation of this Safeguard.
45
+ implementation_groups:
46
+ - IG2
47
+ - IG3
48
+ - id: 6.4
49
+ version: 8
50
+ name: Require MFA for Remote Network Access
51
+ description: >-
52
+ Require MFA for remote network access
53
+ implementation_groups:
54
+ - IG1
55
+ - IG2
56
+ - IG3
57
+ - id: 6.5
58
+ version: 8
59
+ name: Require MFA for Administrative Access
60
+ description: >-
61
+ Require MFA for all administrative access accounts, where supported, on all
62
+ enterprise assets, whether managed on-site or through a third-party provider.
63
+ implementation_groups:
64
+ - IG1
65
+ - IG2
66
+ - IG3
67
+ - id: 16.3
68
+ version: 7
69
+ name: Require Multi-factor Authentication
70
+ description: >-
71
+ Require multi-factor authentication for all user accounts, on all systems,
72
+ whether managed onsite or by a third-party provider.
73
+ implementation_groups:
74
+ - IG2
75
+ - IG3
76
+ additional_info: >-