The short answer
Safari, Chrome and Firefox on a Mac are covered: Chrome and Firefox blocked the affected certificates on 17 October and Apple on 19 October. What can still trust them is software with its own certificate bundle. Each is fixed from a specific version: Python certifi 2026.10.19, Node.js 26.12.1, 24.22.1 or 22.23.4, Go 1.27.3 or 1.26.10 (programs built with Go have to be rebuilt), Homebrew ca-certificates 2026-09-25_1, and Composer ca-bundle 1.6.0 or 1.4.16. Check with python3 -m pip show certifi, node -v, go version and brew list --versions ca-certificates. CERT-In said on 21 October that there was no confirmed malicious use of the keys.
On this page
What happened
Eight intermediate certificate authority (CA) certificates run by eMudhra had private keys that could be recovered trivially. Anyone holding such a key could issue certificates that software trusting these intermediates would accept. They chain to emSign Root TLS CA - G3 and emSign ECC Root CA - G3, and were also cross-signed by Sectigo AAA Certificate Services, so a certificate store that trusts any of those roots could accept them until it blocks the eight.
| Certificate | Used for |
|---|---|
| EM DV TLS CA - G3B, EM DV TLS CA - G3C | Website certificates (domain validated) |
| EM OV TLS CA - G3B, EM OV TLS CA - G3C | Website certificates (organisation validated) |
| EM EV TLS CA - G3B, EM EV TLS CA - G3C | Website certificates (extended validation) |
| EM OV CS CA - G3B, EM OV CS CA - G3C | Code signing |
EM DV TLS CA - G3B, EM DV TLS CA - G3C
- Used for
- Website certificates (domain validated)
EM OV TLS CA - G3B, EM OV TLS CA - G3C
- Used for
- Website certificates (organisation validated)
EM EV TLS CA - G3B, EM EV TLS CA - G3C
- Used for
- Website certificates (extended validation)
EM OV CS CA - G3B, EM OV CS CA - G3C
- Used for
- Code signing
CERT-In's advisory CIAD-2026-0050 of 21 October says the public disclosures don't establish confirmed malicious use of the keys as of that date.
Safari, Chrome and Firefox: already blocked
| Who | Blocked on | What it covers on a Mac |
|---|---|---|
| Google Chrome | 17 October | Chrome. Google says the block reached users without a browser update or restart. It covers the six website intermediates. |
| Mozilla Firefox | 17 October | Firefox, through its OneCRL block list. |
| Apple | 19 October | Safari, and apps that use macOS's own certificate checks. |
| Microsoft | 20 October | Windows. Nothing on your Mac. |
Google Chrome
- Blocked on
- 17 October
- What it covers on a Mac
- Chrome. Google says the block reached users without a browser update or restart. It covers the six website intermediates.
Mozilla Firefox
- Blocked on
- 17 October
- What it covers on a Mac
- Firefox, through its OneCRL block list.
Apple
- Blocked on
- 19 October
- What it covers on a Mac
- Safari, and apps that use macOS's own certificate checks.
Microsoft
- Blocked on
- 20 October
- What it covers on a Mac
- Windows. Nothing on your Mac.
So for browsing, there's nothing to change. Keep your browsers and macOS up to date as usual.
What isn't covered yet: tools with their own certificate bundle
Some developer tools don't ask macOS which certificates to trust. They read a list that ships inside the tool, and they keep trusting the eight intermediates until that list is updated. These are the ones with a fixed release:
| Tool | Fixed in | Check with |
|---|---|---|
Python certifi (used by requests and many other Python libraries) | 2026.10.19 | python3 -m pip show certifi |
| Node.js | 26.12.1, 24.22.1, 22.23.4 | node -v |
| Go, and programs built with it | 1.27.3, 1.26.10, then rebuild the program | go version |
Homebrew ca-certificates | 2026-09-25_1 | brew list --versions ca-certificates |
Composer composer/ca-bundle (PHP) | 1.6.0, 1.4.16 | composer show composer/ca-bundle, in the project |
Python
certifi(used byrequestsand many other Python libraries)- Fixed in
- 2026.10.19
- Check with
python3 -m pip show certifi
Node.js
- Fixed in
- 26.12.1, 24.22.1, 22.23.4
- Check with
node -v
Go, and programs built with it
- Fixed in
- 1.27.3, 1.26.10, then rebuild the program
- Check with
go version
Homebrew
ca-certificates- Fixed in
- 2026-09-25_1
- Check with
brew list --versions ca-certificates
Composer
composer/ca-bundle(PHP)- Fixed in
- 1.6.0, 1.4.16
- Check with
composer show composer/ca-bundle, in the project
Python: check and update certifi
Every Python environment has its own copy of certifi, so check the one each project uses. Activate the project's virtual environment first, then:
python3 -m pip show certifi
python3 -c "import certifi; print(certifi.__version__, certifi.where())"WARNING: Package(s) not found: certifi means that Python has no certifi, so there's nothing to update in it. To list the certifi copies in your home folder, with the version in each folder name:
find ~ -type d -name "certifi-*.dist-info" 2>/dev/nullmacOS may ask whether Terminal can open folders such as Documents or Desktop while this runs. Any folder name below certifi-2026.10.19.dist-info is an older copy. Update it in the environment it belongs to:
# pip, inside the activated virtual environment
python -m pip install --upgrade certifi
# uv
uv lock --upgrade-package certifi
uv sync
# Poetry
poetry update certifiIf a requirements.txt pins an older version, change the line to certifi==2026.10.19. Homebrew's Python refuses pip install outside a virtual environment, so update certifi inside each environment rather than globally.
Node.js
node -vNode.js 26.12.1, 24.22.1 and 22.23.4 update its built-in certificate list for this incident, and they're the same versions as the Node.js security release of 21 October. How to update depends on how Node was installed: see checking and updating Node on a Mac.
Go, and programs built with Go
Go 1.27.3 and 1.26.10 carry the fix. A Go program contains the Go version it was built with, so updating Go isn't enough: rebuild each program, and reinstall the Go tools you installed with go install.
go version
brew upgrade go
go version ~/go/bin/*go version followed by file names prints the Go version each program was built with. For one built before the update, run its go install command again, for example go install golang.org/x/tools/gopls@latest. If you installed Go from go.dev rather than Homebrew, download the new installer there instead of running brew upgrade go.
Homebrew and Composer
brew list --versions ca-certificates
brew update
brew upgrade ca-certificatesFor PHP projects that use Composer's certificate bundle, run these in the project folder:
composer show composer/ca-bundle
composer update composer/ca-bundleThe faster way: Package Watch in iKnowMyMac
Package Watch in iKnowMyMac checks the Python packages in every environment on your Mac, including certifi, against published advisories.
Sources
- 1.Eight eMudhra CA keys compromised (The Hacker News)
- 2.Compromised eMudhra intermediate CA certificates in Chrome and Android (Google Security blog)
- 3.CERT-In Advisory CIAD-2026-0050 (CERT-In)
- 4.certifi 2026.10.19 (GitHub)
- 5.composer/ca-bundle releases (GitHub)
- 6.Node.js October 2026 security releases (Node.js)