Case Study Overview
An e-commerce platform storing customer data in cloud services experienced data exposure affecting 2.1 million customers through a misconfigured cloud storage bucket. The incident resulted from a single configuration error that exposed sensitive data publicly for 4 months before detection.
Organization Profile
ShopHub operated a mobile e-commerce platform enabling small retailers to sell online. The platform handled customer accounts, order history, reviews, and marketing data for 50,000 retailers and 2.1M customers. Annual revenue was $15M with infrastructure hosted entirely on AWS.
The Misconfiguration
In September 2025, the engineering team migrated customer data to an S3 bucket. A junior engineer set bucket permissions to 'public' during testing, intended to change to private after testing, but never reviewed the configuration before deployment. The end state:
- Block Public Access: OFF
- Public Access Level: PUBLIC
- ACL: PUBLIC READ ACCESS
- Bucket Policy: AllowPublicRead
Anyone with the bucket URL — easily guessable from naming convention 'shophub-customer-backup-prod-2025-09.s3.amazonaws.com' — could download the entire customer database.
Process gaps that allowed it
- No code review for infrastructure changes
- No approval workflow for configuration changes
- No automated security scanning of configurations
- No testing procedures for security
- Junior engineer lacked cloud security knowledge
- No segregation between development and production
Data Exposure Timeline
- Sept 15, 2025: bucket created with public configuration
- Sept 15 – Jan 20: 128 days of public accessibility
- Jan 20, 2026: security researcher discovers bucket via automated enumeration
- Jan 21: responsible disclosure to ShopHub; bucket made private
- Jan 22: company begins investigation and public announcement
Scope of Exposure
- 2.1M customer names, email addresses and physical addresses
- 1.8M phone numbers
- Account creation dates and full order history
- Customer reviews and 50,000 retailer profiles
- Access log IP addresses
Fortunately, credit card numbers were encrypted in a separate system, passwords were hashed in a different store, and no SSNs were stored. This separation prevented payment-data exposure — a critical lucky break.
Why Internal Detection Failed
- No automated configuration scanning
- No cloud security posture management (CSPM) tools
- No regular security audits
- No public access detection
- No data exposure monitoring on S3
Regulatory and Legal Response
- Notification letters mailed to 2.1M customers within 30–45 days
- State attorneys general opened multi-state investigation
- FTC opened investigation into deceptive practices and privacy policy compliance
- Class action lawsuits filed; settlements anticipated $5M+
- 18 months of credit monitoring offered to all affected
Financial Impact
- Incident investigation and forensics: $200,000
- Customer notification and credit monitoring: $800,000
- Regulatory fines (estimated): $500,000
- Legal fees and settlements: $2,000,000+
- Security improvements and remediation: $500,000
- Lost customer revenue (churn): $1,500,000+
- Total cost (conservative): $5,500,000+ (≈37% of annual revenue)
Remediation
S3 bucket security baseline
- Block all public access by default at the account level
- Encryption at rest (AES-256) on all buckets
- Versioning and MFA delete enabled
- CloudTrail logging enabled and stored separately
- Regular automated access audits
Cloud governance
- All infrastructure as code (CloudFormation/Terraform), version controlled
- Mandatory code review for infrastructure changes
- Automated security scanning in CI/CD pipeline
- Approval workflow for production changes
- AWS Config + Security Hub for continuous compliance