AWS

Security risks, misconfigurations, and incidents related to Amazon Web Services (AWS).

Amazon Web Services (AWS) is the most widely used cloud platform and introduces a large attack surface due to its breadth of services.

Common risk areas include:

Browse AWS-related incidents, vulnerabilities and configuration issues below.

AWS Documentation

VPCs without Private Zones
low
aws ec2

VPCs without Private Zones

VPCs should utilise a private hosted zone for each VPC to allow for contextual DNS for ease of use and standardized addressing across environments.

VPCs with Multiple NATs
advisory
aws ec2

VPCs with Multiple NATs

AWS VPCs do not require multiple NATs unless the marginal gains from cross-AZ resiliency are worth the increased cost and maintence burden. In such cases, it may be better to consider multi-region …

VPCs Using Non-Private Address Space
moderate
aws ec2

VPCs Using Non-Private Address Space

Virtual Private Clouds (VPCs) should utilise private network ranges for their address space to avoid conflicts with external connections.

VPCs Using Default AWS Range
advisory
aws ec2

VPCs Using Default AWS Range

Organisations should avoid using the default address space provided by AWS Virtual Private Clouds (VPCs), as this limits connectivity options such as VPC Peering in the future.

VPC Using Conflicting AWS CIDR Range
advisory
aws ec2

VPC Using Conflicting AWS CIDR Range

VPCs should not use the range 172.17.0.0/16, as it is used by some AWS services when configured in your network.

VPC Peering Connections Found
advisory
aws ec2

VPC Peering Connections Found

VPC Peering is a complex solution for inter-network connectivity that may be better replaced with VPC Private Links or other alternatives.

Unused Elastic IP Addresses
low
aws ec2

Unused Elastic IP Addresses

Elastic IP addresses are requisitioned by the account but not in current use

Unencrypted EBS Snapshots
high
aws ec2

Unencrypted EBS Snapshots

Unecrypted EBS Snapshots contain all data on the original EBS volume in an unencrypted format, failing to protect this data from unauthorised decryption

Subnets have Implicit Routing
moderate
aws ec2

Subnets have Implicit Routing

Subnets should be explicitly associated with a route table to ensure route updates are explicit and controlled.

Subnets attached to Route Tables with Multiple External Routes
low
aws ec2

Subnets attached to Route Tables with Multiple External Routes

Subnets should utilise a single exit route for outbound traffic, such as an Internet Gateway or a NAT, and not multiple external routes.

SSH Keys found in Account
advisory
aws ec2

SSH Keys found in Account

SSH Keys that are available in an AWS account allow for provisioning of OpenSSH server and provide metadata information that can be utilised for research

SPF Record Does Not Start with SPF Statement
low
aws r53

SPF Record Does Not Start with SPF Statement

An SPF record must start with the format v=spf1; otherwise, it will be disregarded.

S3 Origin Not Using Access Identity
moderate
aws cloudfront

S3 Origin Not Using Access Identity

Cloudfront Distributions that do not use an S3 Origin Identity require the S3 bucket to use website hosting, splitting access controls across S3 and Cloudfront as well as implementing unencrypted …

S3 Bucket Policy Allows Public Access
high
aws s3

S3 Bucket Policy Allows Public Access

AWS S3 Bucket Policies should deny public access to S3 data. This should be part of a standard bucket policy applied to all buckets within your organisation

S3 Bucket Has Website Endpoint Enabled
high
aws s3

S3 Bucket Has Website Endpoint Enabled

AWS S3 Bucket Website Endpoints have been superseded by better architectural patterns bringing greater control and data protection

S3 Bucket Has No Public Access Protections
critical
aws s3

S3 Bucket Has No Public Access Protections

AWS S3 Buckets with neither the full set of Public Access Blocks nor a Bucket Policy that prevents public access should consider their hosted data publicly accessible

S3 Bucket Has No Policy
critical
aws s3

S3 Bucket Has No Policy

AWS S3 Buckets without a Bucket Policy are prone to insecure behaviour that does not meet modern security standards

S3 Bucket Has an Invalid Policy
critical
aws s3

S3 Bucket Has an Invalid Policy

Invalid AWS S3 Bucket Policies require replacement to a functioning policy to ensure that they provide provable security protection

S3 Bucket Does Not Totally Block Public Access
high
aws s3

S3 Bucket Does Not Totally Block Public Access

AWS S3 offers Public Access Blocks to over-ride bucket changes that leak data. Implementing all Public Access Blocks should be a standard policy for all buckets

S3 Bucket Does Not Include the Account ID
advisory
aws s3

S3 Bucket Does Not Include the Account ID

AWS S3 Bucket names can include the account ID for easier cross-account management and introducing name entropy via a manageable naming convention

S3 Bucket Does Not Enforce Ownership Controls
high
aws s3

S3 Bucket Does Not Enforce Ownership Controls

AWS S3 Buckets should enforce the transfer of ownership for objects upon upload.

S3 Bucket Allows Insecure Uploads
high
aws s3

S3 Bucket Allows Insecure Uploads

AWS S3 Buckets allow for unencrypted uploads which need to be blocked via Bucket Policy

Public EBS Snapshots
critical
aws ec2

Public EBS Snapshots

Public EBS Snapshots mean that any AWS customer can create a volume in the same AWS Region from the EBS snapshot effectively making the data public

Public AMIs Found
critical
aws ec2

Public AMIs Found

Outside of entirely open-source resources, AMIs should never be shared publicly.

Private Zones using local TLD
low
aws r53

Private Zones using local TLD

Private VPC Hosted Zone is using .local TLD

Open Security Groups
high
aws ec2

Open Security Groups

Fully open security groups are wholly open to all of the internet including from geographic locations with no business benefits

No VPC Flow Logs
high
aws ec2

No VPC Flow Logs

VPC Flow Logs provide forensic logs utilised for tracking breach origins and lateral movement. Missing or unconfigured flow logs deny access to vital forensic data

MX Records Without Corresponding DKIM Record
moderate
aws r53

MX Records Without Corresponding DKIM Record

Domains used for sending emails should have a corresponding DKIM record that validates the signatures in each official email. This provides clear validation of legitimate emails and helps identify …

MX Records with Multiple Corresponding SPF Records
moderate
aws r53

MX Records with Multiple Corresponding SPF Records

RFC 7208 requires a single SPF record for SPF validation. Multiple records will lead to the disregard of domain checks.

Load Balancers Accepting Unencrypted HTTP
critical
aws elb

Load Balancers Accepting Unencrypted HTTP

HTTP listeners force clients to communicate in plain text, exposing all communications to any machines with connectivity to the traffic route

Load Balancer Ignores MTLS Client Certificate Expiry
high
aws elb

Load Balancer Ignores MTLS Client Certificate Expiry

Disabling MTLS Expiry Checks effectively gives all issued client certificates an eternal validity. This infinitely expands the impact risk for client certificates and undermines client certificate …

Lambda Functions Without Logs
moderate
aws lambda

Lambda Functions Without Logs

AWS Lambda Functions without Logs

Lambda Functions with Update Problems
high
aws lambda

Lambda Functions with Update Problems

AWS Lambda can encounter failure states when attemping an update. When an update fails the service falls back to the previous iteration of the code potentially leading to outdated application …

Lambda Functions Running Depreciated Runtimes
moderate
aws lambda

Lambda Functions Running Depreciated Runtimes

Running depreciated AWS Lambda runtimes incurs both security and operational risks as well as upgrade risk should the service owner force an update to the runtime

Lambda Functions in Problem State
high
aws lambda

Lambda Functions in Problem State

AWS Lambda can encounter failure states when attemping execution of code. When invocations of the function fail the reason will be provided by the AWS Lambda Service for remediation

Instances using SSH Keys
moderate
aws ec2

Instances using SSH Keys

Instances using SSH Keys are configured to run OpenSSH server leaving them exposed to OpenSSH attacks, lacking the features of other access methods and reinforcing the use of pet style infrastructure.

Instances Running Outside VPC
high
aws ec2

Instances Running Outside VPC

Instances not running inside a VPC are unsupported

Instances in Public Subnets
high
aws ec2

Instances in Public Subnets

Instances in public subnets without routes to a NAT require an Elastic IP to communicate externally exposing them directly to internet traffic. This is a diminished security posture compared to …

Instance With Public IP Address
high
aws ec2

Instance With Public IP Address

An EC2 instance that utilising a public IP address directly connects the instance to the internet leading to a vastly diminished security posture compared to available architectures utilising …

Instance Not Exclusively Using IMDSv2
moderate
aws ec2

Instance Not Exclusively Using IMDSv2

EC2 instances that do not exclusively utilise the IMDSv2 endpoints utilise a weaker version of IMDS issued credentials that lack a number of protections against theft and misuse.

ICANN Domain Status is Pending Deletion
high
aws r53

ICANN Domain Status is Pending Deletion

Domains marked by ICANN as pending deletion will be available for re-registration by third parties within 30 days

ICANN Domain Status is Indicating a Transfer
high
aws r53

ICANN Domain Status is Indicating a Transfer

Domains marked as ‘pendingTransfer’ should have their transfer request confirmed as legitimate or cancelled and the domain locked if not intended

ICANN Domain Status is Inactive
high
aws r53

ICANN Domain Status is Inactive

Domains marked as ‘inactive’ may be missing vital configuration and are effectively useless

ICANN Domain Status has Server Renew Prohibited
critical
aws r53

ICANN Domain Status has Server Renew Prohibited

Domains with the ICANN EPP status serverRenewProhibited cannot be renewed and requires action to rescue the domain or otherwise migrate away from it

ICANN Domain Status has Domain on Hold
advisory
aws r53

ICANN Domain Status has Domain on Hold

A ‘serverHold’ ICANN EPP Status Code can indicate an issue with your domain requiring action

ICANN Domain Status has Domain Deletion Prohibited
advisory
aws r53

ICANN Domain Status has Domain Deletion Prohibited

A domain with the status of “serverDeleteProhibited” prevents a domain from becoming unregistered. This is potentially a lock but may also stem from legal contests and should be determined

IAM Users Password Policy Requires Special Characters
advisory
aws iam

IAM Users Password Policy Requires Special Characters

The use of special characters in passwords is not recommended.

IAM Users Password Policy Requires at Least 8 Characters
high
aws iam

IAM Users Password Policy Requires at Least 8 Characters

AWS IAM user passwords should require at least 8 characters and include a variety of character types.

IAM Users Password Policy Remembers Less Than 3 Previous Passwords
high
aws iam

IAM Users Password Policy Remembers Less Than 3 Previous Passwords

AWS Account Password Policies should prevent users from utilizing previous passwords.

IAM Users Password Policy Not Set
moderate
aws iam

IAM Users Password Policy Not Set

AWS accounts should have a custom password policy rather than relying on the default password policy.

IAM Users Password Policy Forces a Hard Password Expiry
high
aws iam

IAM Users Password Policy Forces a Hard Password Expiry

AWS Account Password Policy should not require hard password resets, where passwords are reset only by an administrator.

IAM Users Password Policy Expires Passwords
moderate
aws iam

IAM Users Password Policy Expires Passwords

IAM user passwords should not expire.

IAM Users Password Policy Does Not Allow Users to Change Passwords
moderate
aws iam

IAM Users Password Policy Does Not Allow Users to Change Passwords

AWS account password policies should allow users to change their own passwords.

IAM Users Password Policy Allows 8-15 Characters with Limited Characters
moderate
aws iam

IAM Users Password Policy Allows 8-15 Characters with Limited Characters

AWS IAM user passwords should include all variations of characters if the password is less than 15 characters.

IAM User Without MFA
high
aws iam

IAM User Without MFA

AWS IAM Users should have MFA enabled and active.

IAM User Inactive
low
aws iam

IAM User Inactive

AWS IAM users that are inactive should be deleted

IAM User has Multiple Access Keys
low
aws iam

IAM User has Multiple Access Keys

AWS IAM Users should have a single Access Key and not multiple Access Keys.

IAM User Has Inactive Access Keys
moderate
aws iam

IAM User Has Inactive Access Keys

AWS IAM Users should not have long-term inactive Access Keys

IAM User Approaching User Access Key Limit
low
aws iam

IAM User Approaching User Access Key Limit

AWS IAM Users have a per user limit for Access Keys, hitting this limit interferes with the ability to cycle Access Keys and contributes to the overall acount Access Key Limit

IAM User Access Keys Unused
moderate
aws iam

IAM User Access Keys Unused

AWS IAM Users should not have unused Access Keys.

Hosted Zones with Default Registrar Comment
advisory
aws r53

Hosted Zones with Default Registrar Comment

Hosted Zones for domains purchased through the Route53 Registrar come with a default comment. This default comment forfeits the opportunity for labelling and control.

Found Unencrypted RDS Snapshots
high
aws rds

Found Unencrypted RDS Snapshots

Unencrypted Snapshots contain data at rest in plain text and forfeit additional data controls available from AWS KMS

Found Public RDS Snapshots
critical
aws rds

Found Public RDS Snapshots

RDS Snapshots that are available publicly mean that any AWS customer can clone the data on those snapshots to their own RDS instance.

Found MX records without corresponding SPF Record
moderate
aws r53

Found MX records without corresponding SPF Record

The Sender Policy Framework (SPF) offers a straightforward method for specifying the origins of valid emails, helping to protect your domain from fraud. Domains without SPF records available face …

Enable Cloudtrail
high
aws cloudtrail

Enable Cloudtrail

AWS CloudTrail tracks all API calls for the relevant AWS Account, providing a total repository of all activity within the account. Not enabling CloudTrail means that all data older than 90 days is …

EKS Control Plane Publicly Accessible
high
aws eks

EKS Control Plane Publicly Accessible

Allowing public access to the EKS hosted Kubernetes API endpoint is a substantially worse security posture than utilising private API endpoints

EKS Clusters Using Small Subnets
moderate
aws eks

EKS Clusters Using Small Subnets

AWS EKS utilises a Container Network Interface designed for EC2, which consumes a significant number of IP addresses that the network must accommodate.

EKS Cluster out of Date
moderate
aws eks

EKS Cluster out of Date

EKS Clusters should remain updated to prevent publicly exposed APIs from compromise and avoid forced updates which can break service

EFS Mounted Without Encryption at Rest
critical
aws efs

EFS Mounted Without Encryption at Rest

EFS file systems should be configured to encrypt data at rest to create a permissions barrier to accessing and copying the data, thereby reducing the impact of leaked raw data.

EFS Allows Insecure Connections
critical
aws efs

EFS Allows Insecure Connections

EFS allows for insecure mounts, leaving communications between host machines and remote file systems unencrypted.

EC2 Instances without an IAM Profile
high
aws ec2

EC2 Instances without an IAM Profile

EC2 Instances without an IAM Role attached either do not have permissions to securely interact with AWS Services or they host long term credentials that are prone to compromise

EC2 Instances with Monitoring Disabled
high
aws ec2

EC2 Instances with Monitoring Disabled

Instances do not have monitoring enabled, causing a large amount of data loss that can indicate compromiseand breaches

Domains Without DMARC Declaration
low
aws r53

Domains Without DMARC Declaration

DMARC policies allow the opportunity to advice external email services how to handle spoofed email for your domain

Domains with Lax DMARC Policies
advisory
aws r53

Domains with Lax DMARC Policies

Lax DMARC policies do not explicitly advertise to mail servers that fraudulent emails should be either quarantined or rejected, guarding your domain’s reputation and allowing for spoofing …

Domains Missing Transfer Lock
moderate
aws r53

Domains Missing Transfer Lock

Domains without a transfer lock are missing a key gating tool preventing the theft or sale of domains

Domains Due to Expire Within 90 Days
high
aws r53

Domains Due to Expire Within 90 Days

Expiring Domains without Autorenew lead to service downtime and signal operational risk. Expired domains can also be captured by malicious parties.

DNS Resolution Unshared Across VPCs
low
aws ec2

DNS Resolution Unshared Across VPCs

DNS resolution should be shared across peered VPCs to ensure that each VPC routes privately to endpoints in the peered VPC network.

DKIM Records with Small Key Size
high
aws r53

DKIM Records with Small Key Size

DKIM encryption using key sizes under 1024 bits are trivial to brute force. As DKIM DNS records are public, weak email signatures are discoverable

Disparate Subnet Masks
moderate
aws ec2

Disparate Subnet Masks

Virtual Private Clouds (VPCs) should be designed with standardized subnet spaces to facilitate maintenance and optimise address space utilization.

Default VPC Available
low
aws ec2

Default VPC Available

Default VPCs are often insecure cloud environments providing ease of access rather than a secure posture, enabling implicit configurations with insecure defaults

Cognito User Pools Should Have Delete Protection
moderate
aws cognito

Cognito User Pools Should Have Delete Protection

AWS Cognito User Pools should utilise Delete Protection to avoid accidental deletion

Cloudfront Distribution Set to Global Edges
low
aws cloudfront

Cloudfront Distribution Set to Global Edges

Cloudfront Distributions are set to distribute content to all available edge locations, including locations that may not include commercially viable users or may pose data sovereignty concerns

Cloudfront Distribution Not Using Web Application Firewall
high
aws cloudfront

Cloudfront Distribution Not Using Web Application Firewall

Cloudfront Distributions that do not use AWS WAF lack a number of security protections and tracking

Cloudfront Distribution Not Using Geoblocking
moderate
aws cloudfront

Cloudfront Distribution Not Using Geoblocking

Cloudfront Distributions are accepting traffic from all locations on the internet. This includes traffic from geographical regions which are unlikely to be business accessible.

CloudFront Distribution not Compressing Responses
advisory
aws cloudfront

CloudFront Distribution not Compressing Responses

CloudFront Distributions that do not compress responses lead to slower applications and forfeit a positive ranking signal to search providers

Cloudfront Distribution Accepting Insecure Requests
critical
aws cloudfront

Cloudfront Distribution Accepting Insecure Requests

Cloudfront Distributions which accept unencrypted traffic respond to requests in plain text compromising all information sent and recieved.

Cloud9 Environments Found
advisory
aws cloud9

Cloud9 Environments Found

Cloud9 has sadly been decommissioned and AWS customers are advised to decommission and replace Cloud9 environments

AWS Root User Does Not Have MFA
critical
aws iam

AWS Root User Does Not Have MFA

The AWS Root User should have an MFA device enabled and active.

AWS Account Approaching Access Key Limit
low
aws iam

AWS Account Approaching Access Key Limit

AWS Accounts have a limit on the number of Access Keys they can issue. This should be monitored and managed to prevent reaching the limit, which can block regular key rotation processes.

Account Root User Has Signing Certificates
high
aws iam

Account Root User Has Signing Certificates

AWS root account users should not have attached Signing Certificates.

Account Root User Has Access Keys Issued
critical
aws iam

Account Root User Has Access Keys Issued

The AWS Root Account User should not utilise Access Keys.