Emudhra
Find where the leaked private keys of eight compromised eMudhra certificate authorities can still be used against you. Anyone can recover these keys (disclosed 2026-10-20, https://emudhra.we-have-a-problem.com/) and use them to impersonate any website or sign code that clients still trust. Browsers and OS stores block them, but curl, Python, Java, Go, Node.js, Deno, Electron apps and container images often still trust them. Checks Linux, macOS and Windows hosts, Linux and macOS machines over SSH, container images and running containers: PEM CA bundles and Java keystores matched by public key (honouring blocked.certs and OpenSSL trust settings), any EC CA whose private key is small enough to recover the same way, the macOS and Windows verifiers, and the versions of tools that carry their own roots (Node.js, Go, Deno, Bun, uv, pixi, rustup, mise, Claude Code, Docker Desktop, cloudflared, Cloudflare WARP, Electron apps) and the packages pinned in Cargo, Mix, rebar3, uv, Poetry, PDM, Pipenv and Composer lockfiles against the patched releases. Records exposed, protected or unknown per target for TLS and code signing, with what to do about it; changes nothing.
Global Arguments
| Argument | Type | Description |
|---|---|---|
| host? | boolean | Scan the machine swamp runs on |
| images? | array | Container images to scan, e.g. ["debian:bookworm", "python:3.12-slim"] |
| containers? | array | Running containers to scan, by name or ID |
| sshHosts? | array | Linux and macOS machines to scan over SSH, as ssh destinations, e.g. ["web1", "admin@db1", "ssh://admin@db2:2222"] |
| sshKey? | string | Private key to log in with over SSH; otherwise ssh's own configuration and agent decide |
| sshOptions? | array | More ssh arguments, ahead of the scan\ |
| searchPaths? | array | Directories to search for lockfiles (Cargo, Mix, rebar3, uv, Poetry, PDM, Pipenv, Composer), on the host and over SSH |
| runtime? | enum | Container runtime: docker (or podman via runtimePath), or container (Apple's container CLI) |
| runtimePath? | string | Path to the runtime CLI if it is not `docker`/`container` on PATH |
| bundles? | array | More PEM CA bundles to check, on the host and in every container |
| keystores? | array | More Java keystores (JKS or PKCS#12) to check, on the host and in every container |
| toolchains? | boolean | On the host and over SSH, also check Python certifi, pip, Perl Mozilla::CA, Java runtimes, Node.js, Go, Deno, Bun, uv, pixi, rustup, mise, Claude Code, Docker Desktop, cloudflared, Cloudflare WARP and Electron apps |
| Argument | Type | Description |
|---|---|---|
| failOnExposed? | boolean | Fail the run, after recording the results, when any target is exposed |
Resources
updated labels
- Has README or module doc2/2earned
- README has a code example1/1earned
- README is substantive1/1earned
- Most symbols documented1/1earned
- No slow types (deprecated)1/1earned
- Dependencies pass trust audit2/2earned
- Has description1/1earned
- Platform support declared (or universal)2/2earned
- License2/2earned
- Verified public repository2/2earned
Spawns a subprocess with Deno.Command().
- models/emudhra_exposure.ts:268 — runs ssh, the container runtime, security, powershell, python and version queries; argument lists are built in this file and _lib/machine.ts, see README What it runs