Skip to main content

Bouncy Castle Java CVE-2026-59646

| EUVDEUVD-2026-52028 HIGH
Memory Allocation with Excessive Size Value (CWE-789)
2026-08-03 bcorg GHSA-4m8h-6737-hrw6
8.7
CVSS 4.0 · Vendor: bcorg
View

Attack ChainAIDerived

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

  1. Access
    Identify DTLS UDP endpoint on target
  2. Delivery
    Send crafted handshake fragment with maximum 24-bit declared length
  3. Exploit
    Trigger unchecked 16MB heap allocation pre-authentication
  4. Execution
    Repeat at high rate across connections
  5. Impact
    Exhaust JVM heap and crash service

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Memory allocation limits
Exploitation Conditions

The target application must use Bouncy Castle's DTLS stack (bc-java, bc-lts-java, or bctls-fips) for network communication and must have a DTLS endpoint reachable by the attacker over UDP. The vulnerable allocation occurs pre-authentication - no valid credentials, prior session state, or completed handshake is required. Because DTLS is UDP-based, source address spoofing is possible on networks lacking BCP38 filtering, enabling amplification-style DoS from spoofed sources. Exploitation is scoped exclusively to the DTLS handshake path; applications using Bouncy Castle only for TLS/TCP, JCE cryptographic operations (signing, encryption), or PKIX without a DTLS transport layer are not vulnerable via this code path. Sustained or repeated connection attempts are likely required to exhaust memory on a well-provisioned JVM rather than a single packet, which may provide a detection window in network flow monitoring.

Impact

The CVSS 4.0 score of 8.7 (AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H) accurately reflects the threat model: any unauthenticated network attacker can trigger repeated large heap allocations with crafted UDP packets, and no special attack preconditions are required. Impact is limited entirely to availability; the CVSS vector confirms no confidentiality or integrity exposure. Notably, the 'Information Disclosure' tag in the source intelligence is inconsistent with the CVSS impact metrics (VC:N) - no confidentiality impact is established by the description or the patch diff, and this tag appears to be a classification artifact or secondary concern not elaborated in the advisory; security teams should not assume data exposure. EPSS data was not provided, leaving quantified exploitation probability unestimated from that source. The vulnerability is not in CISA KEV and no public exploit code has been identified, reducing urgency somewhat relative to the raw score. However, AV:N/AC:L/PR:N/UI:N makes this trivially automatable against any internet-exposed DTLS endpoint. Real-world risk is highest for Java services using Bouncy Castle's DTLS stack exposed to untrusted networks (e.g., DTLS-based IoT gateways, VoIP, WebRTC backends, or FIPS-regulated financial services using BC-FJA). Applications using Bouncy Castle only for TLS-over-TCP or for non-transport cryptography are unaffected by this specific path.

Exploit ScenarioDerived

An attacker with UDP reachability to a Java server's DTLS port sends a flood of crafted DTLS handshake records, each advertising a 24-bit message length near the maximum (~16MB), targeting the reassembler before any handshake authentication completes. Each malicious record causes the server to allocate a large heap buffer; repeated at sufficient rate, this exhausts the JVM heap and triggers an OutOfMemoryError, crashing the service or causing severe degradation. No public exploit code has been released, but the attack requires only UDP socket access and knowledge of the DTLS record format, both of which are publicly documented.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
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

Memory exhaustion denial-of-service in Bouncy Castle's DTLS implementation allows remote unauthenticated attackers to crash or degrade Java applications by sending crafted handshake messages with inflated 24-bit length fields. Affected are bc-java before 1.85, bc-lts-java before 2.73.12, and BC-FJA (bctls-fips) before 1.0.24, 2.0.24, or 2.1.24 depending on the deployed branch. The buffer allocation occurs pre-authentication during the DTLS handshake reassembly phase - before any signature or Finished verification - making this exploitable without credentials against any exposed DTLS endpoint. No public exploit code has been identified and the vulnerability is not listed in CISA KEV.

RemediationAI

The primary fix is to upgrade to a patched release: bc-java 1.85 or later, bc-lts-java 2.73.12 or later, or bctls-fips 1.0.24 (for 1.0.X deployments), 2.0.24 (for 2.0.X), or 2.1.24 (for 2.1.X). The upstream patch commits are available at https://github.com/bcgit/bc-java/commit/2ea38942c7917f6d7ab4de93d8a5336d021df0d9 and https://github.com/bcgit/bc-java/commit/2d98721e71bbd822ffa0f84e088eea645cf679fa; the advisory at https://github.com/bcgit/bc-java/wiki/CVE-2026-59646 should be treated as authoritative for confirmed artifact release versions. SUSE and other downstream distributors should be checked for updated packages. Where immediate patching is not possible, restrict inbound UDP traffic to DTLS-listening ports to known, trusted peers using firewall or security group rules - this eliminates the attack surface from arbitrary internet sources but does not protect against compromised or malicious trusted peers, and may not be feasible in open-service deployments. Reducing JVM heap size (-Xmx) shrinks the memory available for exhaustion and may cause faster OOM crashes rather than sustained degradation, but it does not prevent the vulnerability and may cause collateral availability issues for legitimate traffic.

Affected VersionsENISA

BC-FJA 1.0.0 <1.0.24
BC-FJA 2.1.0 <2.1.24
BC-FJA 2.0.0 <2.0.24
BC-JAVA 0 <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

Bouncy Castle is a widely used open-source Java cryptographic library covering three product lines (CPE: cpe:2.3:a:legion_of_the_bouncy_castle_inc.:bc-java, bc-lts-java, bc-fja). The root cause is CWE-789 (Uncontrolled Memory Allocation) in DTLSReliableHandshake.java. DTLS (Datagram TLS) operates over UDP and requires fragment reassembly because handshake messages may be split across multiple datagrams. The reassembler reads a 24-bit message length field from each incoming handshake record and allocates a buffer sized to that declared length - up to 16,777,215 bytes (16MB) per message - without any configured upper bound. Crucially, this allocation happens before any cryptographic material (signatures, Finished MAC) is verified, meaning an unauthenticated attacker controls the allocation size. The fix, in commits 2ea38942 and 2d98721e, introduces a maxHandshakeMessageSize parameter (defaulting to at least 1024 bytes, bounded by the application's configured maximum) propagated through DTLSClientProtocol and DTLSServerProtocol into DTLSReliableHandshake.processRecord(), which now silently drops records whose declared length exceeds the maximum rather than allocating the attacker-controlled buffer.

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

Vendor (bcorg) PRIMARY 8.7 HIGH
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/U:Amber
vuln.today AI 7.5 HIGH

Network-reachable pre-authentication DTLS endpoint requires no privileges or interaction; impact is availability-only heap exhaustion with no scope change.

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

Primary rating from Vendor (bcorg).

CVSS VectorVendor: bcorg

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

DescriptionCVE.org

In Bouncy Castle for Java before 1.85, DTLS handshake reassembler allocates buffer from unchecked 24-bit length. 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's DTLS implementation contains a remote, unauthenticated denial-of-service vulnerability affecting Java applications across bc-java, bc-lts-java, and BC-FJA libraries. Attackers can crash or significantly degrade exposed services by exploiting memory exhaustion during the handshake phase without requiring valid credentials. Organizations running DTLS-enabled Java services face immediate service disruption risk until patched.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.3%
Top 79% exploitable
Prevalence
High
widely used Java cryptographic library across enterprise, FIPS, and Android ecosystems
Data Quality
8 sources
Confidence: High
EUVD 🇯🇵JVN NVD CVE.org EPSS Vulnrichment Vendor GitHub VulDB

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 HIGH
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
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
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact
High
Technical Impact
Partial

Priority Score

44
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +44
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