Problem sa javnim S3 bucketima
Amazon S3 (Simple Storage Service) je najrasprostranjeniji cloud storage servis. Svaki bucket može biti konfigurisan kao javan ili privatan. "Javan" znači da bilo ko na internetu može listati sadržaj i preuzimati fajlove bez autentifikacije — samo znanjem URL-a bucket-a.
URL pattern je predvidiv: https://bucket-name.s3.amazonaws.com/ ili https://s3.amazonaws.com/bucket-name/. Postoje automatizovani alati koji skeniraju milione kombinacija i pronalaze otvorene bucket-e.
Realni primeri curenja
- Twitch (2021): 125 GB koda, internih alata, streamer plaćanja — otvoreni S3
- Capital One (2019): 100 miliona kreditnih prijava — pogrešno konfigurisan S3 bucket
- GoDaddy (2019): 19.000 klijentskih podataka u javnom bucket-u
- Verizon (2017): 14 miliona korisničkih zapisa u javnom S3
- Accenture (2017): Master ključevi, autentifikacioni tokeni, tajni ključevi u javnim bucket-ima
Zašto nastaju ove greške?
- Developer kreira bucket za testiranje i zaboravi da ga zatvori
- Default podešavanja u starim AWS nalogima su bila javna (AWS je ovo promenio 2018)
- Nerazumevanje razlike između "objekt ACL javan" i "bucket policy javan"
- Deljeni AWS nalog bez centralizovane sigurnosne politike
- Migracija sa drugog storage sistema bez provere permisija
AWS je uveo "S3 Block Public Access" opciju na nivou naloga 2018. Čak i ako bucket policy ili ACL dozvoljavaju javni pristup, ovaj "master switch" ga blokira. Uključite ga na nivou AWS Organization, ne samo individualnih bucket-a.
Kako proveriti vaše S3 buckets
AWS Console
S3 dashboard prikazuje "Access" kolonu za svaki bucket: "Bucket and objects not public" je jedini siguran status.
AWS CLI
aws s3api list-buckets --query 'Buckets[].Name'
aws s3api get-bucket-acl --bucket ime-vašeg-bucket-a
aws s3api get-bucket-policy --bucket ime-vašeg-bucket-a
AWS Trusted Advisor i Security Hub
Ovi servisi automatski identifikuju javne bucket-e i upozoravaju vas.
Sigurna konfiguracija S3
1. Block Public Access (obavezno)
aws s3api put-public-access-block \
--bucket ime-bucket-a \
--public-access-block-configuration \
"BlockPublicAcls=true,IgnorePublicAcls=true,BlockPublicPolicy=true,RestrictPublicBuckets=true"
2. Bucket Policy — eksplicitni Deny
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Deny",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::ime-bucket-a/*",
"Condition": {
"Bool": {"aws:SecureTransport": "false"}
}
}]
}
3. Server-Side Encryption (SSE)
Uključite enkripciju u mirovanju: SSE-S3 (AWS managed key) ili SSE-KMS (customer managed key za viši nivo kontrole).
4. S3 Versioning i MFA Delete
Versioning čuva istoriju fajlova i štiti od slučajnog brisanja ili ransomware napada koji brišu podatke.
5. CloudTrail logovanje S3 Data Events
Svaki pristup bucket-u mora biti logovan — ko, kada, koji fajl. CloudTrail Data Events za S3 su skupi ali neophodni za kritične bucket-e.
Shieldome Scout analizira javno dostupne subdomene i URL pattern-e koji ukazuju na izložene cloud resurse kao deo standardne procene.
Proverite bezbednost vašeg sajta
Profesionalna procena ranjivosti. OWASP Top 10, dark web monitoring, PDF izveštaj za 2–3 radna dana.
Zatražite procenu →