CVE-2026-59638
JSSE hostname verifier CN-fallback enabled by default despite documented opt-in
Record summary
CVE-2026-59638 has a selected CVSS score of 9.3 (critical); EIP currently links 1 repository PoC.
Description
In Bouncy Castle for Java before 1.85, JSSE hostname verifier CN-fallback enabled by default despite documented opt-in. This issue also affects Bouncy Castle for Java LTS before 2.73.12, and Bouncy Castle for Java FIPS (BC-FJA) before bctls-fips 1.0.24 (1.0.X series), 2.0.24 (2.0.X series) and 2.1.24 (2.1.X series).
Exploitation context
Available material
- Repository PoCs
- 1
CISA SSVC decision
CISA Coordinator · SSVC 2.0.3 · Evaluated Aug 3, 2026 · Source: CVE List
Affected products and versions
3| Product | Source | Version range | Status |
|---|---|---|---|
Default status: unaffected | CVE List | 1.0.7 to < 1.0.24 | affected |
| 2.0.0 to < 2.0.24 | affected | ||
| 2.1.0 to < 2.1.24 | affected | ||
Default status: unaffected | CVE List | 1.61 to < 1.85 | affected |
Default status: unaffected | CVE List | 2.73.0 to < 2.73.12 | affected |
Proofs of concept
1Repository PoCs
GitHubxiaoqiMikko/bc-checkRepository PoCby xiaoqiMikkoStars: 0Scanner19 files
Analysis
Technical assessment
A Java-based offline scanner that identifies Bouncy Castle artifacts in JAR/WAR files and directories, determines their product line (BC, BC-LTS, FIPS), and checks them against a hardcoded table of 37 CVE rules to report which vulnerabilities apply. It does not exploit any vulnerability.
Backdoor review
No backdoor observed in reviewed code
The repository is a Java command-line tool (bc-check) that scans local JAR/WAR files for Bouncy Castle dependencies and checks them against a hardcoded table of 2026 CVEs. All reviewed source code (README, Java classes, Python generator) performs only local file scanning, version parsing, and CVE matching. No network I/O, command execution, data exfiltration, or concealed payloads were found. The tool's behavior is consistent with its documented purpose.
Classification basis and observed behavior
Classification basis
The artifact is a vulnerability scanner. It reads local files to detect the presence and version of Bouncy Castle libraries, then compares them against a built-in CVE database to report exposure. It does not contain any code to trigger, exploit, or demonstrate the vulnerabilities; it only checks version ranges and reports matches.
README.md:3-4src/main/java/io/mikko/bccheck/Judge.java:107-150src/main/java/io/mikko/bccheck/Main.java:41-123Requirements
- Java runtime (targets Java 8) to execute the JAR
README.md:155-156 - Access to target JAR/WAR files or directories to scan
README.md:7-8
Observed behavior
- Scans JAR/WAR/EAR files and directories recursively to locate Bouncy Castle artifacts
src/main/java/io/mikko/bccheck/JarScanner.java:69-81 - Identifies artifacts via MANIFEST.MF, Maven pom.properties, or filename patterns
src/main/java/io/mikko/bccheck/JarScanner.java:104-108 - Classifies each artifact into product line (BC, LTS, FIPS) and module
src/main/java/io/mikko/bccheck/Coordinate.java:56-91 - Compares detected version against a hardcoded table of 37 CVE rules to determine vulnerability status
src/main/java/io/mikko/bccheck/Judge.java:107-150 - Outputs a report listing matched CVEs, severity, and recommended fix version
README.md:89-97 - Operates entirely offline with no network access or data exfiltration
README.md:3-4
Behaviors behind the backdoor verdict
Observables
- Email Address
- sikongjuechen@gmail.comContact email in README for consulting services, not embedded in code or used for data exfiltration.
README.md:175
What the analysis did not establish
- Evidence includes only 8 of 19 repository files; 11 files are omitted (unclassified_bytes: 67151). The missing files may include additional logic, tests, or data files not analyzed.
- The CVE rules are hardcoded in CveTable.java, generated from tools/data/bc_cves.json, which is not included in the provided text. The accuracy of the scanner depends on the correctness of that external data file.
- The scanner only covers 2026 CVEs; earlier CVEs are explicitly out of scope per README.md lines 127-134.
- 11 files in the repository were not provided as text and were not reviewed, including the pre-built JAR (bc-check.jar) and binary data files. The review is based solely on the 8 provided source/documentation files.
- The tool's behavior when processing maliciously crafted JAR files (e.g., zip bombs) is bounded by documented limits (MAX_NESTED_ENTRY_BYTES, MAX_DEPTH) but was not tested.
This review is limited to the supplied PoC code and context. It does not assert that the code works or is safe to execute.