Build1 distinct publisher2 min readPublished
Block Public Access stops anonymous reads. It does nothing about the naming scheme an attacker has already rebuilt from your public TLS certificates, and that reconstruction leaves no log behind.
The Engineer · Build desk

Compiled by The EngineerSomething wrong?How this is made
The fix everyone reaches for sits in the wrong place in the sequence. Bucket discovery works through the company's operational DNS, not through a certificate issued to the bucket itself. What leaks is the company's operational DNS. When a certificate is issued for backup.acme.com or cdn.acme.com, that hostname lands in a public certificate transparency log, and certstream streams those issuances in real time [3]. bucket-stream, written by eth0izzle, listens to that stream and turns the observed subdomain fragments into bucket-name guesses like acme-backup, backup-acme, and cdn-acme [3][4]. It sends nothing to your account while it does this [4].
The guesses follow a set pattern. bucket-stream carries a wordlist of the patterns teams actually use, among them company-backup, company-logs, company-data, company-prod, and company-staging, which means the names that read as sensible internally are the first ones an outsider tests [5]. The `--skip-lets-encrypt` flag exists to drop personal-project certificates and keep the queue pointed at real infrastructure [5].
From there the pipeline runs on public indexes before any active scan. GrayhatWarfare indexes 318,000 buckets and 4 billion files as of 2022, searchable with no authentication and filterable by extension down to .env, .sql, .key, .pem, and .bak [6]. snallybuckster automates those searches and pulls the matching files [7]. Only once a name looks live does the active phase start: S3Scanner tests permissions against a name list with no AWS credentials, and AWSBucketDump walks the files for keys and configs [8].
Now place Block Public Access on that timeline. It is a permission-time control that answers the request S3Scanner sends, and certstream sits outside its reach because the discovery already ran before any permission check [2]. The map exists whether or not the door is locked.
The reconnaissance is quiet by construction: a permission scan across 20 names produces minimal logging, and the CT-log discovery phase produces none, so the step with the most value is the one with no trace to hunt [1][10]. A hit in GrayhatWarfare reflects a past state, not a current one. It proves the bucket was readable at some point, possibly for hours or days, and the file may have been copied before anyone clicked the fix [9]. Today's permission check only speaks to today, not to what already left.
None of this is AWS-specific. In GCS, an allUsers binding with roles/storage.objectViewer makes a bucket anonymously listable over HTTP, and GCPBucketBrute enumerates it the same nameless way [11]. Azure Blob offers three access levels, Private, Blob, and Container, where Container means full anonymous listing and read [12]. The source notes most pentesters test only AWS, which leaves the other two less examined [11].
Ranked by verification strength, evidence, and original report placement.
A researcher using bucket-stream connected to certstream can produce a list of S3 buckets derived from a target company's subdomains within minutes, with no packet sent to the target and no log written to the SIEM.
Even with Block Public Access enabled, the CT-log discovery phase is unaffected because it runs before any permission check.
Any TLS certificate issued for a company domain such as backup.acme.com or cdn.acme.com appears in CT logs through certstream; bucket-stream extracts naming components and generates bucket-name permutations like acme-backup, backup-acme and cdn-acme. The bucket itself never needs its own certificate.
bucket-stream (eth0izzle) listens to certstream in real time and generates bucket name permutations from domains observed in CT logs, sending no packets to the target during monitoring.
bucket-stream uses a wordlist of common patterns (company-backup, company-logs, company-data, company-prod, company-staging), the same ones development teams adopt by convention; the --skip-lets-encrypt flag filters out certificates from personal projects and low-interest infrastructure.
buckets.grayhatwarfare.com indexes 318,000 buckets and 4 billion files (numbers from 2022; current volume is larger) from S3, GCS and Azure Blob, searchable without authentication and filterable by extension including .env, .sql, .key, .pem and .bak.
Distinct publishers with included, body-backed reporting in this cluster.
1 article · September 5, 2026
Follow any of these and your For You feed starts watching them — no settings page required.
build
Once the question needs a cube, you own the parser1 distinct publisher
security
Synology's APM 2.0 restores cloud backup copies straight into EC2 and Azure VM1 distinct publisher
build
A key in the app binary is a bucket handover; presigned uploads also drop the proxy data bill1 distinct publisher
build
Grok's coding CLI shipped whole repos to a cloud bucket. That makes agent adoption an egress call.1 distinct publisher
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
Rests on one walkthrough, but a checkable one
Every mechanism in this story traces to a single dev.to post. That is thin, but not empty: the tools it names are public on GitHub and the four breaches it recounts are attributed to named finders — UpGuard, Chris Vickery, the Kromtech Security Center — so the pieces the account rests on can be checked against primary records. What no second outlet in this reporting confirms is the specific end-to-end passive pipeline as the author assembles it.
The exposed-bucket surface is demonstrably real and recurring
GrayhatWarfare's index of hundreds of thousands of public buckets and billions of files, plus four documented exposures at Accenture, Booz Allen, Time Warner and GoDaddy, show this is a live, recurring class of failure rather than a hypothetical. The caveat is age: those breaches are from 2017-2018 and the index count from 2022, so what is measured is the reality of the exposure, not current uptake of this exact certstream-driven pipeline.
Confident framing runs slightly ahead of one author's proof
The strongest line — that the most valuable part of the attack leaves no traceable evidence — is plausible for the certificate-log phase but rounds past the active scanning step, where an unauthenticated permission sweep can still trip CloudTrail or a WAF. Presented as settled fact from a single how-to, the no-trace claim sits a little ahead of what the reporting establishes.
Reputation and reach, not a product to sell
A personal dev.to post carries the usual incentives to teach and to build a security reputation, and offensive-security content rewards a dramatic frame. But it sells nothing: the tools the author walks through are third-party open-source projects they do not own, which limits any commercial pull on the claims.
One publisher, but verifiable underpinnings
Confidence is held down by having a single publisher and no independent confirmation of the pipeline. It is held up by the fact that the named tools and the dated breaches are checkable against outside records, so this is not an unfalsifiable account — just an uncorroborated one within our coverage.