
Check and fix Java runtimes for CVE-2026-91403 (compromised eMudhra intermediates) on Windows and macOS — consent-first, no dependencies, no network.
Java certificate vulnerability (CVE-2026-91403) blocklist-based temporary mitigation tool — Windows / macOS
It finds every Java installation on your PC (Minecraft launcher, mod launchers, development tools, manually installed JDKs) and checks whether the temporary measure recommended by OpenJDK (adding the 16 affected certificates to the blocklist) has been applied. If the user agrees, it adds any missing entries. If selected, it also actually launches each Java to check whether the disguised certificate is truly rejected.
This tool is not a complete solution. It does not update Java, does not modify the trust store (cacerts), and does not enable certificate revocation checking. The fundamental fix is to update Java and your launchers to patched versions. For details, please read 3. Limitations of This Tool.
It is built using only the Rust standard library with no external libraries, so reading just the src/ and probe/ folders is enough to verify everything it does.
English: see English below.
In October 2026, it was revealed that the private keys of 8 intermediate certificates from the certificate authority eMudhra could be discovered by anyone. Including the certificates cross-signed by Sectigo "AAA Certificate Services" with the same keys, that makes 16 in total.
Because unpatched Java trusts these certificates, if an attacker is on the same network (such as public Wi-Fi), they can create fake certificates impersonating any site, and Java will accept them as genuine. For example, they could impersonate the Minecraft login (session) server or a mod download server.
The measures recommended by OpenJDK are one of the following three.
| Official measure | This tool |
|---|---|
| Update Java to a patched version (per Oracle/OpenJDK: 25.0.5.0.2, 21.0.13.0.2, 17.0.21.0.2, 11.0.33.0.2, 8u511 or later) | ❌ Not done (guidance only) |
Block the affected certificates via blocked.certs (blacklisted.certs for Java 8) | ✅ Adds all 16 |
Enable certificate revocation checking (-Dcom.sun.net.ssl.checkRevocation=true -Dcom.sun.security.enableCRLDP=true) | ❌ Not done (reason) |
References
impacted-intermediates.json)| Step | Description | Internet |
|---|---|---|
| File inspection | For each Java found, read lib/security/blocked.certs (for Java 8, blacklisted.certs) and the release file to check whether the 16 certificates are on the blocklist. | Not used |
| Live connection test (optional) | Actually run each Java and try connecting to 2 test sites and the Mojang session server to verify that the disguised certificate is rejected. Details | Only this step uses it |
| Add to blocklist | Append only the missing certificate fingerprints to the end of the file. Existing lines are not deleted or modified, and the original is backed up as blocked.certs.bak-cve-2026-91403. After adding, the file is read again to verify. | Not used |
| Revert | Copy the backup back to its original location. | Not used |
Y before each of inspection, live connection test, adding to the blocklist, and using administrator privileges to proceed. Any other input means "no".%LOCALAPPDATA%\JavaFix and macOS ~/Library/Logs/JavaFix.cacerts). Deleting root certificates could block legitimate sites as well, so it is left untouched.
(For example, Sectigo "AAA Certificate Services" is a root used by many legitimate sites.)Download the file for your operating system from the Releases page.
| Operating System | File |
|---|---|
| Windows (most PCs) | javafix-windows-x64.exe |
| Windows (ARM laptops) | javafix-windows-arm64.exe |
| macOS (Intel / Apple Silicon common) | javafix-macos-universal.zip |
To verify that the downloaded file is the original, compare it with the value in SHA256SUMS.
certutil -hashfile javafix-windows-x64.exe SHA256 (Windows)
shasum -a 256 javafix-macos-universal.zip (macOS)
Windows
javafix-windows-x64.exe.macOS
javafix-macos-universal.zip and extract it (Safari extracts it automatically). A javafix-macos folder is created.javafix.command inside the folder, and a terminal will open and run it.javafix.command → Open → Open.To run it directly from the terminal:
cd ~/Downloads/javafix-macos
xattr -d com.apple.quarantine javafix.command
./javafix.command
The uncompressed
javafix-macos-universalfile forv0.1.0loses its execute permission when downloaded, so double-clicking it causes the text editor to show the error "The text encoding Unicode (UTF-8) is not applicable." Starting withv0.1.1, it is distributed as a zip.