Check ID:
Provider: AWS
Service:
Severity: CRITICAL
Categories:
Resource type:
s3_bucket_public_accessProvider: AWS
Service:
s3Severity: CRITICAL
Categories:
internet-exposedResource type:
AwsS3BucketWhat this check verifies
Amazon S3 buckets are evaluated for public access via ACLs and bucket policies. The check identifies account or bucketPublicAccessBlock protections (IgnorePublicAcls, RestrictPublicBuckets) and flags buckets granting group access to AllUsers or AuthenticatedUsers, or with a public bucket policy.
Risk
Publicly accessible buckets jeopardize confidentiality through unauthenticated reads, integrity through write or ACL changes, and availability via object deletion or overwrite. Attackers can mass-exfiltrate data, host malware, or pivot after discovering secrets stored in objects.Recommendation
Enforce defense in depth: enable S3 Block Public Access at org/account and bucket levels (BlockPublicAcls, IgnorePublicAcls, BlockPublicPolicy, RestrictPublicBuckets). Apply least privilege with explicit principals; avoid ACLs via Object Ownership. Use private access patterns (e.g., CloudFront OAC or presigned URLs) and monitor with analyzers.
Remediation
- CLI
- Terraform
- Native IaC
- Dashboard steps
References
- https://docs.aws.amazon.com/id_id/kitchensink/latest/testguide/access-control-block-public-access.html
- https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-control-block-public-access.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 = s3_bucket_public_access. 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