Public repositories
Secrets committed to a public repo, or a fork, stay readable in history long after the file is deleted. Adversary checks the code paths attached to your domains.
Secrets leak across frontend bundles, public repos, exposed .env files, and open storage. Adversary finds them and validates which are real and reachable. You get evidence and severity in minutes, not a scanner dump.
A key does not have to be stolen to be exposed. It just has to be reachable. These are the places Adversary looks first.
Keys hard-coded into JavaScript ship to every visitor. View source, read the token. Adversary parses your live bundles and pulls the strings that look like credentials.
A misconfigured server serves .env, .env.local, or a config dump straight to the public. One request returns database URLs, signing keys, and provider tokens.
Secrets committed to a public repo, or a fork, stay readable in history long after the file is deleted. Adversary checks the code paths attached to your domains.
A deployed .git folder lets anyone reconstruct your source, then mine it for keys. Adversary flags the directory and confirms it is reachable.
Public buckets and open object storage hold backups, dumps, and config files. Adversary finds the open bucket and confirms which objects are readable.
An abandoned subdomain pointing at a deprovisioned host can be claimed by an attacker, then used to phish tokens or serve trusted-origin requests.
Full library → Browse every exposure type in the Adversary exposure library.
Any scanner can flag a string that looks like a key. Confirming it is live and reachable is the part that matters. Adversary does both.
Adversary enumerates your domains, subdomains, hosts, repositories, and storage. It builds the full external footprint, including the assets you forgot you owned.
It reads live bundles, exposed files, and reachable paths, then extracts strings that match known key formats. This is the candidate set, not the verdict.
Adversary probes each candidate to confirm it is live, reachable, and tied to your surface. A revoked key is noise. A working key is a finding.
Every validated leak is returned with its source, the request that proved it, severity, and a remediation step. You see why it matters and what to fix.
A scanner gives you a list. Adversary gives you a decision. Each line is a leak you can confirm and fix.
Background → Read why exposed secrets and API keys matter more in the AI era, or see the full Adversary attack surface product.
Go deeper
Exposed API keys are one finding type. Adversary maps the whole external surface and confirms which exposures are real. Start with the specific leak paths below.
How a public .env leaks database URLs, signing keys, and provider tokens, and how Adversary confirms it is reachable.
ExploreWhy keys hard-coded into JavaScript bundles ship to every visitor, and how Adversary pulls them from live bundles.
ExploreHow a dangling subdomain gets claimed by an attacker, then used to phish tokens from a trusted origin.
Explore