CertScanner app icon

Free macOS app

CertScanner

Finds every file on your Mac that contains one of the four root certificates through which the compromised eMudhra intermediate CAs (October 2026) are trusted.

Download for macOS

Version 1.0 · macOS 14 or later · Apple silicon · 680 KB

Download

The app is signed with our Developer ID and notarized by Apple, so it opens without Gatekeeper warnings. It works offline, sends nothing anywhere, and only reads files.

Install

  1. Download CertScanner-1.0.dmg
  2. Open the disk image and drag CertScanner onto Applications
  3. Optional: to scan your home folder without a permission prompt per folder, give CertScanner Full Disk Access in System Settings → Privacy & Security

Verify

SHA-256
cd6eeff57f4d9d7202115930d9463d2c3903a3a781eb338e8230226a42460fd7
Signed by
Developer ID Application: Rix Data GmbH (W6MSF534B9)
shasum -a 256 ~/Downloads/CertScanner-1.0.dmg
spctl -a -t open --context context:primary-signature -v ~/Downloads/CertScanner-1.0.dmg

Why

In October 2026 the private keys of 8 ECDSA P-384 intermediate CAs of eMudhra (EM DV/OV/EV TLS CA and EM OV CS CA, G3B and G3C) turned out to be integers below 256. Anyone can sign certificates with them. Software that trusts one of the roots below, and neither blocks the intermediates nor checks revocation, accepts those certificates.

Root certificate Leads to SHA-256 fingerprint
emSign Root TLS CA - G3 TLS interception 7DD78D5F4F13459A83DFF9ABBBA62EDBAF6F2D102BF257FD712F4D9F2746ED8D
emSign ECC Root CA - G3 TLS interception 86A1ECBA089C4A8D3BBE2734C612BA341D813E043CF9E8A862CD5C57A36BBE6B
AAA Certificate Services TLS interception D7A7A0FB5D7E2731D771E9484EBCDEF71D5F0C3E0A2948782BC83EE0EA699EF4
emSign Root CS CA - G3 Code signing F2EDAAFF3D9B701FB4D14C9F285F8C0BAD90FC3BCC1FA07D47F4718EDABA34A5

Each cracked intermediate exists twice: issued by emSign Root TLS CA - G3 or Root CS CA - G3, and cross-signed by AAA Certificate Services. Both G3 roots are in turn cross-signed by emSign ECC Root CA - G3. No root key is compromised.

Usage

Pick a folder (default /) and press Scan.

Filter

Click a certificate name to show only the files that contain it. Double-click a file to show it in Finder.

Preview

Select a file to see where the certificate is in it: a hex dump for binary matches, the surrounding lines for base64. The highlight covers the whole certificate if it's there intact, else the public key or the matched fragment.

History

Every scan is kept in the sidebar, including stopped ones. The preview rereads the file, so it tells you if a file has since changed or been deleted.

Matching

Each certificate is found by its public key, so DER files, keychains, binaries with embedded trust stores and cross-signed copies all match. The key is also searched base64 encoded, which covers PEM bundles, plists and JSON.

Speed

Every regular file is read in 4 MB chunks on one thread per core. Symlinks aren't followed, iCloud files that aren't downloaded aren't fetched, and duplicate system volumes are skipped.

False positives

The shortest pattern is 120 random bits. Across all patterns, 1 TB of random base64 text is expected to produce 2.7·10−23 false hits.

What a hit means

A file that contains one of the roots can make the cracked intermediates trusted; it isn't itself compromised. AAA Certificate Services is a common, legitimate Sectigo root.

Usually covered

Apple blocks the intermediates in Safari, Mail and apps that use its frameworks, so hits in system keychains are covered.

Worth fixing

PEM bundles read by tools that don't check revocation:

  • /etc/ssl/cert.pem before macOS 27.2.1 / 26.7.3 / 15.8.3
  • Python certifi
  • Java cacerts
  • Node.js and apps with their own root list

Not covered

The 16 intermediate certificates themselves (servers send them, so they're rarely on disk), and the 8 RSA intermediates (G2B/G2C) eMudhra revoked as a precaution. Certificates issued by these roots don't contain the root's key and aren't listed.

Sources