What risks can the infrastructure-as-code (IaC) checks uncover?

BluBracket’s infrastructure-as-code (IaC) scanning runs automatically on every repository. If there are any supported IaC-related files, they’ll be scanned for risks according to best-practices recommendations outlined below.

What IaC file types are supported

  • Terraform (for AWS, GCP, Azure and OCI)
  • CloudFormation (including AWS SAM)
  • Azure Resource Manager (ARM)
  • Serverless framework
  • Helm charts
  • Kubernetes
  • Docker

What rules are checked

AWS General

  • AWS EBS Volumes are not encrypted
  • AWS EBS Snapshots are not encrypted
  • AWS EBS volumes do not have encrypted launch configurations
  • AWS RDS DB cluster data is not encrypted at rest
  • Data stored in SageMaker is not securely encrypted at rest
  • AWS SNS topic server-side encryption is not enabled
  • AWS SQS server-side encryption is not enabled
  • Amazon DynamoDB Point-In-Time Recovery (PITR) is not enabled
  • AWS ElastiCache Redis cluster data is not encrypted at rest
  • AWS ElastiCache Redis cluster data in-transit is not encrypted
  • AWS ElastiCache Replication Group data in-transit is not encrypted
  • AWS Elastic File System (EFS) data is not encrypted at rest
  • AWS Kinesis streams server-side encryption is not enabled
  • Amazon Neptune storage is not securely encrypted
  • Amazon DynamoDB Accelerator (DAX) is not securely encrypted at rest
  • Amazon Elastic Container Registry (ECR) image tags are not immutable
  • AWS Redshift cluster data is not encrypted at rest
  • Amazon CloudFront distribution does not have Web Application Firewall (WAF) enabled
  • Amazon DocumentDB data is not securely encrypted at rest
  • AWS Athena Database is not securely encrypted at rest
  • AWS CodeBuild project encryption is disabled
  • AWS EC2 Instance Metadata Service version 1 (IMDSv1) is enabled
  • Amazon Managed Streaming for Apache Kafka (MSK) cluster encryption at rest and in transit is not enabled
  • AWS Athena workgroup does not prevent disabling encryption
  • AWS Glue Data Catalog encryption is not enabled
  • Amazon Aurora data is not securely encrypted at rest
  • Elastic File System (EFS) volumes in ECS task definitions do not have encryption in transit enabled
  • AWS SageMaker notebook instance data is not encrypted at rest
  • AWS Glue security configuration encryption is not enabled
  • Amazon Neptune cluster instance is publicly available
  • AWS Load Balancer listener is not using TLS 1.2
  • AWS Load Balancer does not have deletion protection
  • Amazon Elastic MapReduce (EMR) cluster is not configured with Kerberos authentication
  • AWS Lambda function is not configured for function-level concurrent execution limit
  • AWS Lambda does not have dead letter queue configured
  • AWS Lambda Function is not assigned to access within VPC
  • Amazon DynamoDB tables are not encrypted
  • Elastic load balancers do not use SSL Certificates provided by AWS Certificate Manager
  • AWS KMS Customer Managed key rotation is disabled
  • AWS RDS instance does not have backup policy
  • Amazon ElastiCache Redis clusters do not have automatic backup turned on
  • AWS EC2 instance is not EBS optimized
  • AWS Elastic Container Registry (ECR) repository encryption is disabled
  • AWS RDS cluster/instance has deletion protection disabled
  • AWS RDS Global Cluster data is not encrypted
  • Amazon Redshit cluster version upgrades are disabled
  • Amazon Redshit cluster data is not encrypted using AWS KMS
  • AWS S3 bucket lock configuration is disabled
  • AWS S3 bucket cross-region replication disabled
  • AWS S3 bucket objects are not encrypted using AWS KMS
  • AWS RDS instance does not have Multi-AZ enabled
  • AWS Elastic Container Registry (ECR) image scan on push is not enabled
  • AWS resource does not have any tags set
  • EBS volume attached to AWS EC2 Instance is not encrypted
  • Amazon GuardDuty is not enabled to specific org/region
  • AWS RDS cluster does not have AWS Backup’s backup plan
  • AWS EBS volume does not have AWS Backup’s backup plan
  • AWS Redshift cluster does not have AWS Backup’s backup plan
  • Amazon DynamoDB table does not have Auto Scaling enabled
  • Amazon Elastic File System (EFS) does not have AWS Backup’s backup plan
  • Dynamodb point in time recovery is not enabled for global tables
  • Backup Vault is not encrypted at rest using KMS CMK
  • Glacier Vault access policy is public and not restricted to specific services or principals
  • SQS queue policy is public and access is not restricted to specific services or principals
  • SNS topic policy is public and access is not restricted to specific services or principals
  • QLDB ledger permissions mode is not set to STANDARD
  • EMR cluster is not configured with SSE KMS for data at rest encryption (Amazon S3 with EMRFS)
  • AWS Image Builder component not encrypted using Customer Managed Key
  • AWS S3 Object Copy not encrypted using Customer Managed Key
  • AWS Doc DB not encrypted using Customer Managed Key
  • AWS EBS Snapshot Copy not encrypted using Customer Managed Key
  • AWS Elastic File System (EFS) not encrypted using Customer Managed Key
  • AWS Kinesis streams encryption using default KMS keys instead of Customer’s Managed Master Keys
  • AWS S3 Object Copy not encrypted using Customer Managed Key
  • AWS Sagemaker domain not encrypted using Customer Managed Key
  • AWS Redshift Cluster not encrypted using Customer Managed Key
  • AWS EBS Volume not encrypted using Customer Managed Key
  • AWS Elasticache replication group not configured with CMK key**
  • AWS Glue component has no security configuration associated
  • Route53 A Record does not have Attached Resource

AWS Networking

  • AWS Application Load Balancer (ALB) protocol is not HTTPS
  • Not every Security Group rule has a description
  • AWS Security Group allows all traffic on SSH port 22
  • Security Group allows ingress from 0.0.0.0/0 to port 3389
  • Amazon CloudFront distribution ViewerProtocolPolicy is not set to HTTPS
  • Amazon DocumentDB Transport Layer Security (TLS) is disabled
  • AWS SageMaker notebook instance is not configured with direct internet access feature
  • AWS VPC endpoint service is not configured for manual acceptance
  • AWS Application Load Balancer (ALB) does not drop HTTP headers
  • AWS ElasticSearch cluster is not in a VPC
  • AWS Elastic Load Balancer (ELB) has cross-zone load balancing disabled
  • Not all Network Access Control Lists (NACLs) are attached to subnets
  • Security Groups are not attached to EC2 instances or ENIs
  • AWS S3 Bucket does not have public access blocks
  • Amazon EMR cluster security groups are open to the world
  • AWS Default Security Group does not restrict all traffic
  • Auto scaling groups associated with a load balancer do not use elastic load balancing health checks
  • AWS EC2 instance is not configured with VPC
  • Not all Eastic IP addresses allocated to a VPC are attached to EC2 instances or NAT Gateways
  • Application Load Balancer (ALB) does not redirect HTTP requests into HTTPS
  • Transfer Server is publicly exposed
  • CloudFront web distribution that allow TLS versions 1.0 or lower
  • AWS WAF does not have associated rules
  • WAF allows message lookup in Log4j2
  • Application Load Balancer (ALB) not configured with AWS Web Application Firewall v2 (AWS WAFv2)
  • Public API gateway not configured with AWS Web Application Firewall v2 (AWS WAFv2)

AWS Logging

  • AWS KMS Customer Managed Key (CMK) rotation is not enabled
  • AWS CloudTrail logs are not encrypted using AWS KMS Customer Managed Key (CMK)
  • AWS CloudTrail log validation is not enabled in all regions
  • Amazon MQ Broker logging is not enabled
  • Container insights are not enabled on ECS cluster
  • AWS CloudWatch log groups do not specify retention days
  • AWS CloudTrail is not enabled in all regions
  • AWS Redshift database does not have audit logging enabled
  • Amazon API Gateway does not have X-Ray tracing enabled
  • AWS Global Accelerator does not have Flow logs enabled
  • Amazon API Gateway does not have access logging enabled
  • Amazon Managed Streaming for Apache Kafka (MSK) cluster logging is not enabled
  • Amazon DocumentDB logging is not enabled
  • Amazon CloudFront distribution has access logging disabled
  • AWS Classic Elastic Load Balancer (ELB) does not have access logging enabled
  • AWS Elastic Load Balancer (ELB) does not have access logging enabled
  • Amazon Neptune logging is not enabled
  • Enhanced monitoring for Amazon RDS instances is enabled
  • AWS config is not enabled in all regions
  • AWS CloudFormation stack configured without SNS topic
  • Detailed monitoring for EC2 instances is disabled
  • Amazon CloudWatch logs are not encrypted at rest using KMS CMKs
  • Amazon API Gateway stage does not have logging level defined appropriately
  • AWS CloudTrail trail is not integrated with CloudWatch Log
  • AWS VPC Flow logs not enabled
  • Postgres RDS does not have Query Logging enabled
  • Postgres RDS does not have Query Logging enabled
  • AWS WAF2 does not have a Logging Configuration

AWS IAM

  • AWS IAM policy allows full administrative privileges
  • AWS IAM password policy does not expire within 90 days
  • AWS IAM password policy does not have a minimum of 14 characters
  • AWS IAM password policy does not have a lowercase character
  • AWS IAM password policy does not have a number
  • AWS IAM password policy allows password reuse
  • AWS IAM password policy does not have a symbol
  • AWS IAM password policy does not have an uppercase character
  • AWS IAM policies are not only attached to Groups and Roles
  • AWS IAM policy documents allow * (asterisk) as a statement’s action
  • AWS IAM role does not allow only specific services or principals to be assumed
  • AWS IAM policy allows assume role permission across all services
  • AWS IAM policy allows full administrative privileges
  • AWS IAM policy documents allow * (asterisk) as a statement’s action
  • AWS SQS policy documents allow * (asterisk) as a statement’s action
  • AWS IAM policies allow credentials exposure for ECR
  • AWS IAM policies allow data exfiltration without resource constraints
  • AWS IAM policies allow modification of policies and exposes resources
  • AWS IAM policies allow write access without constraint
  • IAM authentication for Amazon RDS clusters is disabled
  • Respective logs of Amazon RDS are disabled
  • AWS IAM groups do not include at least one IAM user
  • Not all AWS IAM users are members of at least one IAM group
  • IAM User has access to the console

AWS ElasticSearch

  • AWS Elasticsearch domain encryption for data at rest is disabled
  • AWS Elasticsearch does not have node-to-node encryption enabled
  • AWS Elasticsearch domains do not have enforce HTTPS
  • AWS Elasticsearch domain logging is not enabled

AWS Public

  • AWS RDS database instance is publicly accessible
  • AWS ECR repository is exposed to public
  • Amazon API gateway methods are publicly accessible
  • Amazon MQ is publicly accessible
  • AWS Redshift clusters should not be publicly accessible
  • AWS EC2 instances with public IP and associated with security groups have Internet access
  • AWS Database Migration Service (DMS) replication instance should be publicly accessible

AWS S3

  • AWS access logging is not enabled on S3 buckets
  • Data stored in the AWS S3 bucket is not securely encrypted at rest
  • AWS S3 Bucket ACL grants READ permission to everyone
  • AWS S3 object versioning is disabled
  • AWS S3 bucket has block public ACLs disabled
  • AWS S3 bucket BlockPublicPolicy is not set to True
  • AWS S3 bucket IgnorePublicAcls is not set to True
  • AWS S3 bucket RestrictPublicBucket is not set to True
  • AWS S3 bucket is publicly writable
  • AWS S3 bucket allows an action with any Principal
  • AWS S3 bucket policy locks out all but root user

AWS EKS

  • AWS EKS control plane logging is disabled
  • AWS EKS cluster security group overly permissive to all traffic
  • AWS EKS cluster endpoint access is publicly enabled
  • AWS EKS cluster does not have secrets encryption enabled
  • AWS EKS node group does not have implicit SSH access from 0.0.0.0/0
  • AWS EKS Kubernetes secrets are not encrypted

AWS Secrets

  • AWS access keys and secrets are hard coded in infrastructure
  • AWS Lambda function’s environment variables expose secrets
  • AWS EC2 Instance user data exposes secrets

AWS Serverless

  • AWS Lambda functions do not have tracing enabled

Azure General

  • Azure VM data disk is encrypted with the default encryption key instead of ADE/CMK
  • Azure App Service Web app authentication is Off
  • Standard pricing tier is not selected
  • No security contact phone number is present
  • Send email notification for high severity alerts is not enabled
  • Send email notification for high severity alerts to admins is not enabled
  • Azure SQL Server threat detection alerts are not enabled for all threat types
  • Azure SQL server send alerts to field value is not set
  • MSSQL servers do not have email service and co-administrators enabled
  • Not all keys have an expiration date
  • Azure key vault is not recoverable
  • A retention period of less than 90 days is not specified
  • Azure Linux scale set does not use an SSH key
  • Virtual Machine extensions are installed
  • Azure Security Center Defender is set to Off for servers
  • Azure function app authentication is set to Off
  • CORS allows resource to access app services
  • Azure Security Center Defender is set to Off for app service
  • CORS allows resources to access function apps
  • Azure function app does not use HTTP 2.0
  • Azure Security Center Defender is set to Off for Azure SQL database servers
  • Managed identity provider is not enabled for app services
  • Remote debugging is enabled for app services
  • Automation account variables are not encrypted
  • Azure Data Explorer does not use disk encryption
  • Azure Data Explorer does not use double encryption
  • Azure Batch account does not use key vault to encrypt data
  • FTP Deployments are enabled
  • Azure Defender is set to Off for SQL servers on machines
  • Azure App Service Web app does not use the latest .Net Core version
  • Azure App Service Web app does not use the latest PHP version
  • Azure App Service Web app does not use the latest Python version
  • Azure App Service Web app does not use the latest Java version
  • Azure Security Center Defender is set to Off for storage
  • Azure Security Center Defender is set to Off for Kubernetes
  • Azure Defender is set to Off for container registries
  • Azure Security Center Defender set to Off for Key Vault
  • App services do not use Azure files
  • Azure Virtual Machines are not utilizing managed disks
  • Managed disks do not use a specific set of disk encryption sets for customer-managed key encryption
  • My SQL server disables geo-redundant backups
  • Automatic OS image patching is disabled for Virtual Machine scale sets
  • MySQL server disables infrastructure encryption
  • Virtual Machine scale sets do not have encryption at host enabled
  • Cosmos DB Accounts do not have CMKs encrypting data at rest
  • PostgreSQL server disables geo-redundant backups
  • Azure Data Factory does not use Git repository for source control
  • Unencrypted Data Lake Store accounts
  • Key vault disables purge protection
  • Key vault does not enable soft delete
  • Key vault key is not backed by HSM
  • Key vault secrets do not have content_type set
  • My SQL server does not enable Threat Detection policy
  • PostgreSQL server does not enable Threat Detection policy
  • MariaDB server does not enable geo-redundant backups
  • PostgreSQL server does not enable infrastructure encryption
  • Security contact emails are not set
  • Storage for critical data are not encrypted with CMKs
  • Azure SQL server ADS Vulnerability Assessment is disabled
  • Azure SQL server ADS Vulnerability Assessment Periodic recurring scans is disabled
  • Azure SQL server ADS VA Send scan reports to is not configured
  • Azure SQL server ADS VA Also send email notifications to admins and subscription owners is disabled
  • SQL servers do not have Azure Active Directory admin configured
  • Azure Virtual Machines are not utilizing managed disks
  • Microsoft Antimalware is not configured to automatically update Virtual Machines
  • Azure Data Explorer encryption at rest does not use a CMK
  • Virtual Machines are not backed up using Azure backup
  • SQL servers do not enable data security policy
  • Unattached disks are not encrypted
  • Azure data factories are not encrypted with a CMK
  • MySQL server does not enable CMKs for encryption
  • PostgreSQL server does not enable CMKs for encryption
  • Azure storage account encryption CMKs are disabled

Azure Logging

  • Azure Network Watcher NSG flow logs retention is less than 90 days
  • Azure SQL server auditing is disabled
  • Azure SQL server audit log retention is less than 91 days
  • Storage logging for queue service does not have read, write, and delete requests enabled
  • Activity log retention is set to less than 365 days
  • Log profile is not configured to capture all activities
  • App service does not enable HTTP logging
  • App service disables detailed error messages
  • App service does not enable failed request tracing
  • The storage container storing activity logs is publicly accessible
  • Azure storage account logging for tables is disabled
  • Azure storage account logging for blobs is disabled

Azure IAM

  • App Service is not registered with an Azure Active Directory account
  • Azure subscriptions with custom roles are overly permissive

Azure Networking

  • Azure instance does not authenticate using SSH keys
  • RDP Internet access is not restricted
  • SSH Internet access is not restricted
  • SQL databases allow ingress from 0.0.0.0/0
  • Azure App Service Web app does not redirect HTTP to HTTPS
  • Web App does not use the latest version of TLS encryption
  • Web App does not have incoming client certificates enabled
  • Web App does not use the latest version of HTTP
  • MySQL server databases do not have Enforce SSL connection enabled
  • Azure PostgreSQL database server with SSL connection is disabled
  • Azure PostgreSQL database server with log checkpoints parameter is disabled
  • Azure PostgreSQL database server with log connections parameter is disabled
  • Azure PostgreSQL database server with connection throttling parameter is disabled
  • Public access level for Blob Containers is not set to private
  • Azure Storage Account default network access is set to Allow
  • Azure Storage Account Trusted Microsoft Services access is not enabled
  • MariaDB servers do not have Enforce SSL connection enabled
  • Azure Synapse Workspaces do not enable managed virtual networks
  • Azure storage account allows blob container with public access
  • Storage accounts without secure transfer enabled
  • Azure file sync enables public network access
  • PostgreSQL server does not disable public network access
  • Function apps are not only accessible over HTTPS
  • UDP Services are not restricted from the Internet
  • Azure cache for Redis has public network access enabled
  • My SQL server enables public network access
  • Not only SSL are enabled for cache for Redis
  • Azure container container group is not deployed into a virtual network
  • Cosmos DB accounts do not have restricted access
  • Azure Cosmos DB enables public network access
  • Azure Data factory public network access is enabled
  • Azure Event Grid domain public network access is enabled
  • API management services do not use virtual networks*
  • Azure IoT Hub enables public network access
  • Key vault does not allow firewall rules settings
  • SQL Server is enabled for public network access
  • Azure virtual machine NIC has IP forwarding enabled
  • Network interfaces use public IPs
  • Azure application gateway does not have WAF enabled
  • Azure front door does not have WAF enabled
  • Application gateway does not use WAF in Detection or Prevention modes
  • Azure front door does not use WAF in Detection or Prevention modes
  • Azure cognitive search does not disable public network access
  • Azure Synapse workspaces have IP firewall rules attached
  • Front Door WAF allows message lookup in Log4j2
  • Cognitive Services does not disable public network access
  • Application Gateway WAF allows message lookup in Log4j2

Azure Storage

  • Secure transfer required is not enabled
  • Storage account does not use the latest version of TLS encryption
  • CosmosDB account enables privileged escalation by not restricting management plane changes
  • Cognitive Services account encryption CMKs are disabled

Azure Kubernetes Service

  • Azure AKS cluster monitoring is not enabled
  • Azure AKS enable RBAC not enforced
  • AKS API server does not define authorized IP ranges
  • AKS cluster network policies are not enforced
  • Kubernetes dashboard is not disabled
  • AKS is not enabled for private clusters
  • AKS does not use Azure policies add-on
  • AKS does not use disk encryption set

Azure Secrets

  • AKV secrets do not have an expiration date set
  • AKV secrets do not have an expiration date set

Azure Public

  • MariaDB servers do not have public network access enabled set to False

Google Kubernetes Engine

  • Stackdriver logging on Kubernetes engine clusters is disabled
  • ABAC authorization on Kubernetes engine clusters is enabled
  • GCP Kubernetes engine clusters have stackdriver logging disabled
  • GCP Kubernetes cluster node auto-repair configuration is disabled
  • GCP Kubernetes cluster node auto-upgrade configuration is disabled
  • GCP Kubernetes engine clusters have network policy disabled
  • GCP Kubernetes engine clusters have client certificate disabled
  • GKE control plane is public
  • GCP Kubernetes engine clusters have basic authentication enabled
  • Master authorized networks are not enabled in GKE clusters
  • GCP Kubernetes engine clusters do not have any label information
  • GCP Kubernetes engine clusters are not using Container-Optimized OS for node image
  • Kubernetes clusters are not created with alias IP ranges enabled
  • PodSecurityPolicy controller is not enabled on Kubernetes engine clusters
  • Private cluster is disabled when creating Kubernetes clusters
  • VPC flow logs and intranode visibility are disabled
  • GCP Kubernetes Engine Clusters not configured with private nodes feature
  • Kubernetes RBAC users are not managed with Google Groups for GKE
  • Binary authorization is not used
  • GCP Kubernetes engine clusters have legacy compute engine metadata endpoints enabled
  • Secure boot for shielded GKE nodes is disabled
  • The GKE metadata server is disabled
  • Shielded GKE nodes are not enabled
  • Integrity monitoring for shielded GKE nodes is not enabled
  • GCP Kubernetes engine cluster nodes have default service account for project access

GCP Networking

  • GCP Firewall rule allows all traffic on SSH port 22
  • GCP Firewall rule allows all traffic on RDP port 3389
  • GCP HTTPS load balancer is configured with SSL policy having TLS version 1.1 or lower
  • Cloud SQL database instances are publicly accessible
  • GCP Cloud DNS has DNSSEC disabled
  • RSASHA1 is used for Zone-Signing and Key-Signing Keys in Cloud DNS DNSSEC
  • Default network exists in a project
  • GCP VM instances have block project-wide SSH keys feature disabled
  • GCP projects have OS login disabled
  • Project instance overrides the project setting enabling OSLogin
  • GCP VM instances have serial port access enabled
  • IP forwarding on instances is enabled
  • GCP project is configured with legacy network
  • Cloud Armor allows message lookup in Log4j2
  • GCP Firewall rule allows all traffic on MySQL port 3306

GCP General

  • Incoming connections to Cloud SQL database instances do not use SSL
  • Cloud SQL database instances do not have backup configuration enabled
  • GCP BigQuery dataset is publicly accessible
  • GCP VM disks not encrypted with CSEKs
  • Boot disks for instances do not use CSEKs
  • Compute instances launch without shielded VM enabled
  • GCP KMS encryption key is not rotating every 90 days
  • There are not only GCP-managed service account keys for each service account
  • Cloud KMS cryptokeys are anonymously or publicly accessible
  • GCP Memorystore for Redis has AUTH disabled

GCP Logging

  • GCP VPC flow logs for the subnet is set to Off
  • GCP log bucket retention policy is not configured using bucket lock
  • GCP project audit logging is not configured properly across all services and all users in a project

GCP IAM

  • Instances use default Compute Engine service account
  • Instances use default service account with full access to cloud APIs
  • IAM users are assigned Service Account User or Service Account Token creator roles at project level
  • Service Account has admin privileges
  • Roles impersonate or manage Service Accounts used at folder level
  • Roles impersonate or manage Service Accounts used at organizational level
  • Default Service Account is used at project level
  • Default Service Account is used at organization level
  • Default Service Account is used at folder level
  • Roles impersonate or manage Service Accounts used at project level
  • A MySQL database instance allows anyone to connect with administrative privileges
  • GCP Cloud KMS key ring is publicly accessible

Google Cloud Storage

  • Google storage buckets are not encrypted
  • GCP cloud storage bucket with uniform bucket-level access are disabled
  • Bucket does not log access
  • Bucket logs to itself

Google Cloud SQL

  • GCP MySQL instance with local_infile database flag is not disabled
  • Cloud SQL PostgreSQL instances have log_checkpoints database flag set to Off
  • GCP PostgreSQL instance database flag log_connections is disabled
  • GCP PostgreSQL instance database flag log_disconnections is disabled
  • GCP PostgreSQL instance database flag log_lock_waits is disabled
  • GCP PostgreSQL instance database flag log_min_messages is not set
  • GCP PostgreSQL instance database flag log_temp_files is not set to 0
  • GCP PostgreSQL instance database flag log_min_duration_statement is not set to -1
  • Cloud SQL SQL server instance database flag cross db ownership chaining is set to On
  • Cloud SQL SQL server instance contained database authentication database flag is set to On
  • Cloud SQL database instances have public IPs

GCP Public

  • GCP storage bucket is publicly accessible to all authenticated users
  • Google Compute Engine (GCE) instances have public IP addresses
  • GCP Vertex AI Workbench has a public IPs
  • GCP Cloud Dataflow job has public IPs
  • GCP Dataproc cluster is anonymously or publicly accessible
  • GCP Pub/Sub Topic is anonymously or publicly accessible
  • GCP BigQuery table is publicly accessible
  • Artifact Registry repository is anonymously or publicly accessible
  • GCP Cloud Run service is anonymously or publicly accessible
  • GCP Dataproc cluster has a public IP
  • Google Container Registry repository is anonymously or publicly accessible

Dockerfile

  • Port 22 is exposed
  • Healthcheck instructions have not been added to container images
  • A user for the container has not been created
  • Copy is not used instead of Add in Dockerfiles
  • Update instructions are used alone in a Dockerfile
  • LABEL maintainer is not used instead of MAINTAINER (deprecated)
  • Base image uses a latest version tag
  • Last USER is root

Kubernetes

  • Containers wishing to share host process ID namespace admitted
  • Privileged containers are admitted
  • Containers wishing to share host IPC namespace admitted
  • Containers wishing to share host network namespace admitted
  • Containers run with AllowPrivilegeEscalation
  • Root containers admitted
  • Containers with NET_RAW capability admitted
  • Liveness probe is not configured
  • Readiness probe is not configured
  • CPU request is not set
  • CPU limits are not set
  • Memory requests are not set
  • Memory limits are not set
  • Image tag is not set to Fixed
  • Image pull policy is not set to Always
  • Container is privileged
  • Containers share host process ID namespace
  • Containers share host IPC namespace
  • Containers share the host network namespace
  • Containers run with AllowPrivilegeEscalation
  • Default namespace is used
  • Read-Only filesystem for containers is not used
  • Admission of root containers not minimized
  • Containers with added capability are allowed
  • Admission of containers with added capability is not minimized
  • hostPort is specified
  • Mounting Docker socket daemon in a container is not limited
  • Admission of containers with NET_RAW capability is not minimized
  • securityContext is not applied to pods and containers
  • securityContext is not applied to pods and containers
  • seccomp is not set to Docker/Default or Runtime/Default
  • seccomp profile is not set to Docker/Default or Runtime/Default
  • Kubernetes dashboard is deployed
  • Tiller (Helm V2) is deployed
  • Secrets used as environment variables
  • Admission of containers with capabilities assigned is not limited
  • Admission of containers with capabilities assigned is not limited
  • Service account tokens are not mounted where necessary
  • CAP_SYS_ADMIN Linux capability is used
  • Containers do not run with a high UID
  • Default service accounts are actively used
  • Default service accounts are actively used
  • Images are not selected using a digest
  • Tiller (Helm v2) service is not deleted
  • Tiller (Helm V2) deployment is accessible from within the cluster
  • The --anonymous-auth argument is not set to False
  • The --basic-auth-file argument is Set
  • The --token-auth-file argument is Set
  • The --kubelet-https argument is not set to True
  • The --kubelet-client-certificate and --kubelet-client-key arguments are not set appropriately
  • The --kubelet-certificate-authority argument is not set appropriately
  • The --authorization-mode argument is set to AlwaysAllow
  • The --authorization-mode argument does not include node
  • The --authorization-mode argument does not include RBAC
  • The admission control plugin EventRateLimit is not set
  • The admission control plugin AlwaysAdmit is set
  • The admission control plugin AlwaysPullImages is not set
  • The admission control plugin SecurityContextDeny is set if PodSecurityPolicy is used
  • The admission control plugin ServiceAccount is not set
  • The admission control plugin NamespaceLifecycle is not set
  • The admission control plugin PodSecurityPolicy is not set
  • The admission control plugin NodeRestriction is not set
  • The --insecure-bind-address argument is set
  • The --insecure-port argument is not set to 0
  • The --secure-port argument is set to 0
  • The --profiling argument is not set to False
  • The --audit-log-path argument is not set
  • The --audit-log-maxage argument is not set appropriately
  • The --audit-log-maxbackup argument is not set appropriately
  • The --audit-log-maxsize argument is not set appropriately
  • The --request-timeout argument is not set appropriately
  • The --service-account-lookup argument is not set to True
  • The --service-account-key-file argument is not set appropriately
  • The --etcd-certfile and --etcd-keyfile arguments are not set appropriately
  • The --tls-cert-file and --tls-private-key-file arguments are not set appropriately
  • The --etcd-cafile argument is not set appropriately
  • Encryption providers are not appropriately configured
  • The API server does not make use of strong cryptographic ciphers
  • The --terminated-pod-gc-threshold argument for controller managers is not set appropriately
  • The --profiling argument for controller managers is not set to False
  • The --use-service-account-credentials argument for controller managers is not set to True
  • The --service-account-private-key-file argument for controller managers is not set appropriately
  • The --root-ca-file argument for controller managers is not set appropriately
  • The RotateKubeletServerCertificate argument for controller managers is not set to True
  • The --bind-address argument for controller managers is not set to 127.0.0.1
  • The --profiling argument is not set to False
  • The --bind-address argument is not set to 127.0.0.1
  • The --cert-file and --key-file arguments are not set appropriately
  • The --client-cert-auth argument is not set to True
  • The --auto-tls argument is set to True
  • The --peer-cert-file and --peer-key-file arguments are not set appropriately
  • The --peer-client-cert-auth argument is not set to True
  • The --anonymous-auth argument is not set to False
  • The --authorization-mode argument is set to AlwaysAllow
  • The --client-ca-file argument for API Servers is not set appropriately
  • The --read-only-port argument is not set to 0
  • The --streaming-connection-idle-timeout argument is set to 0
  • The --protect-kernel-defaults argument is not set to True
  • The --make-iptables-util-chains argument is not set to True
  • The --hostname-override argument is set
  • The --event-qps argument is not set to a level that ensures appropriate event capture
  • The --tls-cert-file and --tls-private-key-file arguments are not set appropriately
  • The --rotate-certificates argument is set to False
  • Kubelet does not use strong cryptographic ciphers
  • ClusterRoles that grant control over validating or mutating admission webhook configurations are not minimized
  • ClusterRoles that grant permissions to approve CertificateSigningRequests are not minimized
  • Roles and ClusterRoles that grant permissions to bind RoleBindings or ClusterRoleBindings are not minimized
  • Roles and ClusterRoles that grant permissions to escalate Roles or ClusterRole are not minimized

Bridgecrew

  • Bridgecrew provider has hard-coded API token

Oracle Cloud Infrastructure

  • OCI private keys are hard coded in the provider
  • OCI Block Storage Block Volume has backup is disabled
  • OCI Block Storage Block Volumes are not encrypted with a Customer Managed Key (CMK)
  • OCI Compute Instance boot volume has in-transit data encryption is disabled
  • OCI Compute Instance has Legacy MetaData service endpoint enabled
  • OCI Compute Instance has monitoring disabled
  • OCI Object Storage bucket does not emit object events
  • OCI Object Storage Bucket has object Versioning disabled
  • OCI Object Storage Bucket is not encrypted with a Customer Managed Key (CMK)
  • OCI Object Storage bucket is publicly accessible
  • OCI IAM password policy for local (non-federated) users does not have a lowercase character
  • OCI IAM password policy for local (non-federated) users does not have a number
  • OCI IAM password policy for local (non-federated) users does not have a symbol
  • OCI IAM password policy for local (non-federated) users does not have an uppercase character]
  • OCI File Storage File Systems are not encrypted with a Customer Managed Key (CMK)
  • OCI VCN has no inbound security list
  • OCI VCN Security list has stateful security rules
  • OCI IAM password policy for local (non-federated) users does not have minimum 14 characters

OpenAPI

  • OpenAPI securityDefinitions is not defined or is empty
  • If the security scheme is not of type ‘oauth2’, the array value must be empty
  • Security scheme allows cleartext credentials over unencrypted channels
  • Security object needs to have defined rules in its array and rules should be defined in the securityScheme
  • Security object for operations, if defined, must define a security scheme, otherwise it should be considered an error
  • Security requirement not defined in the security definitions

Implementation

BluBracket’s IaC scanning is powered by the open source Checkov library , and adds BluBracket workflow and reporting.

Edit this page on GitHub

Related docs