Check ID:
Provider: AWS
Service:
Severity: HIGH
Categories:
Resource type:
ec2_launch_template_no_public_ipProvider: AWS
Service:
ec2Severity: HIGH
Categories:
internet-exposedResource type:
AwsEc2LaunchTemplateWhat this check verifies
EC2 launch templates with versions that either enableassociate_public_ip_address for network interfaces or reference ENIs already associated with public IPs
Risk
Assigning public IPs makes instances Internet-reachable, enabling:- Loss of confidentiality via unauthorized access and data exfiltration
- Compromised integrity through remote exploitation and tampering
- Reduced availability from DDoS and brute-force traffic Attackers can scan exposed services and pivot within the VPC.
Recommendation
Apply least privilege and network segmentation:- Set
associate_public_ip_address=falsein launch templates - Avoid referencing ENIs with public IPs
- Place instances in private subnets behind NAT/ALB
- Use Session Manager, bastions, or VPC endpoints/PrivateLink for access Adopt defense in depth to minimize exposure.
Remediation
- CLI
- Terraform
- Native IaC
- Dashboard steps
References
- https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-launch-template.html#change-network-interface
- https://docs.aws.amazon.com/securityhub/latest/userguide/ec2-controls.html#ec2-25
- https://docs.aws.amazon.com/config/latest/developerguide/ec2-launch-template-public-ip-disabled.html
Where this check fires
This check runs on every scheduled scan against your AWS account. Findings appear at Cloud Security → Findings filterable byCheck ID = ec2_launch_template_no_public_ip. To re-evaluate after a fix, hit Run now on the account’s schedule under Cloud Security → Schedules — the next scan re-checks this control and marks the finding fixed or keeps it persistent.
← Back to AWS checks