Check ID:
Provider: AWS
Service:
Severity: CRITICAL
Categories:
Resource type:
s3_bucket_public_write_aclProvider: AWS
Service:
s3Severity: CRITICAL
Categories:
internet-exposedResource type:
AwsS3BucketWhat this check verifies
Amazon S3 buckets are assessed for ACL grants that allow public write access toAllUsers or AuthenticatedUsers via WRITE, WRITE_ACP, or FULL_CONTROL. Effective Block Public Access at account or bucket level (ignore_public_acls, restrict_public_buckets) is considered.
Risk
Public or cross-account writes enable object tampering, log poisoning, and ACL changes viaWRITE_ACP, undermining integrity and causing covert data exposure. Attackers can plant malware, deface content, and inflate costs, impacting availability through overwrites or prefix flooding.
Recommendation
Apply least privilege to S3 writes. Enable account-level Block Public Access and use Object Ownership to disable ACLs. Grant write only to fixed principals via bucket policies with tight conditions (e.g., org IDs, VPC endpoints). Add versioning and monitoring for defense-in-depth.Remediation
- CLI
- Terraform
- Native IaC
- Dashboard steps
aws s3api put-bucket-acl —bucket <bucket_name> —acl private
References
- https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-control-block-public-access.html
- https://www.trendmicro.com/trendaivisiononecloudriskmanagement-staging/knowledge-base/aws/S3/s3-bucket-public-write-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_write_acl. 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