prowler-cloud 5.12.3__py3-none-any.whl → 5.13.0__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 (528) hide show
  1. dashboard/assets/markdown-styles.css +34 -0
  2. dashboard/compliance/c5_aws.py +43 -0
  3. dashboard/compliance/ccc_aws.py +36 -0
  4. dashboard/compliance/ccc_azure.py +36 -0
  5. dashboard/compliance/ccc_gcp.py +36 -0
  6. dashboard/compliance/cis_3_0_oci.py +41 -0
  7. dashboard/pages/overview.py +66 -16
  8. prowler/CHANGELOG.md +60 -0
  9. prowler/__main__.py +128 -14
  10. prowler/compliance/aws/aws_account_security_onboarding_aws.json +1 -0
  11. prowler/compliance/aws/aws_audit_manager_control_tower_guardrails_aws.json +1 -0
  12. prowler/compliance/aws/aws_foundational_security_best_practices_aws.json +2 -1
  13. prowler/compliance/aws/aws_foundational_technical_review_aws.json +1 -0
  14. prowler/compliance/aws/aws_well_architected_framework_reliability_pillar_aws.json +1 -0
  15. prowler/compliance/aws/aws_well_architected_framework_security_pillar_aws.json +1 -0
  16. prowler/compliance/aws/c5_aws.json +10744 -0
  17. prowler/compliance/aws/ccc_aws.json +6206 -0
  18. prowler/compliance/aws/cis_1.4_aws.json +1 -0
  19. prowler/compliance/aws/cis_1.5_aws.json +1 -0
  20. prowler/compliance/aws/cis_2.0_aws.json +1 -0
  21. prowler/compliance/aws/cis_3.0_aws.json +1 -0
  22. prowler/compliance/aws/cis_4.0_aws.json +1 -0
  23. prowler/compliance/aws/cis_5.0_aws.json +1 -0
  24. prowler/compliance/aws/cisa_aws.json +1 -0
  25. prowler/compliance/aws/ens_rd2022_aws.json +1 -0
  26. prowler/compliance/aws/fedramp_low_revision_4_aws.json +1 -0
  27. prowler/compliance/aws/fedramp_moderate_revision_4_aws.json +1 -0
  28. prowler/compliance/aws/ffiec_aws.json +1 -0
  29. prowler/compliance/aws/gdpr_aws.json +1 -0
  30. prowler/compliance/aws/gxp_21_cfr_part_11_aws.json +1 -0
  31. prowler/compliance/aws/gxp_eu_annex_11_aws.json +1 -0
  32. prowler/compliance/aws/hipaa_aws.json +1 -0
  33. prowler/compliance/aws/iso27001_2013_aws.json +1 -0
  34. prowler/compliance/aws/iso27001_2022_aws.json +1 -0
  35. prowler/compliance/aws/kisa_isms_p_2023_aws.json +1 -0
  36. prowler/compliance/aws/kisa_isms_p_2023_korean_aws.json +1 -0
  37. prowler/compliance/aws/mitre_attack_aws.json +287 -11
  38. prowler/compliance/aws/nis2_aws.json +1 -0
  39. prowler/compliance/aws/nist_800_171_revision_2_aws.json +1 -0
  40. prowler/compliance/aws/nist_800_53_revision_4_aws.json +1 -0
  41. prowler/compliance/aws/nist_800_53_revision_5_aws.json +1 -0
  42. prowler/compliance/aws/nist_csf_1.1_aws.json +1 -0
  43. prowler/compliance/aws/pci_3.2.1_aws.json +2 -1
  44. prowler/compliance/aws/pci_4.0_aws.json +1 -0
  45. prowler/compliance/aws/prowler_threatscore_aws.json +1 -0
  46. prowler/compliance/aws/rbi_cyber_security_framework_aws.json +1 -0
  47. prowler/compliance/aws/soc2_aws.json +1 -0
  48. prowler/compliance/azure/ccc_azure.json +6147 -0
  49. prowler/compliance/azure/cis_2.0_azure.json +1 -0
  50. prowler/compliance/azure/cis_2.1_azure.json +1 -0
  51. prowler/compliance/azure/cis_3.0_azure.json +1 -0
  52. prowler/compliance/azure/cis_4.0_azure.json +1 -0
  53. prowler/compliance/azure/ens_rd2022_azure.json +1 -0
  54. prowler/compliance/azure/iso27001_2022_azure.json +1 -0
  55. prowler/compliance/azure/mitre_attack_azure.json +131 -5
  56. prowler/compliance/azure/nis2_azure.json +1 -0
  57. prowler/compliance/azure/pci_4.0_azure.json +1 -0
  58. prowler/compliance/azure/prowler_threatscore_azure.json +1 -0
  59. prowler/compliance/azure/soc2_azure.json +1 -0
  60. prowler/compliance/gcp/ccc_gcp.json +6077 -0
  61. prowler/compliance/gcp/cis_2.0_gcp.json +1 -0
  62. prowler/compliance/gcp/cis_3.0_gcp.json +1 -0
  63. prowler/compliance/gcp/cis_4.0_gcp.json +1 -0
  64. prowler/compliance/gcp/ens_rd2022_gcp.json +1 -0
  65. prowler/compliance/gcp/iso27001_2022_gcp.json +1 -0
  66. prowler/compliance/gcp/mitre_attack_gcp.json +287 -11
  67. prowler/compliance/gcp/nis2_gcp.json +1 -0
  68. prowler/compliance/gcp/pci_4.0_gcp.json +1 -0
  69. prowler/compliance/gcp/prowler_threatscore_gcp.json +1 -0
  70. prowler/compliance/gcp/soc2_gcp.json +1 -0
  71. prowler/compliance/github/cis_1.0_github.json +1 -0
  72. prowler/compliance/kubernetes/cis_1.10_kubernetes.json +1 -0
  73. prowler/compliance/kubernetes/cis_1.11_kubernetes.json +1 -0
  74. prowler/compliance/kubernetes/cis_1.8_kubernetes.json +1 -0
  75. prowler/compliance/kubernetes/iso27001_2022_kubernetes.json +1 -0
  76. prowler/compliance/kubernetes/pci_4.0_kubernetes.json +1 -0
  77. prowler/compliance/llm/__init__.py +0 -0
  78. prowler/compliance/m365/cis_4.0_m365.json +1 -0
  79. prowler/compliance/m365/iso27001_2022_m365.json +1 -0
  80. prowler/compliance/m365/prowler_threatscore_m365.json +1 -0
  81. prowler/compliance/nhn/iso27001_2022_nhn.json +1 -0
  82. prowler/compliance/oci/__init__.py +0 -0
  83. prowler/compliance/oci/cis_3.0_oci.json +1141 -0
  84. prowler/config/config.py +5 -1
  85. prowler/config/llm_config.yaml +175015 -0
  86. prowler/config/oraclecloud_mutelist_example.yaml +61 -0
  87. prowler/lib/check/check.py +9 -1
  88. prowler/lib/check/compliance.py +1 -0
  89. prowler/lib/check/compliance_models.py +33 -3
  90. prowler/lib/check/models.py +96 -8
  91. prowler/lib/check/utils.py +8 -2
  92. prowler/lib/cli/parser.py +6 -4
  93. prowler/lib/outputs/compliance/aws_well_architected/aws_well_architected.py +4 -0
  94. prowler/lib/outputs/compliance/aws_well_architected/models.py +2 -0
  95. prowler/lib/outputs/compliance/c5/__init__.py +0 -0
  96. prowler/lib/outputs/compliance/c5/c5.py +98 -0
  97. prowler/lib/outputs/compliance/c5/c5_aws.py +92 -0
  98. prowler/lib/outputs/compliance/c5/models.py +30 -0
  99. prowler/lib/outputs/compliance/ccc/__init__.py +0 -0
  100. prowler/lib/outputs/compliance/ccc/ccc_aws.py +95 -0
  101. prowler/lib/outputs/compliance/ccc/ccc_azure.py +95 -0
  102. prowler/lib/outputs/compliance/ccc/ccc_gcp.py +95 -0
  103. prowler/lib/outputs/compliance/ccc/models.py +90 -0
  104. prowler/lib/outputs/compliance/cis/cis_aws.py +4 -0
  105. prowler/lib/outputs/compliance/cis/cis_azure.py +4 -0
  106. prowler/lib/outputs/compliance/cis/cis_gcp.py +4 -0
  107. prowler/lib/outputs/compliance/cis/cis_github.py +4 -0
  108. prowler/lib/outputs/compliance/cis/cis_kubernetes.py +4 -0
  109. prowler/lib/outputs/compliance/cis/cis_m365.py +4 -0
  110. prowler/lib/outputs/compliance/cis/cis_oci.py +106 -0
  111. prowler/lib/outputs/compliance/cis/models.py +56 -0
  112. prowler/lib/outputs/compliance/compliance.py +10 -0
  113. prowler/lib/outputs/compliance/compliance_output.py +4 -1
  114. prowler/lib/outputs/compliance/ens/ens_aws.py +4 -0
  115. prowler/lib/outputs/compliance/ens/ens_azure.py +4 -0
  116. prowler/lib/outputs/compliance/ens/ens_gcp.py +4 -0
  117. prowler/lib/outputs/compliance/ens/models.py +6 -0
  118. prowler/lib/outputs/compliance/generic/generic.py +4 -0
  119. prowler/lib/outputs/compliance/generic/models.py +2 -0
  120. prowler/lib/outputs/compliance/iso27001/iso27001_aws.py +4 -0
  121. prowler/lib/outputs/compliance/iso27001/iso27001_azure.py +4 -0
  122. prowler/lib/outputs/compliance/iso27001/iso27001_gcp.py +4 -0
  123. prowler/lib/outputs/compliance/iso27001/iso27001_kubernetes.py +4 -0
  124. prowler/lib/outputs/compliance/iso27001/iso27001_m365.py +4 -0
  125. prowler/lib/outputs/compliance/iso27001/iso27001_nhn.py +4 -0
  126. prowler/lib/outputs/compliance/iso27001/models.py +12 -0
  127. prowler/lib/outputs/compliance/kisa_ismsp/kisa_ismsp_aws.py +4 -0
  128. prowler/lib/outputs/compliance/kisa_ismsp/models.py +2 -0
  129. prowler/lib/outputs/compliance/mitre_attack/mitre_attack_aws.py +4 -0
  130. prowler/lib/outputs/compliance/mitre_attack/mitre_attack_azure.py +4 -0
  131. prowler/lib/outputs/compliance/mitre_attack/mitre_attack_gcp.py +4 -0
  132. prowler/lib/outputs/compliance/mitre_attack/models.py +6 -0
  133. prowler/lib/outputs/compliance/prowler_threatscore/models.py +8 -0
  134. prowler/lib/outputs/compliance/prowler_threatscore/prowler_threatscore.py +46 -4
  135. prowler/lib/outputs/compliance/prowler_threatscore/prowler_threatscore_aws.py +4 -0
  136. prowler/lib/outputs/compliance/prowler_threatscore/prowler_threatscore_azure.py +4 -0
  137. prowler/lib/outputs/compliance/prowler_threatscore/prowler_threatscore_gcp.py +4 -0
  138. prowler/lib/outputs/compliance/prowler_threatscore/prowler_threatscore_m365.py +4 -0
  139. prowler/lib/outputs/csv/csv.py +3 -0
  140. prowler/lib/outputs/finding.py +22 -0
  141. prowler/lib/outputs/html/html.py +192 -7
  142. prowler/lib/outputs/jira/jira.py +284 -47
  143. prowler/lib/outputs/ocsf/ocsf.py +1 -4
  144. prowler/lib/outputs/outputs.py +6 -0
  145. prowler/lib/outputs/summary_table.py +10 -0
  146. prowler/providers/aws/aws_regions_by_service.json +221 -44
  147. prowler/providers/aws/lib/quick_inventory/quick_inventory.py +3 -0
  148. prowler/providers/aws/lib/security_hub/security_hub.py +12 -2
  149. prowler/providers/aws/services/accessanalyzer/accessanalyzer_enabled/accessanalyzer_enabled.metadata.json +27 -13
  150. prowler/providers/aws/services/accessanalyzer/accessanalyzer_enabled_without_findings/accessanalyzer_enabled_without_findings.metadata.json +32 -13
  151. prowler/providers/aws/services/account/account_maintain_current_contact_details/account_maintain_current_contact_details.metadata.json +23 -11
  152. prowler/providers/aws/services/account/account_maintain_different_contact_details_to_security_billing_and_operations/account_maintain_different_contact_details_to_security_billing_and_operations.metadata.json +24 -12
  153. prowler/providers/aws/services/account/account_security_contact_information_is_registered/account_security_contact_information_is_registered.metadata.json +19 -11
  154. prowler/providers/aws/services/account/account_security_questions_are_registered_in_the_aws_account/account_security_questions_are_registered_in_the_aws_account.metadata.json +14 -10
  155. prowler/providers/aws/services/acm/acm_certificates_expiration_check/acm_certificates_expiration_check.metadata.json +17 -9
  156. prowler/providers/aws/services/acm/acm_certificates_transparency_logs_enabled/acm_certificates_transparency_logs_enabled.metadata.json +16 -12
  157. prowler/providers/aws/services/acm/acm_certificates_with_secure_key_algorithms/acm_certificates_with_secure_key_algorithms.metadata.json +21 -12
  158. prowler/providers/aws/services/apigateway/apigateway_restapi_authorizers_enabled/apigateway_restapi_authorizers_enabled.metadata.json +23 -16
  159. prowler/providers/aws/services/apigateway/apigateway_restapi_cache_encrypted/apigateway_restapi_cache_encrypted.metadata.json +22 -12
  160. prowler/providers/aws/services/apigateway/apigateway_restapi_client_certificate_enabled/apigateway_restapi_client_certificate_enabled.metadata.json +26 -18
  161. prowler/providers/aws/services/apigateway/apigateway_restapi_logging_enabled/apigateway_restapi_logging_enabled.metadata.json +30 -19
  162. prowler/providers/aws/services/apigateway/apigateway_restapi_public/apigateway_restapi_public.metadata.json +24 -16
  163. prowler/providers/aws/services/apigateway/apigateway_restapi_public_with_authorizer/apigateway_restapi_public_with_authorizer.metadata.json +31 -18
  164. prowler/providers/aws/services/apigateway/apigateway_restapi_tracing_enabled/apigateway_restapi_tracing_enabled.metadata.json +20 -12
  165. prowler/providers/aws/services/apigateway/apigateway_restapi_waf_acl_attached/apigateway_restapi_waf_acl_attached.metadata.json +24 -18
  166. prowler/providers/aws/services/apigatewayv2/apigatewayv2_api_access_logging_enabled/apigatewayv2_api_access_logging_enabled.metadata.json +18 -12
  167. prowler/providers/aws/services/apigatewayv2/apigatewayv2_api_authorizers_enabled/apigatewayv2_api_authorizers_enabled.metadata.json +21 -12
  168. prowler/providers/aws/services/appstream/appstream_fleet_default_internet_access_disabled/appstream_fleet_default_internet_access_disabled.metadata.json +23 -15
  169. prowler/providers/aws/services/appstream/appstream_fleet_maximum_session_duration/appstream_fleet_maximum_session_duration.metadata.json +15 -12
  170. prowler/providers/aws/services/appstream/appstream_fleet_session_disconnect_timeout/appstream_fleet_session_disconnect_timeout.metadata.json +17 -14
  171. prowler/providers/aws/services/appstream/appstream_fleet_session_idle_disconnect_timeout/appstream_fleet_session_idle_disconnect_timeout.metadata.json +20 -15
  172. prowler/providers/aws/services/appsync/appsync_field_level_logging_enabled/appsync_field_level_logging_enabled.metadata.json +21 -12
  173. prowler/providers/aws/services/appsync/appsync_graphql_api_no_api_key_authentication/appsync_graphql_api_no_api_key_authentication.metadata.json +20 -13
  174. prowler/providers/aws/services/athena/athena_workgroup_encryption/athena_workgroup_encryption.metadata.json +24 -12
  175. prowler/providers/aws/services/athena/athena_workgroup_enforce_configuration/athena_workgroup_enforce_configuration.metadata.json +20 -13
  176. prowler/providers/aws/services/athena/athena_workgroup_logging_enabled/athena_workgroup_logging_enabled.metadata.json +21 -12
  177. prowler/providers/aws/services/autoscaling/autoscaling_find_secrets_ec2_launch_configuration/autoscaling_find_secrets_ec2_launch_configuration.metadata.json +15 -10
  178. prowler/providers/aws/services/autoscaling/autoscaling_group_capacity_rebalance_enabled/autoscaling_group_capacity_rebalance_enabled.metadata.json +20 -13
  179. prowler/providers/aws/services/autoscaling/autoscaling_group_elb_health_check_enabled/autoscaling_group_elb_health_check_enabled.metadata.json +20 -12
  180. prowler/providers/aws/services/autoscaling/autoscaling_group_launch_configuration_no_public_ip/autoscaling_group_launch_configuration_no_public_ip.metadata.json +20 -13
  181. prowler/providers/aws/services/autoscaling/autoscaling_group_launch_configuration_requires_imdsv2/autoscaling_group_launch_configuration_requires_imdsv2.metadata.json +26 -14
  182. prowler/providers/aws/services/autoscaling/autoscaling_group_multiple_az/autoscaling_group_multiple_az.metadata.json +22 -13
  183. prowler/providers/aws/services/autoscaling/autoscaling_group_multiple_instance_types/autoscaling_group_multiple_instance_types.metadata.json +21 -13
  184. prowler/providers/aws/services/autoscaling/autoscaling_group_using_ec2_launch_template/autoscaling_group_using_ec2_launch_template.metadata.json +19 -12
  185. prowler/providers/aws/services/autoscaling/autoscaling_service.py +1 -1
  186. prowler/providers/aws/services/awslambda/awslambda_function_inside_vpc/awslambda_function_inside_vpc.metadata.json +26 -13
  187. prowler/providers/aws/services/awslambda/awslambda_function_invoke_api_operations_cloudtrail_logging_enabled/awslambda_function_invoke_api_operations_cloudtrail_logging_enabled.metadata.json +20 -13
  188. prowler/providers/aws/services/awslambda/awslambda_function_no_secrets_in_code/awslambda_function_no_secrets_in_code.metadata.json +18 -9
  189. prowler/providers/aws/services/awslambda/awslambda_function_no_secrets_in_variables/awslambda_function_no_secrets_in_variables.metadata.json +20 -12
  190. prowler/providers/aws/services/awslambda/awslambda_function_not_publicly_accessible/awslambda_function_not_publicly_accessible.metadata.json +21 -12
  191. prowler/providers/aws/services/awslambda/awslambda_function_url_cors_policy/awslambda_function_url_cors_policy.metadata.json +24 -13
  192. prowler/providers/aws/services/awslambda/awslambda_function_url_public/awslambda_function_url_public.metadata.json +22 -12
  193. prowler/providers/aws/services/awslambda/awslambda_function_using_supported_runtimes/awslambda_function_using_supported_runtimes.metadata.json +24 -13
  194. prowler/providers/aws/services/awslambda/awslambda_function_vpc_multi_az/awslambda_function_vpc_multi_az.metadata.json +23 -13
  195. prowler/providers/aws/services/backup/backup_plans_exist/backup_plans_exist.metadata.json +22 -15
  196. prowler/providers/aws/services/backup/backup_recovery_point_encrypted/backup_recovery_point_encrypted.metadata.json +21 -12
  197. prowler/providers/aws/services/backup/backup_reportplans_exist/backup_reportplans_exist.metadata.json +19 -15
  198. prowler/providers/aws/services/backup/backup_vaults_encrypted/backup_vaults_encrypted.metadata.json +24 -13
  199. prowler/providers/aws/services/backup/backup_vaults_exist/backup_vaults_exist.metadata.json +19 -15
  200. prowler/providers/aws/services/cloudformation/cloudformation_stack_cdktoolkit_bootstrap_version/cloudformation_stack_cdktoolkit_bootstrap_version.metadata.json +24 -13
  201. prowler/providers/aws/services/cloudformation/cloudformation_stack_outputs_find_secrets/cloudformation_stack_outputs_find_secrets.metadata.json +22 -12
  202. prowler/providers/aws/services/cloudformation/cloudformation_stacks_termination_protection_enabled/cloudformation_stacks_termination_protection_enabled.metadata.json +21 -12
  203. prowler/providers/aws/services/cloudfront/cloudfront_distributions_custom_ssl_certificate/cloudfront_distributions_custom_ssl_certificate.metadata.json +21 -12
  204. prowler/providers/aws/services/cloudfront/cloudfront_distributions_default_root_object/cloudfront_distributions_default_root_object.metadata.json +19 -12
  205. prowler/providers/aws/services/cloudfront/cloudfront_distributions_field_level_encryption_enabled/cloudfront_distributions_field_level_encryption_enabled.metadata.json +19 -12
  206. prowler/providers/aws/services/cloudfront/cloudfront_distributions_geo_restrictions_enabled/cloudfront_distributions_geo_restrictions_enabled.metadata.json +22 -13
  207. prowler/providers/aws/services/cloudfront/cloudfront_distributions_https_enabled/cloudfront_distributions_https_enabled.metadata.json +21 -12
  208. prowler/providers/aws/services/cloudfront/cloudfront_distributions_https_sni_enabled/cloudfront_distributions_https_sni_enabled.metadata.json +20 -12
  209. prowler/providers/aws/services/cloudfront/cloudfront_distributions_logging_enabled/cloudfront_distributions_logging_enabled.metadata.json +22 -13
  210. prowler/providers/aws/services/cloudfront/cloudfront_distributions_multiple_origin_failover_configured/cloudfront_distributions_multiple_origin_failover_configured.metadata.json +21 -16
  211. prowler/providers/aws/services/cloudfront/cloudfront_distributions_origin_traffic_encrypted/cloudfront_distributions_origin_traffic_encrypted.metadata.json +27 -14
  212. prowler/providers/aws/services/cloudfront/cloudfront_distributions_s3_origin_access_control/cloudfront_distributions_s3_origin_access_control.metadata.json +24 -14
  213. prowler/providers/aws/services/cloudfront/cloudfront_distributions_s3_origin_non_existent_bucket/cloudfront_distributions_s3_origin_non_existent_bucket.metadata.json +18 -11
  214. prowler/providers/aws/services/cloudfront/cloudfront_distributions_using_deprecated_ssl_protocols/cloudfront_distributions_using_deprecated_ssl_protocols.metadata.json +20 -12
  215. prowler/providers/aws/services/cloudfront/cloudfront_distributions_using_waf/cloudfront_distributions_using_waf.metadata.json +21 -12
  216. prowler/providers/aws/services/cloudtrail/cloudtrail_bucket_requires_mfa_delete/cloudtrail_bucket_requires_mfa_delete.metadata.json +16 -11
  217. prowler/providers/aws/services/cloudtrail/cloudtrail_cloudwatch_logging_enabled/cloudtrail_cloudwatch_logging_enabled.metadata.json +19 -15
  218. prowler/providers/aws/services/cloudtrail/cloudtrail_insights_exist/cloudtrail_insights_exist.metadata.json +19 -14
  219. prowler/providers/aws/services/cloudtrail/cloudtrail_kms_encryption_enabled/cloudtrail_kms_encryption_enabled.metadata.json +19 -14
  220. prowler/providers/aws/services/cloudtrail/cloudtrail_log_file_validation_enabled/cloudtrail_log_file_validation_enabled.metadata.json +20 -13
  221. prowler/providers/aws/services/cloudtrail/cloudtrail_logs_s3_bucket_access_logging_enabled/cloudtrail_logs_s3_bucket_access_logging_enabled.metadata.json +18 -13
  222. prowler/providers/aws/services/cloudtrail/cloudtrail_logs_s3_bucket_is_not_publicly_accessible/cloudtrail_logs_s3_bucket_is_not_publicly_accessible.metadata.json +24 -16
  223. prowler/providers/aws/services/cloudtrail/cloudtrail_multi_region_enabled/cloudtrail_multi_region_enabled.metadata.json +17 -13
  224. prowler/providers/aws/services/cloudtrail/cloudtrail_multi_region_enabled_logging_management_events/cloudtrail_multi_region_enabled_logging_management_events.metadata.json +19 -12
  225. prowler/providers/aws/services/cloudtrail/cloudtrail_s3_dataevents_read_enabled/cloudtrail_s3_dataevents_read_enabled.metadata.json +22 -12
  226. prowler/providers/aws/services/cloudtrail/cloudtrail_s3_dataevents_write_enabled/cloudtrail_s3_dataevents_write_enabled.metadata.json +21 -11
  227. prowler/providers/aws/services/cloudtrail/cloudtrail_threat_detection_enumeration/cloudtrail_threat_detection_enumeration.metadata.json +22 -11
  228. prowler/providers/aws/services/cloudtrail/cloudtrail_threat_detection_llm_jacking/cloudtrail_threat_detection_llm_jacking.metadata.json +25 -12
  229. prowler/providers/aws/services/cloudtrail/cloudtrail_threat_detection_privilege_escalation/cloudtrail_threat_detection_privilege_escalation.metadata.json +18 -10
  230. prowler/providers/aws/services/config/config_recorder_all_regions_enabled/config_recorder_all_regions_enabled.metadata.json +20 -12
  231. prowler/providers/aws/services/config/config_recorder_using_aws_service_role/config_recorder_using_aws_service_role.metadata.json +20 -13
  232. prowler/providers/aws/services/directoryservice/directoryservice_directory_log_forwarding_enabled/directoryservice_directory_log_forwarding_enabled.metadata.json +20 -11
  233. prowler/providers/aws/services/directoryservice/directoryservice_directory_monitor_notifications/directoryservice_directory_monitor_notifications.metadata.json +19 -11
  234. prowler/providers/aws/services/directoryservice/directoryservice_directory_snapshots_limit/directoryservice_directory_snapshots_limit.metadata.json +19 -10
  235. prowler/providers/aws/services/directoryservice/directoryservice_ldap_certificate_expiration/directoryservice_ldap_certificate_expiration.metadata.json +20 -11
  236. prowler/providers/aws/services/directoryservice/directoryservice_radius_server_security_protocol/directoryservice_radius_server_security_protocol.metadata.json +23 -12
  237. prowler/providers/aws/services/directoryservice/directoryservice_supported_mfa_radius_enabled/directoryservice_supported_mfa_radius_enabled.metadata.json +23 -12
  238. prowler/providers/aws/services/dlm/dlm_ebs_snapshot_lifecycle_policy_exists/dlm_ebs_snapshot_lifecycle_policy_exists.metadata.json +19 -13
  239. prowler/providers/aws/services/dms/dms_endpoint_mongodb_authentication_enabled/dms_endpoint_mongodb_authentication_enabled.metadata.json +20 -13
  240. prowler/providers/aws/services/dms/dms_endpoint_neptune_iam_authorization_enabled/dms_endpoint_neptune_iam_authorization_enabled.metadata.json +19 -12
  241. prowler/providers/aws/services/dms/dms_endpoint_redis_in_transit_encryption_enabled/dms_endpoint_redis_in_transit_encryption_enabled.metadata.json +23 -13
  242. prowler/providers/aws/services/dms/dms_endpoint_ssl_enabled/dms_endpoint_ssl_enabled.metadata.json +27 -19
  243. prowler/providers/aws/services/dms/dms_instance_minor_version_upgrade_enabled/dms_instance_minor_version_upgrade_enabled.metadata.json +22 -12
  244. prowler/providers/aws/services/dms/dms_instance_multi_az_enabled/dms_instance_multi_az_enabled.metadata.json +20 -13
  245. prowler/providers/aws/services/dms/dms_instance_no_public_access/dms_instance_no_public_access.metadata.json +22 -11
  246. prowler/providers/aws/services/dms/dms_replication_task_source_logging_enabled/dms_replication_task_source_logging_enabled.metadata.json +21 -13
  247. prowler/providers/aws/services/dms/dms_replication_task_target_logging_enabled/dms_replication_task_target_logging_enabled.metadata.json +22 -13
  248. prowler/providers/aws/services/dms/dms_replication_task_target_logging_enabled/dms_replication_task_target_logging_enabled.py +39 -37
  249. prowler/providers/aws/services/dms/dms_service.py +0 -1
  250. prowler/providers/aws/services/ec2/ec2_ami_public/ec2_ami_public.py +11 -10
  251. prowler/providers/aws/services/ec2/ec2_instance_with_outdated_ami/__init__.py +0 -0
  252. prowler/providers/aws/services/ec2/ec2_instance_with_outdated_ami/ec2_instance_with_outdated_ami.metadata.json +30 -0
  253. prowler/providers/aws/services/ec2/ec2_instance_with_outdated_ami/ec2_instance_with_outdated_ami.py +52 -0
  254. prowler/providers/aws/services/ec2/ec2_service.py +26 -14
  255. prowler/providers/aws/services/efs/efs_access_point_enforce_root_directory/efs_access_point_enforce_root_directory.metadata.json +19 -13
  256. prowler/providers/aws/services/efs/efs_access_point_enforce_user_identity/efs_access_point_enforce_user_identity.metadata.json +23 -13
  257. prowler/providers/aws/services/efs/efs_encryption_at_rest_enabled/efs_encryption_at_rest_enabled.metadata.json +23 -13
  258. prowler/providers/aws/services/efs/efs_have_backup_enabled/efs_have_backup_enabled.metadata.json +20 -14
  259. prowler/providers/aws/services/efs/efs_mount_target_not_publicly_accessible/efs_mount_target_not_publicly_accessible.metadata.json +18 -12
  260. prowler/providers/aws/services/efs/efs_multi_az_enabled/efs_multi_az_enabled.metadata.json +21 -13
  261. prowler/providers/aws/services/efs/efs_not_publicly_accessible/efs_not_publicly_accessible.metadata.json +17 -13
  262. prowler/providers/aws/services/eks/eks_cluster_uses_a_supported_version/eks_cluster_uses_a_supported_version.py +4 -0
  263. prowler/providers/aws/services/elb/elb_ssl_listeners_use_acm_certificate/elb_ssl_listeners_use_acm_certificate.py +8 -2
  264. prowler/providers/aws/services/neptune/neptune_cluster_backup_enabled/neptune_cluster_backup_enabled.metadata.json +23 -13
  265. prowler/providers/aws/services/neptune/neptune_cluster_copy_tags_to_snapshots/neptune_cluster_copy_tags_to_snapshots.metadata.json +18 -14
  266. prowler/providers/aws/services/neptune/neptune_cluster_deletion_protection/neptune_cluster_deletion_protection.metadata.json +23 -14
  267. prowler/providers/aws/services/neptune/neptune_cluster_iam_authentication_enabled/neptune_cluster_iam_authentication_enabled.metadata.json +25 -13
  268. prowler/providers/aws/services/neptune/neptune_cluster_integration_cloudwatch_logs/neptune_cluster_integration_cloudwatch_logs.metadata.json +22 -14
  269. prowler/providers/aws/services/neptune/neptune_cluster_multi_az/neptune_cluster_multi_az.metadata.json +20 -12
  270. prowler/providers/aws/services/neptune/neptune_cluster_public_snapshot/neptune_cluster_public_snapshot.metadata.json +18 -10
  271. prowler/providers/aws/services/neptune/neptune_cluster_snapshot_encrypted/neptune_cluster_snapshot_encrypted.metadata.json +16 -10
  272. prowler/providers/aws/services/neptune/neptune_cluster_storage_encrypted/neptune_cluster_storage_encrypted.metadata.json +22 -13
  273. prowler/providers/aws/services/neptune/neptune_cluster_uses_public_subnet/neptune_cluster_uses_public_subnet.metadata.json +20 -12
  274. prowler/providers/aws/services/rds/rds_service.py +9 -2
  275. prowler/providers/aws/services/vpc/vpc_service.py +1 -1
  276. prowler/providers/azure/services/entra/entra_service.py +54 -25
  277. prowler/providers/common/arguments.py +16 -2
  278. prowler/providers/common/provider.py +34 -2
  279. prowler/providers/gcp/services/cloudsql/cloudsql_service.py +3 -3
  280. prowler/providers/gcp/services/cloudstorage/cloudstorage_bucket_lifecycle_management_enabled/__init__.py +0 -0
  281. prowler/providers/gcp/services/cloudstorage/cloudstorage_bucket_lifecycle_management_enabled/cloudstorage_bucket_lifecycle_management_enabled.metadata.json +34 -0
  282. prowler/providers/gcp/services/cloudstorage/cloudstorage_bucket_lifecycle_management_enabled/cloudstorage_bucket_lifecycle_management_enabled.py +48 -0
  283. prowler/providers/gcp/services/cloudstorage/cloudstorage_service.py +10 -0
  284. prowler/providers/gcp/services/compute/compute_project_os_login_enabled/compute_project_os_login_enabled.py +5 -0
  285. prowler/providers/gcp/services/iam/iam_audit_logs_enabled/iam_audit_logs_enabled.py +5 -0
  286. prowler/providers/gcp/services/iam/iam_role_kms_enforce_separation_of_duties/iam_role_kms_enforce_separation_of_duties.py +5 -0
  287. prowler/providers/gcp/services/logging/logging_log_metric_filter_and_alert_for_audit_configuration_changes_enabled/logging_log_metric_filter_and_alert_for_audit_configuration_changes_enabled.py +5 -0
  288. prowler/providers/gcp/services/logging/logging_log_metric_filter_and_alert_for_bucket_permission_changes_enabled/logging_log_metric_filter_and_alert_for_bucket_permission_changes_enabled.py +5 -0
  289. prowler/providers/gcp/services/logging/logging_log_metric_filter_and_alert_for_custom_role_changes_enabled/logging_log_metric_filter_and_alert_for_custom_role_changes_enabled.py +5 -0
  290. prowler/providers/gcp/services/logging/logging_log_metric_filter_and_alert_for_project_ownership_changes_enabled/logging_log_metric_filter_and_alert_for_project_ownership_changes_enabled.py +5 -0
  291. prowler/providers/gcp/services/logging/logging_log_metric_filter_and_alert_for_sql_instance_configuration_changes_enabled/logging_log_metric_filter_and_alert_for_sql_instance_configuration_changes_enabled.py +5 -0
  292. prowler/providers/gcp/services/logging/logging_log_metric_filter_and_alert_for_vpc_firewall_rule_changes_enabled/logging_log_metric_filter_and_alert_for_vpc_firewall_rule_changes_enabled.py +5 -0
  293. prowler/providers/gcp/services/logging/logging_log_metric_filter_and_alert_for_vpc_network_changes_enabled/logging_log_metric_filter_and_alert_for_vpc_network_changes_enabled.py +5 -0
  294. prowler/providers/gcp/services/logging/logging_log_metric_filter_and_alert_for_vpc_network_route_changes_enabled/logging_log_metric_filter_and_alert_for_vpc_network_route_changes_enabled.py +5 -0
  295. prowler/providers/gcp/services/logging/logging_sink_created/logging_sink_created.py +5 -0
  296. prowler/providers/gcp/services/monitoring/monitoring_service.py +30 -2
  297. prowler/providers/iac/iac_provider.py +1 -1
  298. prowler/providers/llm/__init__.py +0 -0
  299. prowler/providers/llm/lib/__init__.py +0 -0
  300. prowler/providers/llm/lib/arguments/__init__.py +0 -0
  301. prowler/providers/llm/lib/arguments/arguments.py +13 -0
  302. prowler/providers/llm/llm_provider.py +518 -0
  303. prowler/providers/llm/models.py +27 -0
  304. prowler/providers/m365/exceptions/exceptions.py +0 -55
  305. prowler/providers/m365/lib/arguments/arguments.py +8 -4
  306. prowler/providers/m365/lib/powershell/m365_powershell.py +14 -156
  307. prowler/providers/m365/m365_provider.py +19 -117
  308. prowler/providers/m365/models.py +0 -3
  309. prowler/providers/m365/services/admincenter/admincenter_service.py +52 -23
  310. prowler/providers/m365/services/entra/entra_admin_users_phishing_resistant_mfa_enabled/entra_admin_users_phishing_resistant_mfa_enabled.py +19 -2
  311. prowler/providers/m365/services/entra/entra_service.py +58 -30
  312. prowler/providers/m365/services/sharepoint/sharepoint_service.py +24 -3
  313. prowler/providers/oraclecloud/__init__.py +0 -0
  314. prowler/providers/oraclecloud/config.py +61 -0
  315. prowler/providers/oraclecloud/exceptions/__init__.py +0 -0
  316. prowler/providers/oraclecloud/exceptions/exceptions.py +197 -0
  317. prowler/providers/oraclecloud/lib/__init__.py +0 -0
  318. prowler/providers/oraclecloud/lib/arguments/__init__.py +0 -0
  319. prowler/providers/oraclecloud/lib/arguments/arguments.py +123 -0
  320. prowler/providers/oraclecloud/lib/mutelist/__init__.py +0 -0
  321. prowler/providers/oraclecloud/lib/mutelist/mutelist.py +176 -0
  322. prowler/providers/oraclecloud/lib/service/__init__.py +0 -0
  323. prowler/providers/oraclecloud/lib/service/service.py +213 -0
  324. prowler/providers/oraclecloud/models.py +96 -0
  325. prowler/providers/oraclecloud/oci_provider.py +1038 -0
  326. prowler/providers/oraclecloud/services/__init__.py +0 -0
  327. prowler/providers/oraclecloud/services/analytics/__init__.py +0 -0
  328. prowler/providers/oraclecloud/services/analytics/analytics_client.py +6 -0
  329. prowler/providers/oraclecloud/services/analytics/analytics_instance_access_restricted/__init__.py +0 -0
  330. prowler/providers/oraclecloud/services/analytics/analytics_instance_access_restricted/analytics_instance_access_restricted.metadata.json +36 -0
  331. prowler/providers/oraclecloud/services/analytics/analytics_instance_access_restricted/analytics_instance_access_restricted.py +48 -0
  332. prowler/providers/oraclecloud/services/analytics/analytics_service.py +99 -0
  333. prowler/providers/oraclecloud/services/audit/__init__.py +0 -0
  334. prowler/providers/oraclecloud/services/audit/audit_client.py +4 -0
  335. prowler/providers/oraclecloud/services/audit/audit_log_retention_period_365_days/__init__.py +0 -0
  336. prowler/providers/oraclecloud/services/audit/audit_log_retention_period_365_days/audit_log_retention_period_365_days.metadata.json +37 -0
  337. prowler/providers/oraclecloud/services/audit/audit_log_retention_period_365_days/audit_log_retention_period_365_days.py +46 -0
  338. prowler/providers/oraclecloud/services/audit/audit_service.py +57 -0
  339. prowler/providers/oraclecloud/services/blockstorage/__init__.py +0 -0
  340. prowler/providers/oraclecloud/services/blockstorage/blockstorage_block_volume_encrypted_with_cmk/__init__.py +0 -0
  341. prowler/providers/oraclecloud/services/blockstorage/blockstorage_block_volume_encrypted_with_cmk/blockstorage_block_volume_encrypted_with_cmk.metadata.json +37 -0
  342. prowler/providers/oraclecloud/services/blockstorage/blockstorage_block_volume_encrypted_with_cmk/blockstorage_block_volume_encrypted_with_cmk.py +39 -0
  343. prowler/providers/oraclecloud/services/blockstorage/blockstorage_boot_volume_encrypted_with_cmk/__init__.py +0 -0
  344. prowler/providers/oraclecloud/services/blockstorage/blockstorage_boot_volume_encrypted_with_cmk/blockstorage_boot_volume_encrypted_with_cmk.metadata.json +36 -0
  345. prowler/providers/oraclecloud/services/blockstorage/blockstorage_boot_volume_encrypted_with_cmk/blockstorage_boot_volume_encrypted_with_cmk.py +35 -0
  346. prowler/providers/oraclecloud/services/blockstorage/blockstorage_client.py +6 -0
  347. prowler/providers/oraclecloud/services/blockstorage/blockstorage_service.py +182 -0
  348. prowler/providers/oraclecloud/services/cloudguard/__init__.py +0 -0
  349. prowler/providers/oraclecloud/services/cloudguard/cloudguard_client.py +6 -0
  350. prowler/providers/oraclecloud/services/cloudguard/cloudguard_enabled/__init__.py +0 -0
  351. prowler/providers/oraclecloud/services/cloudguard/cloudguard_enabled/cloudguard_enabled.metadata.json +36 -0
  352. prowler/providers/oraclecloud/services/cloudguard/cloudguard_enabled/cloudguard_enabled.py +39 -0
  353. prowler/providers/oraclecloud/services/cloudguard/cloudguard_service.py +63 -0
  354. prowler/providers/oraclecloud/services/compute/__init__.py +0 -0
  355. prowler/providers/oraclecloud/services/compute/compute_client.py +4 -0
  356. prowler/providers/oraclecloud/services/compute/compute_instance_in_transit_encryption_enabled/__init__.py +0 -0
  357. prowler/providers/oraclecloud/services/compute/compute_instance_in_transit_encryption_enabled/compute_instance_in_transit_encryption_enabled.metadata.json +37 -0
  358. prowler/providers/oraclecloud/services/compute/compute_instance_in_transit_encryption_enabled/compute_instance_in_transit_encryption_enabled.py +38 -0
  359. prowler/providers/oraclecloud/services/compute/compute_instance_legacy_metadata_endpoint_disabled/__init__.py +0 -0
  360. prowler/providers/oraclecloud/services/compute/compute_instance_legacy_metadata_endpoint_disabled/compute_instance_legacy_metadata_endpoint_disabled.metadata.json +37 -0
  361. prowler/providers/oraclecloud/services/compute/compute_instance_legacy_metadata_endpoint_disabled/compute_instance_legacy_metadata_endpoint_disabled.py +37 -0
  362. prowler/providers/oraclecloud/services/compute/compute_instance_secure_boot_enabled/__init__.py +0 -0
  363. prowler/providers/oraclecloud/services/compute/compute_instance_secure_boot_enabled/compute_instance_secure_boot_enabled.metadata.json +37 -0
  364. prowler/providers/oraclecloud/services/compute/compute_instance_secure_boot_enabled/compute_instance_secure_boot_enabled.py +39 -0
  365. prowler/providers/oraclecloud/services/compute/compute_service.py +136 -0
  366. prowler/providers/oraclecloud/services/database/__init__.py +0 -0
  367. prowler/providers/oraclecloud/services/database/database_autonomous_database_access_restricted/__init__.py +0 -0
  368. prowler/providers/oraclecloud/services/database/database_autonomous_database_access_restricted/database_autonomous_database_access_restricted.metadata.json +36 -0
  369. prowler/providers/oraclecloud/services/database/database_autonomous_database_access_restricted/database_autonomous_database_access_restricted.py +40 -0
  370. prowler/providers/oraclecloud/services/database/database_client.py +6 -0
  371. prowler/providers/oraclecloud/services/database/database_service.py +79 -0
  372. prowler/providers/oraclecloud/services/events/__init__.py +0 -0
  373. prowler/providers/oraclecloud/services/events/events_client.py +4 -0
  374. prowler/providers/oraclecloud/services/events/events_notification_topic_and_subscription_exists/__init__.py +0 -0
  375. prowler/providers/oraclecloud/services/events/events_notification_topic_and_subscription_exists/events_notification_topic_and_subscription_exists.metadata.json +37 -0
  376. prowler/providers/oraclecloud/services/events/events_notification_topic_and_subscription_exists/events_notification_topic_and_subscription_exists.py +53 -0
  377. prowler/providers/oraclecloud/services/events/events_rule_cloudguard_problems/__init__.py +0 -0
  378. prowler/providers/oraclecloud/services/events/events_rule_cloudguard_problems/events_rule_cloudguard_problems.metadata.json +36 -0
  379. prowler/providers/oraclecloud/services/events/events_rule_cloudguard_problems/events_rule_cloudguard_problems.py +90 -0
  380. prowler/providers/oraclecloud/services/events/events_rule_iam_group_changes/__init__.py +0 -0
  381. prowler/providers/oraclecloud/services/events/events_rule_iam_group_changes/events_rule_iam_group_changes.metadata.json +37 -0
  382. prowler/providers/oraclecloud/services/events/events_rule_iam_group_changes/events_rule_iam_group_changes.py +67 -0
  383. prowler/providers/oraclecloud/services/events/events_rule_iam_policy_changes/__init__.py +0 -0
  384. prowler/providers/oraclecloud/services/events/events_rule_iam_policy_changes/events_rule_iam_policy_changes.metadata.json +37 -0
  385. prowler/providers/oraclecloud/services/events/events_rule_iam_policy_changes/events_rule_iam_policy_changes.py +67 -0
  386. prowler/providers/oraclecloud/services/events/events_rule_identity_provider_changes/__init__.py +0 -0
  387. prowler/providers/oraclecloud/services/events/events_rule_identity_provider_changes/events_rule_identity_provider_changes.metadata.json +37 -0
  388. prowler/providers/oraclecloud/services/events/events_rule_identity_provider_changes/events_rule_identity_provider_changes.py +67 -0
  389. prowler/providers/oraclecloud/services/events/events_rule_idp_group_mapping_changes/__init__.py +0 -0
  390. prowler/providers/oraclecloud/services/events/events_rule_idp_group_mapping_changes/events_rule_idp_group_mapping_changes.metadata.json +37 -0
  391. prowler/providers/oraclecloud/services/events/events_rule_idp_group_mapping_changes/events_rule_idp_group_mapping_changes.py +67 -0
  392. prowler/providers/oraclecloud/services/events/events_rule_local_user_authentication/__init__.py +0 -0
  393. prowler/providers/oraclecloud/services/events/events_rule_local_user_authentication/events_rule_local_user_authentication.metadata.json +38 -0
  394. prowler/providers/oraclecloud/services/events/events_rule_local_user_authentication/events_rule_local_user_authentication.py +63 -0
  395. prowler/providers/oraclecloud/services/events/events_rule_network_gateway_changes/__init__.py +0 -0
  396. prowler/providers/oraclecloud/services/events/events_rule_network_gateway_changes/events_rule_network_gateway_changes.metadata.json +37 -0
  397. prowler/providers/oraclecloud/services/events/events_rule_network_gateway_changes/events_rule_network_gateway_changes.py +88 -0
  398. prowler/providers/oraclecloud/services/events/events_rule_network_security_group_changes/__init__.py +0 -0
  399. prowler/providers/oraclecloud/services/events/events_rule_network_security_group_changes/events_rule_network_security_group_changes.metadata.json +37 -0
  400. prowler/providers/oraclecloud/services/events/events_rule_network_security_group_changes/events_rule_network_security_group_changes.py +68 -0
  401. prowler/providers/oraclecloud/services/events/events_rule_route_table_changes/__init__.py +0 -0
  402. prowler/providers/oraclecloud/services/events/events_rule_route_table_changes/events_rule_route_table_changes.metadata.json +37 -0
  403. prowler/providers/oraclecloud/services/events/events_rule_route_table_changes/events_rule_route_table_changes.py +68 -0
  404. prowler/providers/oraclecloud/services/events/events_rule_security_list_changes/__init__.py +0 -0
  405. prowler/providers/oraclecloud/services/events/events_rule_security_list_changes/events_rule_security_list_changes.metadata.json +37 -0
  406. prowler/providers/oraclecloud/services/events/events_rule_security_list_changes/events_rule_security_list_changes.py +68 -0
  407. prowler/providers/oraclecloud/services/events/events_rule_user_changes/__init__.py +0 -0
  408. prowler/providers/oraclecloud/services/events/events_rule_user_changes/events_rule_user_changes.metadata.json +37 -0
  409. prowler/providers/oraclecloud/services/events/events_rule_user_changes/events_rule_user_changes.py +69 -0
  410. prowler/providers/oraclecloud/services/events/events_rule_vcn_changes/__init__.py +0 -0
  411. prowler/providers/oraclecloud/services/events/events_rule_vcn_changes/events_rule_vcn_changes.metadata.json +37 -0
  412. prowler/providers/oraclecloud/services/events/events_rule_vcn_changes/events_rule_vcn_changes.py +65 -0
  413. prowler/providers/oraclecloud/services/events/events_service.py +215 -0
  414. prowler/providers/oraclecloud/services/events/lib/__init__.py +0 -0
  415. prowler/providers/oraclecloud/services/events/lib/helpers.py +116 -0
  416. prowler/providers/oraclecloud/services/filestorage/__init__.py +0 -0
  417. prowler/providers/oraclecloud/services/filestorage/filestorage_client.py +6 -0
  418. prowler/providers/oraclecloud/services/filestorage/filestorage_file_system_encrypted_with_cmk/__init__.py +0 -0
  419. prowler/providers/oraclecloud/services/filestorage/filestorage_file_system_encrypted_with_cmk/filestorage_file_system_encrypted_with_cmk.metadata.json +36 -0
  420. prowler/providers/oraclecloud/services/filestorage/filestorage_file_system_encrypted_with_cmk/filestorage_file_system_encrypted_with_cmk.py +39 -0
  421. prowler/providers/oraclecloud/services/filestorage/filestorage_service.py +96 -0
  422. prowler/providers/oraclecloud/services/identity/__init__.py +0 -0
  423. prowler/providers/oraclecloud/services/identity/identity_client.py +4 -0
  424. prowler/providers/oraclecloud/services/identity/identity_iam_admins_cannot_update_tenancy_admins/__init__.py +0 -0
  425. prowler/providers/oraclecloud/services/identity/identity_iam_admins_cannot_update_tenancy_admins/identity_iam_admins_cannot_update_tenancy_admins.metadata.json +36 -0
  426. prowler/providers/oraclecloud/services/identity/identity_iam_admins_cannot_update_tenancy_admins/identity_iam_admins_cannot_update_tenancy_admins.py +107 -0
  427. prowler/providers/oraclecloud/services/identity/identity_instance_principal_used/__init__.py +0 -0
  428. prowler/providers/oraclecloud/services/identity/identity_instance_principal_used/identity_instance_principal_used.metadata.json +36 -0
  429. prowler/providers/oraclecloud/services/identity/identity_instance_principal_used/identity_instance_principal_used.py +70 -0
  430. prowler/providers/oraclecloud/services/identity/identity_no_resources_in_root_compartment/__init__.py +0 -0
  431. prowler/providers/oraclecloud/services/identity/identity_no_resources_in_root_compartment/identity_no_resources_in_root_compartment.metadata.json +32 -0
  432. prowler/providers/oraclecloud/services/identity/identity_no_resources_in_root_compartment/identity_no_resources_in_root_compartment.py +51 -0
  433. prowler/providers/oraclecloud/services/identity/identity_non_root_compartment_exists/__init__.py +0 -0
  434. prowler/providers/oraclecloud/services/identity/identity_non_root_compartment_exists/identity_non_root_compartment_exists.metadata.json +32 -0
  435. prowler/providers/oraclecloud/services/identity/identity_non_root_compartment_exists/identity_non_root_compartment_exists.py +39 -0
  436. prowler/providers/oraclecloud/services/identity/identity_password_policy_expires_within_365_days/__init__.py +0 -0
  437. prowler/providers/oraclecloud/services/identity/identity_password_policy_expires_within_365_days/identity_password_policy_expires_within_365_days.metadata.json +36 -0
  438. prowler/providers/oraclecloud/services/identity/identity_password_policy_expires_within_365_days/identity_password_policy_expires_within_365_days.py +67 -0
  439. prowler/providers/oraclecloud/services/identity/identity_password_policy_minimum_length_14/__init__.py +0 -0
  440. prowler/providers/oraclecloud/services/identity/identity_password_policy_minimum_length_14/identity_password_policy_minimum_length_14.metadata.json +36 -0
  441. prowler/providers/oraclecloud/services/identity/identity_password_policy_minimum_length_14/identity_password_policy_minimum_length_14.py +97 -0
  442. prowler/providers/oraclecloud/services/identity/identity_password_policy_prevents_reuse/__init__.py +0 -0
  443. prowler/providers/oraclecloud/services/identity/identity_password_policy_prevents_reuse/identity_password_policy_prevents_reuse.metadata.json +36 -0
  444. prowler/providers/oraclecloud/services/identity/identity_password_policy_prevents_reuse/identity_password_policy_prevents_reuse.py +77 -0
  445. prowler/providers/oraclecloud/services/identity/identity_service.py +828 -0
  446. prowler/providers/oraclecloud/services/identity/identity_service_level_admins_exist/__init__.py +0 -0
  447. prowler/providers/oraclecloud/services/identity/identity_service_level_admins_exist/identity_service_level_admins_exist.metadata.json +32 -0
  448. prowler/providers/oraclecloud/services/identity/identity_service_level_admins_exist/identity_service_level_admins_exist.py +81 -0
  449. prowler/providers/oraclecloud/services/identity/identity_tenancy_admin_permissions_limited/__init__.py +0 -0
  450. prowler/providers/oraclecloud/services/identity/identity_tenancy_admin_permissions_limited/identity_tenancy_admin_permissions_limited.metadata.json +36 -0
  451. prowler/providers/oraclecloud/services/identity/identity_tenancy_admin_permissions_limited/identity_tenancy_admin_permissions_limited.py +81 -0
  452. prowler/providers/oraclecloud/services/identity/identity_tenancy_admin_users_no_api_keys/__init__.py +0 -0
  453. prowler/providers/oraclecloud/services/identity/identity_tenancy_admin_users_no_api_keys/identity_tenancy_admin_users_no_api_keys.metadata.json +36 -0
  454. prowler/providers/oraclecloud/services/identity/identity_tenancy_admin_users_no_api_keys/identity_tenancy_admin_users_no_api_keys.py +49 -0
  455. prowler/providers/oraclecloud/services/identity/identity_user_api_keys_rotated_90_days/__init__.py +0 -0
  456. prowler/providers/oraclecloud/services/identity/identity_user_api_keys_rotated_90_days/identity_user_api_keys_rotated_90_days.metadata.json +37 -0
  457. prowler/providers/oraclecloud/services/identity/identity_user_api_keys_rotated_90_days/identity_user_api_keys_rotated_90_days.py +73 -0
  458. prowler/providers/oraclecloud/services/identity/identity_user_auth_tokens_rotated_90_days/__init__.py +0 -0
  459. prowler/providers/oraclecloud/services/identity/identity_user_auth_tokens_rotated_90_days/identity_user_auth_tokens_rotated_90_days.metadata.json +36 -0
  460. prowler/providers/oraclecloud/services/identity/identity_user_auth_tokens_rotated_90_days/identity_user_auth_tokens_rotated_90_days.py +52 -0
  461. prowler/providers/oraclecloud/services/identity/identity_user_customer_secret_keys_rotated_90_days/__init__.py +0 -0
  462. prowler/providers/oraclecloud/services/identity/identity_user_customer_secret_keys_rotated_90_days/identity_user_customer_secret_keys_rotated_90_days.metadata.json +36 -0
  463. prowler/providers/oraclecloud/services/identity/identity_user_customer_secret_keys_rotated_90_days/identity_user_customer_secret_keys_rotated_90_days.py +49 -0
  464. prowler/providers/oraclecloud/services/identity/identity_user_db_passwords_rotated_90_days/__init__.py +0 -0
  465. prowler/providers/oraclecloud/services/identity/identity_user_db_passwords_rotated_90_days/identity_user_db_passwords_rotated_90_days.metadata.json +36 -0
  466. prowler/providers/oraclecloud/services/identity/identity_user_db_passwords_rotated_90_days/identity_user_db_passwords_rotated_90_days.py +49 -0
  467. prowler/providers/oraclecloud/services/identity/identity_user_mfa_enabled_console_access/__init__.py +0 -0
  468. prowler/providers/oraclecloud/services/identity/identity_user_mfa_enabled_console_access/identity_user_mfa_enabled_console_access.metadata.json +36 -0
  469. prowler/providers/oraclecloud/services/identity/identity_user_mfa_enabled_console_access/identity_user_mfa_enabled_console_access.py +43 -0
  470. prowler/providers/oraclecloud/services/identity/identity_user_valid_email_address/__init__.py +0 -0
  471. prowler/providers/oraclecloud/services/identity/identity_user_valid_email_address/identity_user_valid_email_address.metadata.json +36 -0
  472. prowler/providers/oraclecloud/services/identity/identity_user_valid_email_address/identity_user_valid_email_address.py +38 -0
  473. prowler/providers/oraclecloud/services/integration/__init__.py +0 -0
  474. prowler/providers/oraclecloud/services/integration/integration_client.py +8 -0
  475. prowler/providers/oraclecloud/services/integration/integration_instance_access_restricted/__init__.py +0 -0
  476. prowler/providers/oraclecloud/services/integration/integration_instance_access_restricted/integration_instance_access_restricted.metadata.json +36 -0
  477. prowler/providers/oraclecloud/services/integration/integration_instance_access_restricted/integration_instance_access_restricted.py +48 -0
  478. prowler/providers/oraclecloud/services/integration/integration_service.py +92 -0
  479. prowler/providers/oraclecloud/services/kms/__init__.py +0 -0
  480. prowler/providers/oraclecloud/services/kms/kms_client.py +4 -0
  481. prowler/providers/oraclecloud/services/kms/kms_key_rotation_enabled/__init__.py +0 -0
  482. prowler/providers/oraclecloud/services/kms/kms_key_rotation_enabled/kms_key_rotation_enabled.metadata.json +36 -0
  483. prowler/providers/oraclecloud/services/kms/kms_key_rotation_enabled/kms_key_rotation_enabled.py +37 -0
  484. prowler/providers/oraclecloud/services/kms/kms_service.py +136 -0
  485. prowler/providers/oraclecloud/services/logging/__init__.py +0 -0
  486. prowler/providers/oraclecloud/services/logging/logging_client.py +6 -0
  487. prowler/providers/oraclecloud/services/logging/logging_service.py +189 -0
  488. prowler/providers/oraclecloud/services/network/__init__.py +0 -0
  489. prowler/providers/oraclecloud/services/network/network_client.py +4 -0
  490. prowler/providers/oraclecloud/services/network/network_default_security_list_restricts_traffic/__init__.py +0 -0
  491. prowler/providers/oraclecloud/services/network/network_default_security_list_restricts_traffic/network_default_security_list_restricts_traffic.metadata.json +36 -0
  492. prowler/providers/oraclecloud/services/network/network_default_security_list_restricts_traffic/network_default_security_list_restricts_traffic.py +99 -0
  493. prowler/providers/oraclecloud/services/network/network_security_group_ingress_from_internet_to_rdp_port/__init__.py +0 -0
  494. prowler/providers/oraclecloud/services/network/network_security_group_ingress_from_internet_to_rdp_port/network_security_group_ingress_from_internet_to_rdp_port.metadata.json +36 -0
  495. prowler/providers/oraclecloud/services/network/network_security_group_ingress_from_internet_to_rdp_port/network_security_group_ingress_from_internet_to_rdp_port.py +65 -0
  496. prowler/providers/oraclecloud/services/network/network_security_group_ingress_from_internet_to_ssh_port/__init__.py +0 -0
  497. prowler/providers/oraclecloud/services/network/network_security_group_ingress_from_internet_to_ssh_port/network_security_group_ingress_from_internet_to_ssh_port.metadata.json +37 -0
  498. prowler/providers/oraclecloud/services/network/network_security_group_ingress_from_internet_to_ssh_port/network_security_group_ingress_from_internet_to_ssh_port.py +70 -0
  499. prowler/providers/oraclecloud/services/network/network_security_list_ingress_from_internet_to_rdp_port/__init__.py +0 -0
  500. prowler/providers/oraclecloud/services/network/network_security_list_ingress_from_internet_to_rdp_port/network_security_list_ingress_from_internet_to_rdp_port.metadata.json +36 -0
  501. prowler/providers/oraclecloud/services/network/network_security_list_ingress_from_internet_to_rdp_port/network_security_list_ingress_from_internet_to_rdp_port.py +62 -0
  502. prowler/providers/oraclecloud/services/network/network_security_list_ingress_from_internet_to_ssh_port/__init__.py +0 -0
  503. prowler/providers/oraclecloud/services/network/network_security_list_ingress_from_internet_to_ssh_port/network_security_list_ingress_from_internet_to_ssh_port.metadata.json +37 -0
  504. prowler/providers/oraclecloud/services/network/network_security_list_ingress_from_internet_to_ssh_port/network_security_list_ingress_from_internet_to_ssh_port.py +67 -0
  505. prowler/providers/oraclecloud/services/network/network_service.py +321 -0
  506. prowler/providers/oraclecloud/services/network/network_vcn_subnet_flow_logs_enabled/__init__.py +0 -0
  507. prowler/providers/oraclecloud/services/network/network_vcn_subnet_flow_logs_enabled/network_vcn_subnet_flow_logs_enabled.metadata.json +36 -0
  508. prowler/providers/oraclecloud/services/network/network_vcn_subnet_flow_logs_enabled/network_vcn_subnet_flow_logs_enabled.py +66 -0
  509. prowler/providers/oraclecloud/services/objectstorage/__init__.py +0 -0
  510. prowler/providers/oraclecloud/services/objectstorage/objectstorage_bucket_encrypted_with_cmk/__init__.py +0 -0
  511. prowler/providers/oraclecloud/services/objectstorage/objectstorage_bucket_encrypted_with_cmk/objectstorage_bucket_encrypted_with_cmk.metadata.json +37 -0
  512. prowler/providers/oraclecloud/services/objectstorage/objectstorage_bucket_encrypted_with_cmk/objectstorage_bucket_encrypted_with_cmk.py +40 -0
  513. prowler/providers/oraclecloud/services/objectstorage/objectstorage_bucket_logging_enabled/__init__.py +0 -0
  514. prowler/providers/oraclecloud/services/objectstorage/objectstorage_bucket_logging_enabled/objectstorage_bucket_logging_enabled.metadata.json +32 -0
  515. prowler/providers/oraclecloud/services/objectstorage/objectstorage_bucket_logging_enabled/objectstorage_bucket_logging_enabled.py +68 -0
  516. prowler/providers/oraclecloud/services/objectstorage/objectstorage_bucket_not_publicly_accessible/__init__.py +0 -0
  517. prowler/providers/oraclecloud/services/objectstorage/objectstorage_bucket_not_publicly_accessible/objectstorage_bucket_not_publicly_accessible.metadata.json +37 -0
  518. prowler/providers/oraclecloud/services/objectstorage/objectstorage_bucket_not_publicly_accessible/objectstorage_bucket_not_publicly_accessible.py +43 -0
  519. prowler/providers/oraclecloud/services/objectstorage/objectstorage_bucket_versioning_enabled/__init__.py +0 -0
  520. prowler/providers/oraclecloud/services/objectstorage/objectstorage_bucket_versioning_enabled/objectstorage_bucket_versioning_enabled.metadata.json +37 -0
  521. prowler/providers/oraclecloud/services/objectstorage/objectstorage_bucket_versioning_enabled/objectstorage_bucket_versioning_enabled.py +38 -0
  522. prowler/providers/oraclecloud/services/objectstorage/objectstorage_client.py +6 -0
  523. prowler/providers/oraclecloud/services/objectstorage/objectstorage_service.py +138 -0
  524. {prowler_cloud-5.12.3.dist-info → prowler_cloud-5.13.0.dist-info}/METADATA +9 -33
  525. {prowler_cloud-5.12.3.dist-info → prowler_cloud-5.13.0.dist-info}/RECORD +528 -280
  526. {prowler_cloud-5.12.3.dist-info → prowler_cloud-5.13.0.dist-info}/LICENSE +0 -0
  527. {prowler_cloud-5.12.3.dist-info → prowler_cloud-5.13.0.dist-info}/WHEEL +0 -0
  528. {prowler_cloud-5.12.3.dist-info → prowler_cloud-5.13.0.dist-info}/entry_points.txt +0 -0
@@ -1,26 +1,35 @@
1
1
  {
2
2
  "Provider": "aws",
3
3
  "CheckID": "cloudfront_distributions_https_enabled",
4
- "CheckTitle": "Check if CloudFront distributions are set to HTTPS.",
5
- "CheckType": [],
4
+ "CheckTitle": "CloudFront distribution has viewer protocol policy set to HTTPS only or redirect to HTTPS",
5
+ "CheckType": [
6
+ "Software and Configuration Checks/AWS Security Best Practices/Network Reachability",
7
+ "Software and Configuration Checks/Industry and Regulatory Standards/AWS Foundational Security Best Practices",
8
+ "Effects/Data Exposure"
9
+ ],
6
10
  "ServiceName": "cloudfront",
7
11
  "SubServiceName": "",
8
- "ResourceIdTemplate": "arn:partition:cloudfront:region:account-id:distribution/resource-id",
12
+ "ResourceIdTemplate": "",
9
13
  "Severity": "medium",
10
14
  "ResourceType": "AwsCloudFrontDistribution",
11
- "Description": "Check if CloudFront distributions are set to HTTPS.",
12
- "Risk": "If not enabled sensitive information in transit is not protected. Surveillance and other threats are risks may exists.",
13
- "RelatedUrl": "https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html",
15
+ "Description": "CloudFront distributions require viewer connections over **HTTPS** when the default cache behavior `viewer_protocol_policy` is `https-only` or `redirect-to-https`. Configurations that use `allow-all` permit HTTP.",
16
+ "Risk": "Allowing HTTP exposes traffic to **man-in-the-middle** interception and **session hijacking**, enabling theft of cookies, tokens, or PII. Attackers can **tamper** with responses, inject malware, or perform **downgrade/strip** attacks, undermining confidentiality and integrity.",
17
+ "RelatedUrl": "",
18
+ "AdditionalURLs": [
19
+ "https://www.trendmicro.com/cloudoneconformity/knowledge-base/aws/CloudFront/security-policy.html",
20
+ "https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html",
21
+ "https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-https.html"
22
+ ],
14
23
  "Remediation": {
15
24
  "Code": {
16
- "CLI": "",
17
- "NativeIaC": "https://docs.prowler.com/checks/aws/networking-policies/networking_32#cloudformation",
18
- "Other": "https://www.trendmicro.com/cloudoneconformity/knowledge-base/aws/CloudFront/security-policy.html",
19
- "Terraform": "https://docs.prowler.com/checks/aws/networking-policies/networking_32#terraform"
25
+ "CLI": "aws cloudfront get-distribution-config --id <DISTRIBUTION_ID> --output json > current-config.json && echo 'Manually edit current-config.json to change DefaultCacheBehavior.ViewerProtocolPolicy to \"redirect-to-https\" or \"https-only\", then run:' && echo 'aws cloudfront update-distribution --id <DISTRIBUTION_ID> --distribution-config file://current-config.json --if-match $(aws cloudfront get-distribution-config --id <DISTRIBUTION_ID> --query \"ETag\" --output text)'",
26
+ "NativeIaC": "```yaml\n# CloudFormation: set ViewerProtocolPolicy to require HTTPS\nResources:\n <example_resource_name>:\n Type: AWS::CloudFront::Distribution\n Properties:\n DistributionConfig:\n DefaultCacheBehavior:\n ViewerProtocolPolicy: https-only # Critical: requires HTTPS for viewers\n```",
27
+ "Other": "1. In the AWS Console, go to CloudFront > Distributions\n2. Select the target distribution and open the Behaviors tab\n3. Select the Default (*) behavior and click Edit\n4. Set Viewer protocol policy to Redirect HTTP to HTTPS (or HTTPS Only)\n5. Save changes and deploy",
28
+ "Terraform": "```hcl\n# Terraform: set viewer_protocol_policy to force HTTPS\nresource \"aws_cloudfront_distribution\" \"<example_resource_name>\" {\n default_cache_behavior {\n target_origin_id = \"<example_origin_id>\"\n viewer_protocol_policy = \"redirect-to-https\" # Critical: forces HTTP to HTTPS\n }\n}\n```"
20
29
  },
21
30
  "Recommendation": {
22
- "Text": "Use HTTPS everywhere possible. It will enforce privacy and protect against account hijacking and other threats.",
23
- "Url": "https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-https.html"
31
+ "Text": "Enforce **HTTPS-only** access for viewers by setting `viewer_protocol_policy` to `https-only` or `redirect-to-https`; avoid `allow-all`. Extend encryption end-to-end to origins, enable **HSTS**, prefer modern TLS and ciphers, and mark cookies `Secure`. This supports **defense in depth** and prevents downgrade.",
32
+ "Url": "https://hub.prowler.com/check/cloudfront_distributions_https_enabled"
24
33
  }
25
34
  },
26
35
  "Categories": [
@@ -1,26 +1,34 @@
1
1
  {
2
2
  "Provider": "aws",
3
3
  "CheckID": "cloudfront_distributions_https_sni_enabled",
4
- "CheckTitle": "Check if CloudFront distributions are using SNI to serve HTTPS requests.",
5
- "CheckType": [],
4
+ "CheckTitle": "CloudFront distribution serves HTTPS requests using SNI",
5
+ "CheckType": [
6
+ "Software and Configuration Checks/AWS Security Best Practices/Network Reachability"
7
+ ],
6
8
  "ServiceName": "cloudfront",
7
9
  "SubServiceName": "",
8
- "ResourceIdTemplate": "arn:partition:cloudfront:region:account-id:distribution/resource-id",
10
+ "ResourceIdTemplate": "",
9
11
  "Severity": "low",
10
12
  "ResourceType": "AwsCloudFrontDistribution",
11
- "Description": "Check if CloudFront distributions are using SNI to serve HTTPS requests.",
12
- "Risk": "If SNI is not used, CloudFront will allocate a dedicated IP address for each SSL certificate, leading to higher costs and inefficient IP address utilization. This could also complicate scaling and managing multiple distributions, especially if your domain requires multiple SSL certificates.",
13
- "RelatedUrl": "https://www.cloudflare.com/es-es/learning/ssl/what-is-sni/",
13
+ "Description": "**CloudFront distributions** that use **custom SSL/TLS certificates** are configured to serve **HTTPS** using **Server Name Indication** (`ssl_support_method: sni-only`). It evaluates SNI use rather than dedicated IP during the TLS handshake.",
14
+ "Risk": "Without **SNI**, distributions use dedicated IP SSL, driving higher costs and inefficient IP usage. Dedicated IPs can strain quotas and hinder scaling, reducing **availability**. Managing IP-bound certificates adds **operational risk** during rotations and expansions.",
15
+ "RelatedUrl": "",
16
+ "AdditionalURLs": [
17
+ "https://www.trendmicro.com/cloudoneconformity/knowledge-base/aws/CloudFront/cloudfront-sni.html",
18
+ "https://docs.aws.amazon.com/securityhub/latest/userguide/cloudfront-controls.html#cloudfront-8",
19
+ "https://support.icompaas.com/support/solutions/articles/62000223557-ensure-cloudfront-sni-enabled",
20
+ "https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/cnames-https-dedicated-ip-or-sni.html#cnames-https-sni"
21
+ ],
14
22
  "Remediation": {
15
23
  "Code": {
16
- "CLI": "",
17
- "NativeIaC": "",
18
- "Other": "https://docs.aws.amazon.com/securityhub/latest/userguide/cloudfront-controls.html#cloudfront-8",
19
- "Terraform": "https://www.trendmicro.com/cloudoneconformity/knowledge-base/aws/CloudFront/cloudfront-sni.html"
24
+ "CLI": "aws cloudfront get-distribution-config --id <DISTRIBUTION_ID> --output json > current-config.json && echo 'Manually edit current-config.json to change ViewerCertificate.SslSupportMethod to sni-only', then run:' && echo 'aws cloudfront update-distribution --id <DISTRIBUTION_ID> --distribution-config file://current-config.json --if-match $(aws cloudfront get-distribution-config --id <DISTRIBUTION_ID> --query \"ETag\" --output text)'",
25
+ "NativeIaC": "```yaml\nResources:\n <example_resource_name>:\n Type: AWS::CloudFront::Distribution\n Properties:\n DistributionConfig:\n Enabled: true\n Origins:\n - Id: <example_origin_id>\n DomainName: <example_origin_domain>\n S3OriginConfig:\n OriginAccessIdentity: ''\n DefaultCacheBehavior:\n TargetOriginId: <example_origin_id>\n ViewerProtocolPolicy: allow-all\n ForwardedValues:\n QueryString: false\n Cookies:\n Forward: none\n MinTTL: 0\n ViewerCertificate:\n AcmCertificateArn: <example_certificate_arn>\n SslSupportMethod: sni-only # Critical: enable SNI for HTTPS\n MinimumProtocolVersion: TLSv1 # Required when using SNI with a custom cert\n```",
26
+ "Other": "1. In the AWS Console, go to CloudFront and open your distribution\n2. Select the Settings/General tab and click Edit\n3. Under SSL certificate, ensure your custom certificate is selected\n4. Set Client support to SNI only\n5. Click Save changes",
27
+ "Terraform": "```hcl\nresource \"aws_cloudfront_distribution\" \"<example_resource_name>\" {\n enabled = true\n\n origin {\n domain_name = \"<example_origin_domain>\"\n origin_id = \"<example_origin_id>\"\n }\n\n default_cache_behavior {\n target_origin_id = \"<example_origin_id>\"\n viewer_protocol_policy = \"allow-all\"\n forwarded_values {\n query_string = false\n cookies { forward = \"none\" }\n }\n min_ttl = 0\n }\n\n viewer_certificate {\n acm_certificate_arn = \"<example_certificate_arn>\"\n ssl_support_method = \"sni-only\" # Critical: enable SNI for HTTPS\n minimum_protocol_version = \"TLSv1\" # Required with SNI\n }\n}\n```"
20
28
  },
21
29
  "Recommendation": {
22
- "Text": "Ensure that your CloudFront distributions are configured to use Server Name Indication (SNI) when serving HTTPS requests with custom SSL/TLS certificates. This is the recommended approach for reducing costs and optimizing IP address usage.",
23
- "Url": "https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/cnames-https-dedicated-ip-or-sni.html#cnames-https-sni"
30
+ "Text": "Use **SNI** (`sni-only`) for **HTTPS** with custom certificates; avoid dedicated IP unless a critical, non-SNI client requires it. Document and periodically review exceptions, plan client upgrades, and adopt the latest **TLS security policy** to standardize secure, modern configurations.",
31
+ "Url": "https://hub.prowler.com/check/cloudfront_distributions_https_sni_enabled"
24
32
  }
25
33
  },
26
34
  "Categories": [
@@ -1,30 +1,39 @@
1
1
  {
2
2
  "Provider": "aws",
3
3
  "CheckID": "cloudfront_distributions_logging_enabled",
4
- "CheckTitle": "Check if CloudFront distributions have logging enabled.",
5
- "CheckType": [],
4
+ "CheckTitle": "CloudFront distribution has logging enabled",
5
+ "CheckType": [
6
+ "Software and Configuration Checks/AWS Security Best Practices",
7
+ "Software and Configuration Checks/Industry and Regulatory Standards/AWS Foundational Security Best Practices"
8
+ ],
6
9
  "ServiceName": "cloudfront",
7
10
  "SubServiceName": "",
8
- "ResourceIdTemplate": "arn:partition:cloudfront:region:account-id:distribution/resource-id",
11
+ "ResourceIdTemplate": "",
9
12
  "Severity": "medium",
10
13
  "ResourceType": "AwsCloudFrontDistribution",
11
- "Description": "Check if CloudFront distributions have logging enabled.",
12
- "Risk": "If not enabled monitoring of service use is not possible.",
13
- "RelatedUrl": "https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/AccessLogs.html",
14
+ "Description": "**CloudFront distributions** record viewer requests using either **standard access logs** or an attached **real-time log configuration**.\n\nThe finding evaluates whether logging is configured so request metadata is captured for each distribution.",
15
+ "Risk": "Missing **CloudFront logs** blinds monitoring of edge requests, impeding detection of bot abuse, credential stuffing, origin probing, and cache-bypass attempts.\n\nThis delays incident response and weakens evidence for forensics, impacting **confidentiality**, **integrity**, and **availability**.",
16
+ "RelatedUrl": "",
17
+ "AdditionalURLs": [
18
+ "https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/AccessLogs.html",
19
+ "https://repost.aws/knowledge-center/cloudfront-logging-requests",
20
+ "https://aws.amazon.com/awstv/watch/e895e7811ac/",
21
+ "https://www.trendmicro.com/cloudoneconformity/knowledge-base/aws/CloudFront/enable-real-time-logging.html",
22
+ "https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/real-time-logs.html"
23
+ ],
14
24
  "Remediation": {
15
25
  "Code": {
16
- "CLI": "aws cloudfront update-distribution --id <DISTRIBUTION_ID> --distribution-config logging.json --if-match <ETAG>",
17
- "NativeIaC": "https://docs.prowler.com/checks/aws/logging-policies/logging_20#cloudformation",
18
- "Other": "https://docs.prowler.com/checks/aws/logging-policies/logging_20",
19
- "Terraform": "https://docs.prowler.com/checks/aws/logging-policies/logging_20#terraform"
26
+ "CLI": "aws cloudfront get-distribution-config --id <DISTRIBUTION_ID> --output json > current-config.json && echo 'Manually edit current-config.json to add Logging.Bucket: <example_bucket>.s3.amazonaws.com', then run:' && echo 'aws cloudfront update-distribution --id <DISTRIBUTION_ID> --distribution-config file://current-config.json --if-match $(aws cloudfront get-distribution-config --id <DISTRIBUTION_ID> --query \"ETag\" --output text)'",
27
+ "NativeIaC": "```yaml\n# CloudFormation: enable CloudFront standard access logging\nResources:\n <example_resource_name>:\n Type: AWS::CloudFront::Distribution\n Properties:\n DistributionConfig:\n Enabled: true\n Origins:\n - Id: origin1\n DomainName: <example_origin_domain>\n S3OriginConfig: {}\n DefaultCacheBehavior:\n TargetOriginId: origin1\n ViewerProtocolPolicy: allow-all\n Logging:\n Bucket: <example_bucket>.s3.amazonaws.com # CRITICAL: enables standard access logs to S3 for this distribution\n # The presence of Logging with Bucket turns on access logging\n```",
28
+ "Other": "1. In the AWS Console, go to CloudFront and select your distribution\n2. Open the General tab and click Edit\n3. In Standard logging, set to On\n4. Select the S3 bucket to receive logs\n5. Ensure the S3 bucket has Object Ownership set to ACLs enabled (Bucket owner preferred/ObjectWriter)\n6. Save changes",
29
+ "Terraform": "```hcl\n# Add this block to your existing CloudFront distribution to enable access logging\nresource \"aws_cloudfront_distribution\" \"<example_resource_name>\" {\n # ... existing required config ...\n logging_config {\n bucket = \"<example_bucket>.s3.amazonaws.com\" # CRITICAL: enables standard access logs to S3\n }\n}\n```"
20
30
  },
21
31
  "Recommendation": {
22
- "Text": "Real-time monitoring can be achieved by directing CloudTrail Logs to CloudWatch Logs and establishing corresponding metric filters and alarms. Enable logging for services with defined log rotation. These logs are useful for Incident Response and forensics investigation among other use cases.",
23
- "Url": "https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/AccessLogs.html"
32
+ "Text": "Enable **standard access logs** or **real-time logs** for all distributions.\n\nApply **least privilege** to log storage, enforce retention and immutability, and centralize ingestion with alerts.\n\nUse **defense-in-depth**: correlate with WAF metrics, sample real-time when needed, and audit new distributions for logging.",
33
+ "Url": "https://hub.prowler.com/check/cloudfront_distributions_logging_enabled"
24
34
  }
25
35
  },
26
36
  "Categories": [
27
- "forensics-ready",
28
37
  "logging"
29
38
  ],
30
39
  "DependsOn": [],
@@ -1,34 +1,39 @@
1
1
  {
2
2
  "Provider": "aws",
3
3
  "CheckID": "cloudfront_distributions_multiple_origin_failover_configured",
4
- "CheckTitle": "Check if CloudFront distributions have origin failover enabled.",
4
+ "CheckTitle": "CloudFront distribution has origin failover configured with at least two origins",
5
5
  "CheckType": [
6
- "Software and Configuration Checks",
7
- "Industry and Regulatory Standards",
8
- "NIST 800-53 Controls"
6
+ "Software and Configuration Checks/AWS Security Best Practices/Network Reachability",
7
+ "Software and Configuration Checks/Industry and Regulatory Standards/NIST 800-53 Controls",
8
+ "Effects/Denial of Service"
9
9
  ],
10
10
  "ServiceName": "cloudfront",
11
11
  "SubServiceName": "",
12
- "ResourceIdTemplate": "arn:partition:cloudfront:region:account-id:distribution/resource-id",
12
+ "ResourceIdTemplate": "",
13
13
  "Severity": "low",
14
- "ResourceType": "AWSCloudFrontDistribution",
15
- "Description": "Check if CloudFront distributions have origin failover enabled.",
16
- "Risk": "Without origin failover, if the primary origin becomes unavailable, your CloudFront distribution may experience downtime, leading to potential service interruptions and a poor user experience.",
17
- "RelatedUrl": "https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_OriginGroup.html",
14
+ "ResourceType": "AwsCloudFrontDistribution",
15
+ "Description": "**CloudFront distributions** are evaluated for an **origin group** configured with at least `2` origins to support automatic origin failover.",
16
+ "Risk": "Without **origin failover**, the origin becomes a **single point of failure**. Origin outages, regional incidents, or targeted **DoS** can cause **downtime**, elevated error rates, and latency, degrading **availability** and impacting user experience and SLAs.",
17
+ "RelatedUrl": "",
18
+ "AdditionalURLs": [
19
+ "https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/high_availability_origin_failover.html#concept_origin_groups.creating",
20
+ "https://docs.aws.amazon.com/securityhub/latest/userguide/cloudfront-controls.html#cloudfront-4",
21
+ "https://www.trendmicro.com/cloudoneconformity/knowledge-base/aws/CloudFront/origin-failover-enabled.html"
22
+ ],
18
23
  "Remediation": {
19
24
  "Code": {
20
- "CLI": "",
21
- "NativeIaC": "",
22
- "Other": "https://docs.aws.amazon.com/securityhub/latest/userguide/cloudfront-controls.html#cloudfront-4",
23
- "Terraform": "https://www.trendmicro.com/cloudoneconformity/knowledge-base/aws/CloudFront/origin-failover-enabled.html"
25
+ "CLI": "aws cloudfront get-distribution-config --id <DISTRIBUTION_ID> --output json > current-config.json && echo 'Manually edit current-config.json to add OriginGroups with two origins and FailoverCriteria, then run:' && echo 'aws cloudfront update-distribution --id <DISTRIBUTION_ID> --distribution-config file://current-config.json --if-match $(aws cloudfront get-distribution-config --id <DISTRIBUTION_ID> --query \"ETag\" --output text)'",
26
+ "NativeIaC": "```yaml\n# CloudFormation: Add an origin group with two origins and use it in the default cache behavior\nResources:\n <example_resource_name>:\n Type: AWS::CloudFront::Distribution\n Properties:\n DistributionConfig:\n Enabled: true\n Origins:\n Quantity: 2\n Items:\n - Id: primary\n DomainName: <primary_origin_domain>\n S3OriginConfig: {}\n - Id: secondary\n DomainName: <secondary_origin_domain>\n S3OriginConfig: {}\n OriginGroups:\n Quantity: 1\n Items:\n - Id: <example_origin_group_id> # Critical: define origin group with 2 origins\n FailoverCriteria:\n StatusCodes:\n Quantity: 1\n Items: [500] # Critical: fail over on 500 to enable origin failover\n Members:\n Quantity: 2\n Items:\n - OriginId: primary\n - OriginId: secondary\n DefaultCacheBehavior:\n TargetOriginId: <example_origin_group_id> # Critical: use the origin group for requests\n ViewerProtocolPolicy: allow-all\n ForwardedValues:\n QueryString: false\n Cookies:\n Forward: none\n```",
27
+ "Other": "1. In the AWS Console, go to CloudFront and open your distribution\n2. Select the Origins tab and ensure two origins exist; add a second origin if needed\n3. In the Origin groups pane, click Create origin group\n4. Select the two origins; set one as primary and the other as secondary\n5. Choose at least one failover status code (e.g., 500) and create the group\n6. Go to Behaviors, edit the relevant cache behavior (or Default behavior)\n7. Set Origin to the new origin group and save changes\n8. Deploy/confirm the distribution update",
28
+ "Terraform": "```hcl\n# Configure an origin group with two origins and use it in the default cache behavior\nresource \"aws_cloudfront_distribution\" \"<example_resource_name>\" {\n enabled = true\n\n origin {\n domain_name = \"<primary_origin_domain>\"\n origin_id = \"primary\"\n s3_origin_config {}\n }\n\n origin {\n domain_name = \"<secondary_origin_domain>\"\n origin_id = \"secondary\"\n s3_origin_config {}\n }\n\n origin_group {\n origin_id = \"<example_origin_group_id>\" # Critical: define origin group with 2 origins\n failover_criteria {\n status_codes = [500] # Critical: fail over on 500 to enable origin failover\n }\n member { origin_id = \"primary\" }\n member { origin_id = \"secondary\" }\n }\n\n default_cache_behavior {\n target_origin_id = \"<example_origin_group_id>\" # Critical: use the origin group for requests\n viewer_protocol_policy = \"allow-all\"\n forwarded_values {\n query_string = false\n cookies { forward = \"none\" }\n }\n }\n\n restrictions {\n geo_restriction { restriction_type = \"none\" }\n }\n\n viewer_certificate { cloudfront_default_certificate = true }\n}\n```"
24
29
  },
25
30
  "Recommendation": {
26
- "Text": "Configure origin failover in your CloudFront distribution by setting up an origin group with at least two origins to enhance availability and ensure traffic is redirected if the primary origin fails.",
27
- "Url": "https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/high_availability_origin_failover.html#concept_origin_groups.creating"
31
+ "Text": "Enable **origin failover** by defining an origin group with primary and secondary origins. Distribute origins across independent zones or providers, set clear failover criteria (e.g., HTTP codes/timeouts), monitor health, and routinely test failover. Align with **resilience** and **defense-in-depth** to protect availability.",
32
+ "Url": "https://hub.prowler.com/check/cloudfront_distributions_multiple_origin_failover_configured"
28
33
  }
29
34
  },
30
35
  "Categories": [
31
- "redundancy"
36
+ "resilience"
32
37
  ],
33
38
  "DependsOn": [],
34
39
  "RelatedTo": [],
@@ -1,29 +1,42 @@
1
1
  {
2
2
  "Provider": "aws",
3
3
  "CheckID": "cloudfront_distributions_origin_traffic_encrypted",
4
- "CheckTitle": "Check if CloudFront distributions encrypt traffic to custom origins.",
5
- "CheckType": [],
4
+ "CheckTitle": "CloudFront distribution encrypts traffic to custom origins",
5
+ "CheckType": [
6
+ "Software and Configuration Checks/AWS Security Best Practices/Network Security",
7
+ "Software and Configuration Checks/Industry and Regulatory Standards/AWS Foundational Security Best Practices",
8
+ "Effects/Data Exposure"
9
+ ],
6
10
  "ServiceName": "cloudfront",
7
11
  "SubServiceName": "",
8
- "ResourceIdTemplate": "arn:partition:cloudfront:region:account-id:distribution/resource-id",
12
+ "ResourceIdTemplate": "",
9
13
  "Severity": "medium",
10
- "ResourceType": "AWSCloudFrontDistribution",
11
- "Description": "Check if CloudFront distributions encrypt traffic to custom origins.",
12
- "Risk": "Allowing unencrypted HTTP traffic between CloudFront and custom origins can expose data to potential eavesdropping and manipulation, compromising data security and integrity.",
13
- "RelatedUrl": "https://docs.aws.amazon.com/whitepapers/latest/secure-content-delivery-amazon-cloudfront/custom-origin-with-cloudfront.html",
14
+ "ResourceType": "AwsCloudFrontDistribution",
15
+ "Description": "**CloudFront distributions** are evaluated for **TLS to origins**. The check ensures custom origins use `origin_protocol_policy`=`https-only`, or `match-viewer` only when the viewer protocol policy disallows HTTP. For S3 origins, it inspects the viewer protocol policy and flags `allow-all` as permitting non-encrypted paths.",
16
+ "Risk": "Unencrypted origin links enable on-path interception and manipulation. Secrets, cookies, and PII can be exposed, and responses altered, undermining **confidentiality** and **integrity**. This increases chances of session hijacking, cache poisoning, and malicious content injection.",
17
+ "RelatedUrl": "",
18
+ "AdditionalURLs": [
19
+ "https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-https.html",
20
+ "https://www.trendmicro.com/cloudoneconformity/knowledge-base/aws/CloudFront/cloudfront-traffic-to-origin-unencrypted.html",
21
+ "https://docs.aws.amazon.com/securityhub/latest/userguide/cloudfront-controls.html#cloudfront-9",
22
+ "https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-https-cloudfront-to-custom-origin.html",
23
+ "https://docs.aws.amazon.com/whitepapers/latest/secure-content-delivery-amazon-cloudfront/custom-origin-with-cloudfront.html"
24
+ ],
14
25
  "Remediation": {
15
26
  "Code": {
16
- "CLI": "",
17
- "NativeIaC": "",
18
- "Other": "https://docs.aws.amazon.com/securityhub/latest/userguide/cloudfront-controls.html#cloudfront-9",
19
- "Terraform": "https://www.trendmicro.com/cloudoneconformity/knowledge-base/aws/CloudFront/cloudfront-traffic-to-origin-unencrypted.html"
27
+ "CLI": "aws cloudfront get-distribution-config --id <DISTRIBUTION_ID> --output json > current-config.json && echo 'Manually edit current-config.json to change Origins[].CustomOriginConfig.OriginProtocolPolicy to https-only', then run:' && echo 'aws cloudfront update-distribution --id <DISTRIBUTION_ID> --distribution-config file://current-config.json --if-match $(aws cloudfront get-distribution-config --id <DISTRIBUTION_ID> --query \"ETag\" --output text)'",
28
+ "NativeIaC": "```yaml\n# CloudFormation: set CloudFront origin to use HTTPS only\nResources:\n <example_resource_name>:\n Type: AWS::CloudFront::Distribution\n Properties:\n DistributionConfig:\n Enabled: true\n Origins:\n - Id: <example_origin_id>\n DomainName: <example_origin_domain>\n CustomOriginConfig:\n OriginProtocolPolicy: https-only # FIX: Force CloudFront-to-origin over HTTPS only\n DefaultCacheBehavior:\n TargetOriginId: <example_origin_id>\n ViewerProtocolPolicy: allow-all\n ForwardedValues:\n QueryString: false\n```",
29
+ "Other": "1. In the AWS Console, open CloudFront and select your distribution\n2. Go to the Origins tab, select the custom origin, and click Edit\n3. Set Protocol to HTTPS only (Origin protocol policy = HTTPS Only)\n4. Click Save changes and wait for the distribution to deploy",
30
+ "Terraform": "```hcl\n# Terraform: set CloudFront origin to use HTTPS only\nresource \"aws_cloudfront_distribution\" \"<example_resource_name>\" {\n enabled = true\n\n origin {\n domain_name = \"<example_origin_domain>\"\n origin_id = \"<example_origin_id>\"\n\n custom_origin_config {\n http_port = 80\n https_port = 443\n origin_protocol_policy = \"https-only\" # FIX: Force CloudFront-to-origin over HTTPS only\n origin_ssl_protocols = [\"TLSv1.2\"]\n }\n }\n\n default_cache_behavior {\n target_origin_id = \"<example_origin_id>\"\n viewer_protocol_policy = \"allow-all\"\n forwarded_values {\n query_string = false\n cookies { forward = \"none\" }\n }\n }\n\n restrictions { geo_restriction { restriction_type = \"none\" } }\n viewer_certificate { cloudfront_default_certificate = true }\n}\n```"
20
31
  },
21
32
  "Recommendation": {
22
- "Text": "Configure your CloudFront distributions to require HTTPS (TLS) for traffic to custom origins, ensuring all data transmitted between CloudFront and the origin is encrypted and protected from unauthorized access.",
23
- "Url": "https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-https-cloudfront-to-custom-origin.html"
33
+ "Text": "Enforce end-to-end HTTPS. Set `origin_protocol_policy` to `https-only` and viewer policy to `https-only` or `redirect-to-https`. Use trusted certificates and modern TLS (`TLSv1.2+`), disabling weak protocols. Apply **least privilege** and **defense in depth** by restricting direct origin access and preferring private connectivity.",
34
+ "Url": "https://hub.prowler.com/check/cloudfront_distributions_origin_traffic_encrypted"
24
35
  }
25
36
  },
26
- "Categories": [],
37
+ "Categories": [
38
+ "encryption"
39
+ ],
27
40
  "DependsOn": [],
28
41
  "RelatedTo": [],
29
42
  "Notes": ""
@@ -1,31 +1,41 @@
1
1
  {
2
2
  "Provider": "aws",
3
3
  "CheckID": "cloudfront_distributions_s3_origin_access_control",
4
- "CheckTitle": "Check if CloudFront distributions with S3 origin use OAC.",
4
+ "CheckTitle": "CloudFront distribution uses Origin Access Control (OAC) for all S3 origins",
5
5
  "CheckType": [
6
- "Data Exposure"
6
+ "Software and Configuration Checks/AWS Security Best Practices",
7
+ "Software and Configuration Checks/Industry and Regulatory Standards/AWS Foundational Security Best Practices",
8
+ "Effects/Data Exposure"
7
9
  ],
8
10
  "ServiceName": "cloudfront",
9
11
  "SubServiceName": "",
10
- "ResourceIdTemplate": "arn:partition:cloudfront:region:account-id:distribution/resource-id",
12
+ "ResourceIdTemplate": "",
11
13
  "Severity": "medium",
12
- "ResourceType": "AWSCloudFrontDistribution",
13
- "Description": "Check if CloudFront distributions use origin access control.",
14
- "Risk": "Without OAC, your S3 bucket could be accessed directly, bypassing CloudFront, which could expose your content to unauthorized access. Additionally, relying on Origin Access Identity (OAI) may limit functionality and security features, making your distribution less secure and more difficult to manage.",
15
- "RelatedUrl": "https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-s3.html#migrate-from-oai-to-oac",
14
+ "ResourceType": "AwsCloudFrontDistribution",
15
+ "Description": "**CloudFront distributions** with **Amazon S3 origins** are expected to use **Origin Access Control** (`OAC`) on each S3 origin.\n\nThe evaluation inspects distributions that include `s3_origin_config` and identifies S3 origins that lack an associated OAC.",
16
+ "Risk": "Without **OAC**, S3 objects can be reached outside CloudFront, bypassing edge controls and weakening **confidentiality** and **integrity**.\n- Direct access enables data exfiltration\n- Loss of WAF, rate-limiting, and detailed logging; cost abuse\n- Limited support for signed writes and **SSE-KMS**, increasing tampering risk",
17
+ "RelatedUrl": "",
18
+ "AdditionalURLs": [
19
+ "https://www.trendmicro.com/cloudoneconformity/knowledge-base/aws/CloudFront/s3-origin.html",
20
+ "https://repost.aws/knowledge-center/cloudfront-access-to-amazon-s3",
21
+ "https://docs.aws.amazon.com/securityhub/latest/userguide/cloudfront-controls.html#cloudfront-13",
22
+ "https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-s3.html"
23
+ ],
16
24
  "Remediation": {
17
25
  "Code": {
18
- "CLI": "",
19
- "NativeIaC": "https://docs.prowler.com/checks/aws/iam-policies/ensure-aws-cloudfromt-distribution-with-s3-have-origin-access-set-to-enabled/",
20
- "Other": "https://docs.aws.amazon.com/securityhub/latest/userguide/cloudfront-controls.html#cloudfront-13",
21
- "Terraform": "https://www.trendmicro.com/cloudoneconformity/knowledge-base/aws/CloudFront/s3-origin.html"
26
+ "CLI": "aws cloudfront create-origin-access-control --origin-access-control-config '{Name\":\"<example_resource_name>\",\"SigningProtocol\":\"sigv4\",\"SigningBehavior\":\"always\",\"OriginAccessControlOriginType\":\"s3\"}' && aws cloudfront get-distribution-config --id <DISTRIBUTION_ID> --output json > current-config.json && echo 'Manually edit current-config.json to add OriginAccessControlId to S3 origins, then run:' && echo 'aws cloudfront update-distribution --id <DISTRIBUTION_ID> --distribution-config file://current-config.json --if-match $(aws cloudfront get-distribution-config --id <DISTRIBUTION_ID> --query \"ETag\" --output text)'",
27
+ "NativeIaC": "```yaml\n# CloudFormation: attach OAC to S3 origin in a CloudFront distribution\nResources:\n ExampleOAC:\n Type: AWS::CloudFront::OriginAccessControl\n Properties:\n OriginAccessControlConfig:\n Name: <example_resource_name>\n OriginAccessControlOriginType: s3\n SigningBehavior: always\n SigningProtocol: sigv4\n\n ExampleDistribution:\n Type: AWS::CloudFront::Distribution\n Properties:\n DistributionConfig:\n Enabled: true\n Origins:\n - Id: s3-<example_resource_id>\n DomainName: <example_bucket>.s3.amazonaws.com\n OriginAccessControlId: !Ref ExampleOAC # CRITICAL: attaches OAC to the S3 origin to satisfy the check\n S3OriginConfig:\n OriginAccessIdentity: \"\" # CRITICAL: disable OAI when using OAC\n DefaultCacheBehavior:\n TargetOriginId: s3-<example_resource_id>\n ViewerProtocolPolicy: redirect-to-https\n CachePolicyId: 658327ea-f89d-4fab-a63d-7e88639e58f6\n```",
28
+ "Other": "1. In the AWS Console, open CloudFront and go to Security > Origin access > Origin access control (OAC). Click Create control setting, choose Origin type S3, keep Sign requests, and create the OAC.\n2. Open your CloudFront distribution, go to the Origins tab.\n3. For each S3 origin: click Edit, select Origin access control settings (recommended), choose the OAC created in step 1, and Save changes.\n4. Repeat step 3 for all S3 origins in the distribution.",
29
+ "Terraform": "```hcl\n# Terraform: attach OAC to S3 origin in a CloudFront distribution\nresource \"aws_cloudfront_origin_access_control\" \"oac\" {\n name = \"<example_resource_name>\"\n origin_access_control_origin_type = \"s3\"\n signing_behavior = \"always\"\n signing_protocol = \"sigv4\"\n}\n\nresource \"aws_cloudfront_distribution\" \"dist\" {\n enabled = true\n\n origin {\n domain_name = \"<example_bucket>.s3.amazonaws.com\"\n origin_id = \"s3-<example_resource_id>\"\n\n origin_access_control_id = aws_cloudfront_origin_access_control.oac.id # CRITICAL: attaches OAC to the S3 origin to satisfy the check\n\n s3_origin_config {\n origin_access_identity = \"\" # CRITICAL: disable OAI when using OAC\n }\n }\n\n default_cache_behavior {\n target_origin_id = \"s3-<example_resource_id>\"\n viewer_protocol_policy = \"redirect-to-https\"\n cache_policy_id = \"658327ea-f89d-4fab-a63d-7e88639e58f6\"\n }\n}\n```"
22
30
  },
23
31
  "Recommendation": {
24
- "Text": "Configure Origin Access Control (OAC) for CloudFront distributions that use an Amazon S3 origin. This will ensure that the content in your S3 bucket is accessible only through the specified CloudFront distribution, enhancing security by preventing direct access to the bucket.",
25
- "Url": "https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-s3.html"
32
+ "Text": "Enable **Origin Access Control** for all S3 origins and keep buckets non-public.\n\nApply **least privilege**: scope bucket and key permissions to CloudFront and the intended distribution. Ensure origin requests are signed, migrate from legacy OAI, and use **defense in depth** with WAF and monitoring to protect and observe access.",
33
+ "Url": "https://hub.prowler.com/check/cloudfront_distributions_s3_origin_access_control"
26
34
  }
27
35
  },
28
- "Categories": [],
36
+ "Categories": [
37
+ "trust-boundaries"
38
+ ],
29
39
  "DependsOn": [],
30
40
  "RelatedTo": [],
31
41
  "Notes": ""
@@ -1,32 +1,39 @@
1
1
  {
2
2
  "Provider": "aws",
3
3
  "CheckID": "cloudfront_distributions_s3_origin_non_existent_bucket",
4
- "CheckTitle": "CloudFront distributions should not point to non-existent S3 origins without static website hosting.",
4
+ "CheckTitle": "CloudFront distribution S3 origins reference existing buckets",
5
5
  "CheckType": [
6
+ "Software and Configuration Checks/AWS Security Best Practices",
7
+ "Software and Configuration Checks/Industry and Regulatory Standards/AWS Foundational Security Best Practices",
6
8
  "Software and Configuration Checks/Industry and Regulatory Standards/NIST 800-53 Controls"
7
9
  ],
8
10
  "ServiceName": "cloudfront",
9
11
  "SubServiceName": "",
10
- "ResourceIdTemplate": "arn:partition:cloudfront:region:account-id:distribution/resource-id",
12
+ "ResourceIdTemplate": "",
11
13
  "Severity": "high",
12
14
  "ResourceType": "AwsCloudFrontDistribution",
13
- "Description": "This control checks whether Amazon CloudFront distributions are pointing to non-existent Amazon S3 origins without static website hosting. The control fails if the origin is configured to point to a non-existent bucket.",
14
- "Risk": "Pointing a CloudFront distribution to a non-existent S3 bucket can allow malicious actors to create the bucket and potentially serve unauthorized content through your distribution, leading to security and integrity issues.",
15
- "RelatedUrl": "https://docs.aws.amazon.com/whitepapers/latest/secure-content-delivery-amazon-cloudfront/s3-origin-with-cloudfront.html",
15
+ "Description": "**CloudFront distributions** with `S3OriginConfig` should reference existing **S3 bucket origins** (excluding static website hosting).\n\nIdentifies origins where the configured bucket name does not exist.",
16
+ "Risk": "**Dangling S3 origins** allow potential **bucket takeover**: an attacker could create the missing bucket and have CloudFront retrieve attacker-controlled objects *if access isn't restricted*.\n\nThis threatens **integrity** (content spoofing, cache poisoning) and **availability** (errors/timeouts), undermining user trust.",
17
+ "RelatedUrl": "",
18
+ "AdditionalURLs": [
19
+ "https://docs.aws.amazon.com/whitepapers/latest/secure-content-delivery-amazon-cloudfront/s3-origin-with-cloudfront.html",
20
+ "https://docs.aws.amazon.com/securityhub/latest/userguide/cloudfront-controls.html#cloudfront-12",
21
+ "https://www.trendmicro.com/cloudoneconformity/knowledge-base/aws/CloudFront/cloudfront-existing-s3-bucket.html"
22
+ ],
16
23
  "Remediation": {
17
24
  "Code": {
18
25
  "CLI": "",
19
- "NativeIaC": "",
20
- "Other": "https://docs.aws.amazon.com/securityhub/latest/userguide/cloudfront-controls.html#cloudfront-12",
21
- "Terraform": "https://www.trendmicro.com/cloudoneconformity/knowledge-base/aws/CloudFront/cloudfront-existing-s3-bucket.html"
26
+ "NativeIaC": "```yaml\n# CloudFormation: ensure the S3 bucket referenced by the CloudFront S3 origin exists\nResources:\n <example_resource_name>:\n Type: AWS::S3::Bucket\n Properties:\n BucketName: <example_resource_name> # Critical: must exactly match the bucket name used in the CloudFront origin's domain (before \".s3\") to make it exist\n```",
27
+ "Other": "1. In the AWS console, open CloudFront and select the distribution\n2. Go to Origins, select the S3 origin, and note the Domain Name (the bucket name is the text before \".s3\")\n3. Open the S3 console, click Create bucket, enter the exact bucket name from step 2, and create the bucket\n4. Re-run the check",
28
+ "Terraform": "```hcl\n# Ensure the S3 bucket referenced by the CloudFront S3 origin exists\nresource \"aws_s3_bucket\" \"<example_resource_name>\" {\n bucket = \"<example_resource_name>\" # Critical: must exactly match the bucket name used in the CloudFront origin's domain (before \".s3\")\n}\n```"
22
29
  },
23
30
  "Recommendation": {
24
- "Text": "Verify that all CloudFront distributions are configured to point to valid, existing S3 buckets. Update the origin settings as needed to ensure that your distributions are linked to appropriate and secure origins.",
25
- "Url": "https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/HowToUpdateDistribution.html"
31
+ "Text": "Ensure origins reference valid, owned buckets; delete or update stale references. Enforce **origin access control** (or OAI) and tight bucket policies so only the distribution can access objects. Apply **least privilege**, manage bucket names, and monitor origin health to prevent misrouting.",
32
+ "Url": "https://hub.prowler.com/check/cloudfront_distributions_s3_origin_non_existent_bucket"
26
33
  }
27
34
  },
28
35
  "Categories": [
29
- "trustboundaries"
36
+ "resilience"
30
37
  ],
31
38
  "DependsOn": [],
32
39
  "RelatedTo": [],
@@ -1,26 +1,34 @@
1
1
  {
2
2
  "Provider": "aws",
3
3
  "CheckID": "cloudfront_distributions_using_deprecated_ssl_protocols",
4
- "CheckTitle": "Check if CloudFront distributions are using deprecated SSL protocols.",
5
- "CheckType": [],
4
+ "CheckTitle": "CloudFront distribution does not use SSLv3, TLSv1, or TLSv1.1 for origin connections",
5
+ "CheckType": [
6
+ "Software and Configuration Checks/AWS Security Best Practices",
7
+ "Software and Configuration Checks/Industry and Regulatory Standards/AWS Foundational Security Best Practices"
8
+ ],
6
9
  "ServiceName": "cloudfront",
7
10
  "SubServiceName": "",
8
- "ResourceIdTemplate": "arn:partition:cloudfront:region:account-id:distribution/resource-id",
11
+ "ResourceIdTemplate": "",
9
12
  "Severity": "low",
10
13
  "ResourceType": "AwsCloudFrontDistribution",
11
- "Description": "Check if CloudFront distributions are using deprecated SSL protocols.",
12
- "Risk": "Using insecure ciphers could affect privacy of in transit information.",
13
- "RelatedUrl": "https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/secure-connections-supported-viewer-protocols-ciphers.html",
14
+ "Description": "CloudFront distributions have origins whose `OriginSslProtocols` allow **deprecated SSL/TLS versions** (`SSLv3`, `TLSv1`, `TLSv1.1`) for CloudFront-to-origin HTTPS connections.",
15
+ "Risk": "Weak protocols between CloudFront and the origin allow downgrades and known exploits (e.g., POODLE/BEAST), enabling eavesdropping or content tampering. This compromises the **confidentiality** and **integrity** of data in transit, exposing cookies, credentials, and responses served to viewers.",
16
+ "RelatedUrl": "",
17
+ "AdditionalURLs": [
18
+ "https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/secure-connections-supported-viewer-protocols-ciphers.html",
19
+ "https://trendmicro.com/cloudoneconformity/knowledge-base/aws/CloudFront/cloudfront-insecure-origin-ssl-protocols.html",
20
+ "https://support.icompaas.com/support/solutions/articles/62000223404-ensure-cloudfront-distributions-are-not-using-deprecated-ssl-protocols"
21
+ ],
14
22
  "Remediation": {
15
23
  "Code": {
16
- "CLI": "",
17
- "NativeIaC": "",
18
- "Other": "https://docs.prowler.com/checks/aws/networking-policies/networking_33",
19
- "Terraform": ""
24
+ "CLI": "aws cloudfront get-distribution-config --id <DISTRIBUTION_ID> --output json > current-config.json && echo 'Manually edit current-config.json to change Origins[].CustomOriginConfig.OriginSslProtocols to [TLSv1.2], then run:' && echo 'aws cloudfront update-distribution --id <DISTRIBUTION_ID> --distribution-config file://current-config.json --if-match $(aws cloudfront get-distribution-config --id <DISTRIBUTION_ID> --query \"ETag\" --output text)'",
25
+ "NativeIaC": "```yaml\n# CloudFormation: set origin to allow only TLSv1.2 when connecting to the origin\nResources:\n <example_resource_name>:\n Type: AWS::CloudFront::Distribution\n Properties:\n DistributionConfig:\n Enabled: true\n Origins:\n - Id: <example_origin_id>\n DomainName: <origin.example.com>\n CustomOriginConfig:\n OriginProtocolPolicy: https-only\n OriginSslProtocols:\n - TLSv1.2 # CRITICAL: restrict origin SSL protocols to TLSv1.2 to remove SSLv3/TLSv1/TLSv1.1\n DefaultCacheBehavior:\n TargetOriginId: <example_origin_id>\n ViewerProtocolPolicy: redirect-to-https\n```",
26
+ "Other": "1. Open the AWS Console and go to CloudFront\n2. Select the distribution and open the Origins tab\n3. Select the custom origin and click Edit\n4. Under Origin SSL protocols, select only TLSv1.2\n5. Save changes\n6. Repeat for any other custom origins in the distribution",
27
+ "Terraform": "```hcl\n# Terraform: set origin to allow only TLSv1.2 when connecting to the origin\nresource \"aws_cloudfront_distribution\" \"<example_resource_name>\" {\n enabled = true\n\n origin {\n domain_name = \"<origin.example.com>\"\n origin_id = \"<example_origin_id>\"\n\n custom_origin_config {\n http_port = 80\n https_port = 443\n origin_protocol_policy = \"https-only\"\n origin_ssl_protocols = [\"TLSv1.2\"] # CRITICAL: restrict origin SSL protocols to TLSv1.2\n }\n }\n\n default_cache_behavior {\n target_origin_id = \"<example_origin_id>\"\n viewer_protocol_policy = \"redirect-to-https\"\n allowed_methods = [\"GET\", \"HEAD\"]\n cached_methods = [\"GET\", \"HEAD\"]\n forwarded_values { query_string = false }\n }\n}\n```"
20
28
  },
21
29
  "Recommendation": {
22
- "Text": "Use a Security policy with ciphers that are as strong as possible. Drop legacy and insecure ciphers.",
23
- "Url": "https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/secure-connections-supported-viewer-protocols-ciphers.html"
30
+ "Text": "Enforce **TLS 1.2+** for CloudFront-to-origin traffic. Remove `SSLv3`, `TLSv1`, `TLSv1.1` from allowed protocols and prefer modern cipher suites. Verify origin compatibility, update certificates and libraries, and periodically review policies as part of **defense in depth** and **least privilege**.",
31
+ "Url": "https://hub.prowler.com/check/cloudfront_distributions_using_deprecated_ssl_protocols"
24
32
  }
25
33
  },
26
34
  "Categories": [
@@ -1,31 +1,40 @@
1
1
  {
2
2
  "Provider": "aws",
3
3
  "CheckID": "cloudfront_distributions_using_waf",
4
- "CheckTitle": "Check if CloudFront distributions are using WAF.",
4
+ "CheckTitle": "CloudFront distribution uses an AWS WAF web ACL",
5
5
  "CheckType": [
6
- "IAM"
6
+ "Software and Configuration Checks/AWS Security Best Practices",
7
+ "Software and Configuration Checks/Industry and Regulatory Standards/AWS Foundational Security Best Practices",
8
+ "Software and Configuration Checks/Industry and Regulatory Standards/PCI-DSS"
7
9
  ],
8
10
  "ServiceName": "cloudfront",
9
11
  "SubServiceName": "",
10
- "ResourceIdTemplate": "arn:partition:cloudfront:region:account-id:distribution/resource-id",
12
+ "ResourceIdTemplate": "",
11
13
  "Severity": "medium",
12
14
  "ResourceType": "AwsCloudFrontDistribution",
13
- "Description": "Check if CloudFront distributions are using WAF.",
14
- "Risk": "Potential attacks and / or abuse of service, more even for even for internet reachable services.",
15
- "RelatedUrl": "https://docs.aws.amazon.com/waf/latest/developerguide/cloudfront-features.html",
15
+ "Description": "**CloudFront distributions** are assessed for an associated **AWS WAF** web ACL that inspects and filters HTTP/S requests at the edge.\n\nThe finding highlights distributions without this web ACL association.",
16
+ "Risk": "Absent **WAF** on Internet-facing distributions exposes apps to layer-7 threats: SQLi/XSS and bot abuse can cause data exfiltration (**confidentiality**), unauthorized actions (**integrity**), and request floods that overload origins (**availability**). It may also raise egress and compute costs.",
17
+ "RelatedUrl": "",
18
+ "AdditionalURLs": [
19
+ "https://repost.aws/questions/QUTY5hPVxgS6Caa3eZHX7-nQ/waf-on-alb-or-cloudfront",
20
+ "https://docs.aws.amazon.com/waf/latest/developerguide/cloudfront-features.html",
21
+ "https://www.trendmicro.com/cloudoneconformity/knowledge-base/aws/CloudFront/cloudfront-integrated-with-waf.html"
22
+ ],
16
23
  "Remediation": {
17
24
  "Code": {
18
25
  "CLI": "",
19
- "NativeIaC": "https://docs.prowler.com/checks/aws/general-policies/bc_aws_general_27#cloudformation",
20
- "Other": "https://docs.prowler.com/checks/aws/general-policies/bc_aws_general_27",
21
- "Terraform": "https://docs.prowler.com/checks/aws/general-policies/bc_aws_general_27#terraform"
26
+ "NativeIaC": "```yaml\n# CloudFormation: associate an AWS WAFv2 Web ACL with a CloudFront distribution\nResources:\n <example_distribution>:\n Type: AWS::CloudFront::Distribution\n Properties:\n DistributionConfig:\n Enabled: true\n Origins:\n - Id: origin1\n DomainName: <example_origin_domain>\n S3OriginConfig: {}\n DefaultCacheBehavior:\n TargetOriginId: origin1\n ViewerProtocolPolicy: redirect-to-https\n ForwardedValues:\n QueryString: false\n WebACLId: <example_web_acl_arn> # CRITICAL: Associates the WAFv2 Web ACL (ARN) to this distribution\n # This makes the distribution PASS by enabling WAF protection\n```",
27
+ "Other": "1. In the AWS Console, go to CloudFront > Distributions and select your distribution\n2. Click Edit (General/Settings)\n3. Set AWS WAF Web ACL to your Web ACL (scope: Global/CloudFront)\n4. Click Save/Yes, Edit and wait for Deployment to complete\n5. If no Web ACL exists: go to WAF & Shield > Web ACLs (scope: CloudFront), Create web ACL, then repeat steps 1-4 to associate it",
28
+ "Terraform": "```hcl\n# Add this to the existing CloudFront distribution resource\nresource \"aws_cloudfront_distribution\" \"<example_resource_name>\" {\n web_acl_id = \"<example_web_acl_arn>\" # CRITICAL: Associates the WAFv2 Web ACL (ARN) to the distribution to PASS the check\n}\n```"
22
29
  },
23
30
  "Recommendation": {
24
- "Text": "Use AWS WAF to protect your service from common web exploits. These could affect availability and performance, compromise security, or consume excessive resources.",
25
- "Url": "https://www.trendmicro.com/cloudoneconformity/knowledge-base/aws/CloudFront/cloudfront-integrated-with-waf.html"
31
+ "Text": "Associate each distribution with an **AWS WAF web ACL** and apply defense-in-depth:\n- Use managed rule groups and rate limits\n- Add IP/geo and bot controls as needed\n- Enable logging, test new rules in `count` mode, and tune\n- Monitor metrics and update rules\n\nAlign controls with **least privilege** for requests.",
32
+ "Url": "https://hub.prowler.com/check/cloudfront_distributions_using_waf"
26
33
  }
27
34
  },
28
- "Categories": [],
35
+ "Categories": [
36
+ "internet-exposed"
37
+ ],
29
38
  "DependsOn": [],
30
39
  "RelatedTo": [],
31
40
  "Notes": ""