Skip to main content

Bouncy Castle CVE-2026-59638

| EUVDEUVD-2026-52016 CRITICAL
Improper Validation of Certificate with Host Mismatch (CWE-297)
2026-08-03 bcorg GHSA-8rxj-3p7p-rq39
Critical
Disputed · 9.3 Vendor: bcorg
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Gain man-in-the-middle position on client-server path
  2. Delivery
    Obtain SAN-less cert with CN naming target host
  3. Exploit
    Present cert during TLS handshake to BCJSSE client
  4. Execution
    CN-fallback default-on accepts host mismatch
  5. Persist
    Establish intercepted TLS session
  6. Impact
    Read and modify confidential traffic

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V12 - Secure Communication Certificate host validation
Exploitation Conditions

Exploitation requires (1) the target application to use the Bouncy Castle JSSE provider (BCJSSE) for TLS with hostname/endpoint identification enabled - not the stock JDK JSSE; (2) an active man-in-the-middle / traffic-interception position between client and legitimate server; and (3) a certificate that validates up the trust chain but contains no matching SAN dNSName, whose Subject CN equals the victim host - practically achievable where a dNSName-name-constrained subordinate CA can mint a SAN-less leaf, since X.509 name constraints only constrain SAN entries of the constrained type. The vulnerable default is the CN-fallback gate defaulting ON (property org.bouncycastle.jsse.client.checkCnFallback / JSSE_HOSTNAME_CHECK_CN_FALLBACK). Limiting factors: does not affect apps that only use the JDK's built-in JSSE; requires a network interception position (not a plain remote packet); requires obtaining/crafting the specific SAN-less CN-matching certificate; and is neutralized if the operator had already set the property to false.

Impact

The signals are mixed and warrant nuance. The published CVSS 4.0 vector (AV:N/AC:L/PR:N/UI:N/VC:H/VI:H/VA:N, base 9.3) implies trivially remote, unauthenticated, high-confidentiality-and-integrity impact, but that scoring understates the real preconditions: exploiting a hostname-verification weakness is fundamentally a man-in-the-middle attack, which requires an interception position AND a trust-chain-valid but SAN-less certificate whose CN matches the target - not a condition satisfiable by simply sending a packet. In practice AC should be higher than the vendor's AC:L, so the effective risk is lower than the 9.3 suggests. Reinforcing the lower-urgency read: there is no EPSS score provided, no CISA KEV listing, and no public exploit identified at time of analysis - the only public code is the vendor's own regression test, which demonstrates the defaulting bug but is not a weaponized exploit. The offsetting factor is exposure blast radius: Bouncy Castle is extremely widely embedded in Java software, so any deployment that actually uses the BCJSSE provider for TLS client verification silently lost a defense-in-depth control. Net: treat as a meaningful supply-chain/crypto-hygiene patch to schedule promptly, not an emergency drop-everything (no active exploitation, MITM-gated), unless you operate in an environment where attacker path-of-network-position is plausible (hostile networks, PKI with delegated/constrained sub-CAs).

Exploit ScenarioDerived

An attacker on the network path between a Java client (using BCJSSE) and its intended TLS server - for example on a shared Wi-Fi, a compromised router, or via BGP/DNS redirection - presents a certificate that chains to a trusted (possibly name-constrained) CA but carries no SAN, with the Subject CN set to the target hostname. Because CN fallback is on by default, HostnameUtil accepts the mismatch, the TLS handshake completes, and the attacker transparently intercepts and can modify the supposedly authenticated traffic. No public exploit is identified at time of analysis; only the vendor's regression test demonstrates the defaulting behavior.

Act Now Prioritize within 24-48h. Why: CRITICAL severity.
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Aug 03, 2026

TLS hostname-verification bypass in the Bouncy Castle for Java JSSE provider (BCJSSE) ships the legacy certificate-CN fallback enabled by default, even though the vendor documentation states it is opt-in and gated behind the org.bouncycastle.jsse.client.checkCnFallback property. Affected are BC-Java before 1.85, BC-LTS before 2.73.12, and BC-FJA (FIPS) TLS module bctls-fips before 1.0.24, 2.0.24 and 2.1.24; a MITM-positioned attacker can present a SAN-less certificate whose Subject CN names the victim host and have it silently accepted, defeating name-constraint protections and enabling interception of TLS traffic (CWE-297). This carries a CVSS 4.0 base of 9.3, but there is no public exploit identified at time of analysis and it is not in CISA KEV.

RemediationAI

Vendor-released patch: upgrade to Bouncy Castle for Java 1.85 or later; for the LTS line upgrade to 2.73.12 or later; for BC-FJA (FIPS) upgrade the TLS module bctls-fips to 1.0.24 (1.0.X), 2.0.24 (2.0.X) or 2.1.24 (2.1.X) as appropriate to your series. The fix restores the intended default by changing the guard from Properties.isOverrideSet(JSSE_HOSTNAME_CHECK_CN_FALLBACK, true) to Properties.isOverrideSet(JSSE_HOSTNAME_CHECK_CN_FALLBACK), so CN fallback is now OFF unless explicitly enabled (see commits https://github.com/bcgit/bc-java/commit/799bd15320a6310a447863638aa3df64acef829b and https://github.com/bcgit/bc-java/commit/5ac55351cd1a8a7184d41c96a7ee87df0770240a and advisory https://github.com/bcgit/bc-java/wiki/CVE-2026-59638). If you cannot upgrade immediately, the effective workaround on affected versions is to explicitly set the system property org.bouncycastle.jsse.client.checkCnFallback (Properties.JSSE_HOSTNAME_CHECK_CN_FALLBACK) to "false" to force the fallback off; the side effect is negligible for correctly-issued certificates because modern CAs populate SAN, though any legacy peer relying on CN-only certificates will fail verification (which is the desired secure behavior). Ensure endpoint identification ("HTTPS" algorithm) remains enabled so hostname checks are actually performed.

Affected VersionsENISA

BC-FJA 2.1.0 <2.1.24
BC-FJA 2.0.0 <2.0.24
BC-FJA 1.0.7 <1.0.24
BC-JAVA 1.61 <1.85
BC-LTS-JAVA 2.73.0 <2.73.12

Affected Packages

euvd bc_fja fix: 1.0.24, 2.0.24, 2.1.24
euvd bc_java fix: 1.85
euvd bc_lts_java fix: 2.73.12

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 3 packages in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The affected component is the Bouncy Castle JSSE provider (org.bouncycastle.jsse.provider.HostnameUtil), a pure-Java TLS/JSSE implementation used as a drop-in JSSE provider for endpoint identity checking during TLS handshakes. Modern hostname verification is supposed to match only Subject Alternative Name (SAN) dNSName entries; the historic practice of falling back to the certificate Subject Common Name (CN) when no SAN is present is deprecated (RFC 6125) and, per Bouncy Castle docs, meant to be off unless the operator opts in via Properties.JSSE_HOSTNAME_CHECK_CN_FALLBACK. The root cause (CWE-297, Improper Validation of Certificate with Host Mismatch) is a defaulting bug: the guard called Properties.isOverrideSet(..., true), whose second argument makes the property default to enabled, so CN fallback ran even when unset. Per the vendor's own regression test, this is significant because the CN fallback is a Name-Constraints bypass surface - X.509 name constraints only constrain SAN entries of the constrained type, so a dNSName-constrained sub-CA can issue a SAN-less leaf whose CN names an unrelated host, and CN matching would accept it. The CPEs confirm three affected product lines: cpe:2.3:a:legion_of_the_bouncy_castle_inc.:bc-java, :bc-lts-java, and :bc-fja.

Know when Java gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Sources disagree (Medium–Critical)
Vendor (bcorg) PRIMARY 9.3 CRITICAL
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N/U:Amber
vuln.today AI 7.4 HIGH

Hostname-verification bypass is inherently MITM-gated and needs a crafted SAN-less CN-matching cert, so AC:H; no auth or user interaction (PR:N/UI:N); interception yields high confidentiality and integrity, no availability impact.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N
4.0 AV:N/AC:H/AT:N/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N
SUSE MEDIUM
Red Hat 7.4 MEDIUM

vuln.today treats the vendor’s rating as authoritative. A higher third-party CVSS (e.g. CISA-ADP) is shown for transparency but does not drive the headline severity.

CVSS VectorVendor: bcorg

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
High
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

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).

Executive ViewAI

Why It Matters

Bouncy Castle for Java (BC-Java, BC-LTS, BC-FJA) versions prior to 1.85, 2.73.12, and 2.1.24 contain a critical TLS verification defect permitting man-in-the-middle attackers to bypass encryption and intercept traffic. Applications built on affected versions expose encrypted data and credentials to network-based interception, representing immediate risk to data confidentiality and regulatory compliance.

Business Impact: Severe
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.3%
Top 80% exploitable
Prevalence
High
Bouncy Castle is ubiquitous in Java, but only the BCJSSE TLS provider path is affected
Social Media
1
Sightings
Data Quality
8 sources
Confidence: High

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity CRITICAL
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
CRITICAL severity
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Out-of-Cycle
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact
Very High
Technical Impact
Total

Priority Score

46
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +46
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

More in Java

View all
CVE-2012-4681 CRITICAL POC
9.8 Aug 28

Oracle Java SE 7 Update 6 and earlier contains multiple sandbox bypass vulnerabilities via the ClassFinder and forName m

CVE-2015-7450 CRITICAL POC
9.8 Jan 02

Remote code execution in IBM Sterling B2B Integrator, Sterling Integrator, and Tivoli Common Reporting allows unauthenti

CVE-2013-2465 CRITICAL POC
9.8 Jun 18

Java Runtime Environment sandbox bypass via incorrect image channel verification in 2D component allows remote unauthent

CVE-2011-3544 CRITICAL POC
9.8 Oct 19

Oracle Java SE JDK/JRE 7 and 6 Update 27 and earlier allows remote code execution with complete system compromise throug

CVE-2010-1871 HIGH POC
8.8 Aug 05

JBoss Seam 2 in Red Hat JBoss EAP 4.3.0 fails to sanitize JBoss Expression Language inputs, allowing remote attackers to

CVE-2012-1723 CRITICAL POC
9.8 Jun 16

Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 update 4 and earlier, 6 up

CVE-2013-0422 CRITICAL POC
9.8 Jan 10

Multiple vulnerabilities in Oracle Java 7 before Update 11 allow remote attackers to execute arbitrary code by (1) using

CVE-2012-0507 CRITICAL POC
9.8 Jun 07

Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 2 and earlier, 6 Up

CVE-2015-4852 CRITICAL POC
9.8 Nov 18

The WLS Security component in Oracle WebLogic Server 10.3.6.0, 12.1.2.0, 12.1.3.0, and 12.2.1.0 allows remote attackers

CVE-2012-5076 CRITICAL POC
9.8 Oct 16

Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 7 and earlier allow

CVE-2017-3066 CRITICAL POC
9.8 Apr 27

Remote unauthenticated attackers can execute arbitrary code on Adobe ColdFusion servers through Java deserialization fla

CVE-2012-0391 CRITICAL POC
9.8 Jan 08

The ExceptionDelegator component in Apache Struts before 2.2.3.1 interprets parameter values as OGNL expressions during

Vendor StatusVendor

SUSE

Severity: Moderate
Product Status
SUSE Linux Enterprise Desktop 15 SP7 Affected
SUSE Linux Enterprise High Performance Computing 15 SP7 Affected
SUSE Linux Enterprise Module for Development Tools 15 SP7 Affected
SUSE Linux Enterprise Server 15 SP7 Affected
SUSE Linux Enterprise Server 16.0 Affected

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy