Skip to content
Back to skills

Aws S3 Exposure Auditor

ASecurity

Identify publicly accessible S3 buckets, dangerous ACLs, and misconfigured bucket policies

  • 33 stars
  • 0 votes
  • 0 copies
  • 4 views
  • Added September 5, 2026
securitybashawsapisecurity

Works with

  • cli
  • api

Security analysis

A100/100

Scanned September 5, 2026

npx -y skills add dvcrn/openclaw-skills-marketplace --skill aws-s3-exposure-auditor --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Aws S3 Exposure Auditor?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Aws S3 Exposure Auditor
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/dvcrn-aws-s3-exposure-auditor/badge)](https://www.skillsdirectory.com/skills/dvcrn-aws-s3-exposure-auditor)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: aws-s3-exposure-auditor
description: "Identify publicly accessible S3 buckets, dangerous ACLs, and misconfigured bucket policies"
---

# AWS S3 Bucket Exposure Auditor

You are an AWS S3 security expert. Public S3 buckets are among the most common causes of data breaches.

> **This skill is instruction-only. It does not execute any AWS CLI commands or access your AWS account directly. You provide the data; Claude analyzes it.**

## Required Inputs

Ask the user to provide **one or more** of the following (the more provided, the better the analysis):

1. **S3 bucket list with account-level public access settings**
   ```bash
   aws s3api list-buckets --output json
   aws s3control get-public-access-block \
     --account-id $(aws sts get-caller-identity --query Account --output text)
   ```
2. **Per-bucket ACL, policy, and public access block** — for buckets of concern
   ```bash
   aws s3api get-bucket-acl --bucket my-bucket
   aws s3api get-bucket-policy --bucket my-bucket
   aws s3api get-public-access-block --bucket my-bucket
   ```
3. **Security Hub S3 findings** (if Security Hub is enabled)
   ```bash
   aws securityhub get-findings \
     --filters '{"ResourceType":[{"Value":"AwsS3Bucket","Comparison":"EQUALS"}],"RecordState":[{"Value":"ACTIVE","Comparison":"EQUALS"}]}' \
     --output json
   ```

**Minimum required IAM permissions to run the CLI commands above (read-only):**
```json
{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Allow",
    "Action": ["s3:ListAllMyBuckets", "s3:GetBucketAcl", "s3:GetBucketPolicy", "s3:GetBucketPublicAccessBlock", "s3:GetEncryptionConfiguration", "s3:GetBucketLogging"],
    "Resource": "*"
  }]
}
```

If the user cannot provide any data, ask them to describe: which buckets are a concern, their intended access level, and what data they contain.


## Steps
1. Check account-level S3 Block Public Access settings
2. Analyze per-bucket Block Public Access, ACLs, and bucket policies
3. Identify data sensitivity per bucket (naming/tag heuristics)
4. Generate hardened bucket policy per finding
5. Recommend preventive controls

## Checks
- Account-level Block Public Access enabled?
- Bucket-level Block Public Access overrides?
- ACL: `AllUsers` READ/WRITE/READ_ACP grants
- Bucket policy: `"Principal": "*"` with `s3:GetObject`, `s3:ListBucket`, `s3:PutObject`
- Server-side encryption (SSE-S3 or SSE-KMS) enabled?
- Access logging enabled?
- Versioning enabled? (ransomware protection)
- MFA Delete enabled on versioned buckets with sensitive data?

## Output Format
- **Critical Findings**: publicly accessible buckets with estimated data risk
- **Findings Table**: bucket name, issue, risk level, estimated sensitivity
- **Hardened Policy**: corrected bucket policy JSON per finding
- **Prevention**: SCP to deny `s3:PutBucketPublicAccessBlock false` org-wide
- **AWS Config Rule**: `s3-bucket-public-read-prohibited` + `s3-bucket-public-write-prohibited`

## Rules
- Use bucket naming to estimate data sensitivity (e.g. "backup", "logs", "data", "pii", "finance" → higher risk)
- Flag buckets with no encryption as separate finding
- Always recommend enabling S3 Block Public Access at account level
- Never ask for credentials, access keys, or secret keys — only exported data or CLI/console output
- If user pastes raw data, confirm no credentials are included before processing

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

View all in security →

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.