Back to Checks
AppStream fleet has default internet access disabled
appstream_fleet_default_internet_access_disabled
Service: appstreamSeverity: medium
OfficialBuilt-inVerified
Categories:internet-exposed
Resource Type:Other
Amazon AppStream fleets are assessed for the EnableDefaultInternetAccess setting, identifying fleets where streaming instances have default Internet connectivity.
Risk
Direct Internet access gives streaming instances public exposure. Threats include:
- Remote exploitation and malware, undermining confidentiality and integrity
- Uncontrolled egress enabling data exfiltration
It also enforces ~100-instance limits, reducing availability for high-concurrency deployments.
Run this check with Prowler
Run in Prowler CloudRun
prowler aws --checks appstream_fleet_default_internet_access_disabledRecommendation
Disable default Internet access (EnableDefaultInternetAccess=false) and place fleets in private subnets. Provide egress via NAT gateways or proxies, enforce egress filtering, and apply least privilege and zero trust to restrict outbound traffic. Use private connectivity to AWS services where possible.
Remediation
CLI
aws appstream update-fleet --name <example_resource_name> --no-enable-default-internet-accessTerraform
# Terraform: disable default internet access on an AppStream fleet
resource "aws_appstream_fleet" "<example_resource_name>" {
name = "<example_resource_name>"
instance_type = "stream.standard.small"
image_name = "<IMAGE_NAME>"
compute_capacity { desired_instances = 1 }
enable_default_internet_access = false # Critical: disables default internet access to pass the check
}NativeIaC
# CloudFormation: disable default internet access on an AppStream fleet
Resources:
<example_resource_name>:
Type: AWS::AppStream::Fleet
Properties:
Name: <example_resource_name>
InstanceType: <INSTANCE_TYPE>
EnableDefaultInternetAccess: false # Critical: disables default internet access to pass the checkOther
1In the AWS console, go to Amazon AppStream 2.0 > Fleets
2Select the target fleet
3If the fleet is RUNNING, click Actions > Stop and wait until the state is Stopped
4Click Edit (or Modify)
5Uncheck "Default internet access" (Disable "Enable default internet access")
6Save/Update the fleet and start it if needed
Check Code
from prowler.lib.check.models import Check, Check_Report_AWS
from prowler.providers.aws.services.appstream.appstream_client import appstream_client
# Check if there are AppStream Fleets with the default internet access enabled
class appstream_fleet_default_internet_access_disabled(Check):
"""Check if there are AppStream Fleets with the default internet access enabled"""
def execute(self):
"""Execute the appstream_fleet_default_internet_access_disabled check"""
findings = []
for fleet in appstream_client.fleets:
report = Check_Report_AWS(metadata=self.metadata(), resource=fleet)
if fleet.enable_default_internet_access:
report.status = "FAIL"
report.status_extended = (
f"Fleet {fleet.name} has default internet access enabled."
)
else:
report.status = "PASS"
report.status_extended = (
f"Fleet {fleet.name} has default internet access disabled."
)
findings.append(report)
return findingsReferences
- https://docs.aws.amazon.com/appstream2/latest/developerguide/set-up-stacks-fleets.html
- https://support.icompaas.com/support/solutions/articles/62000233540-ensure-default-internet-access-from-your-amazon-appstream-fleet-streaming-instances-remains-unchecked
- https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-fleet.html
- https://docs.aws.amazon.com/appstream2/latest/developerguide/internet-access.html