Skip to main content

Bouncy Castle Java CVE-2026-58059

| EUVDEUVD-2026-52092 HIGH
Inefficient Algorithmic Complexity (CWE-407)
2026-08-03 bcorg GHSA-4mwx-9cgq-h2wp
8.7
CVSS 4.0 · Vendor: bcorg
View

Attack ChainAIDerived

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

  1. Access
    Present crafted TLS cert or LDAP response with special-character-dense RDN
  2. Delivery
    Application parses DN into X500Name object
  3. Exploit
    Application invokes toString()/equals()/hashCode()
  4. Execution
    O(n²) RFC 4514 escaping loop executes in IETFUtils.valueToString()
  5. Persist
    Thread stalls consuming CPU core
  6. Impact
    Service availability degraded or lost

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V2 - Validation and Business Logic Algorithmic complexity limits
Exploitation Conditions

The vulnerable code path in IETFUtils.valueToString() is triggered whenever the application calls X500Name.toString(), .equals(), or .hashCode() on an X500Name instance whose attribute value contains a high density of RFC 4514 special characters (comma ,, double-quote ", backslash \, plus +, equals =, angle brackets < >, semicolon ;) or many leading or trailing ASCII spaces. Exploitation requires that an attacker control the content of at least one RDN attribute in a distinguished name that the application subsequently stringifies - common entry points include TLS client certificate subject/issuer DN processing, LDAP search result parsing, and CSR handling. The CVSS PR:N reflects that in TLS scenarios the certificate is presented and parsed before application-layer authentication occurs. Exploitation is limited to applications that both (1) accept X.500 distinguished names from untrusted sources and (2) invoke any of the three triggering methods on the parsed name; raw-byte certificate relay proxies that never invoke these methods are not exposed. No non-default configuration flag is required - any use of the affected API against attacker-supplied input is sufficient.

Impact

The CVSS 4.0 score of 8.7 with vector AV:N/AC:L/AT:N/PR:N/UI:N/VA:H reflects a network-reachable, zero-prerequisite denial-of-service path consistent with scenarios where applications parse attacker-controlled TLS certificates or LDAP-sourced distinguished names. Impact is exclusively availability (VC:N/VI:N/VA:H/SC:N/SI:N/SA:N), meaning there is no risk of data exposure or tampering. No EPSS data was provided in the intelligence sources, and this vulnerability is absent from CISA KEV, so confirmed active exploitation has not been observed. The urgency modifier U:Amber in the CVSS 4.0 vector indicates anticipated targeted rather than widespread exploitation. Real-world exploitability depends critically on whether attacker-controlled X.500 distinguished names reach X500Name.toString() in the application - in network-facing certificate processing this path is plausible without authentication; in purely internal PKI pipelines the exposure is substantially lower. Patch availability reduces urgency further, but the algorithmic nature of the flaw means a single crafted request could stall a CPU thread, making it operationally significant for any Internet-facing Java service performing certificate validation or LDAP directory lookups. Overall, this is a genuine medium-high operational priority for affected environments with network exposure.

Exploit ScenarioDerived

An attacker submits a TLS client certificate whose subject distinguished name contains a single RDN attribute value composed of 100,000 comma characters. The target Java application calls X500Name.toString() to log or compare the certificate subject, triggering the O(n²) escaping loop in IETFUtils.valueToString(), which performs approximately 5 billion character-copy operations within a single thread. The thread stalls, consuming a full CPU core; repeated submissions across multiple connections degrade or halt the service. No public exploit code beyond the vendor's own regression test has been identified at time of analysis.

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

CPU exhaustion in Bouncy Castle for Java allows remote attackers to cause denial of service by supplying X.500 distinguished name attribute values densely packed with RFC 4514 special characters or leading/trailing spaces. The root cause is a quadratic-time O(n²) escaping algorithm in IETFUtils.valueToString() that inserts backslashes into the buffer being actively scanned - triggerable through X500Name.toString(), .equals(), or .hashCode(), methods commonly invoked during TLS certificate and LDAP DN processing. No public exploit has been identified beyond the vendor's own regression test, and this vulnerability is not listed in CISA KEV, though the CVSS 4.0 score of 8.7 with AV:N/PR:N signals meaningful exposure for Internet-facing Java services.

RemediationAI

Upgrade bc-java to version 1.85 or later, bc-lts-java to version 2.73.12 or later, and bc-fja to 1.0.2.7 (1.0.X series), 2.0.2 (2.0.X series), or 2.1.3 (2.1.X series) or later as applicable. The upstream patch commit is at https://github.com/bcgit/bc-java/commit/7bf20eea8c1b71a4d3574b75ba20ccf26ffff36b and the vendor advisory at https://github.com/bcgit/bc-java/wiki/CVE-2026-58059. If immediate patching is not feasible, applications that accept X.500 distinguished names from untrusted sources should enforce strict input length limits on RDN attribute values before passing them to Bouncy Castle - constraining attribute values to a few hundred characters prevents the quadratic expansion from reaching CPU-exhausting scale, though this introduces a compliance gap for legitimately long attribute values and must be tuned per application. For TLS-facing services, disabling mutual TLS (mTLS) client certificate authentication where not required eliminates the most common unauthenticated entry point, at the cost of removing client identity verification. No other compensating control directly addresses the algorithmic flaw without patching.

Affected VersionsENISA

BC-FJA 1.0.0 <1.0.2.7
BC-FJA 2.0.0 <2.0.2
BC-JAVA 0 <1.85
BC-LTS-JAVA 2.73.0 <2.73.12
BC-FJA 2.1.0 <2.1.3

Affected Packages

euvd bc_fja fix: 1.0.2.7, 2.0.2, 2.1.3
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 root cause is CWE-407 (Algorithmic Complexity), specifically a quadratic-time O(n²) string escaping implementation in IETFUtils.valueToString() within core/src/main/java/org/bouncycastle/asn1/x500/style/IETFUtils.java. When escaping RFC 4514 special characters (comma, double-quote, backslash, plus, equals, angle brackets, semicolon) in X.500 distinguished name attribute values, the original code called StringBuilder.insert() to prepend a backslash while scanning the same buffer forward. Each insert() is O(n) because it shifts all subsequent characters; for an input of n special characters the total cost is O(n²). The commit diff confirms the fix rewrites the algorithm to write escaped output into a fresh StringBuilder in a single linear pass, leaving output semantically identical. The code paths X500Name.toString(), .equals(), and .hashCode() all funnel through IETFUtils.valueToString(), making any application operation that stringifies or compares an X500Name a potential trigger. Affected CPEs are cpe:2.3:a:legion_of_the_bouncy_castle_inc.:bc-java:*:*:*:*:*:*:*:*, cpe:2.3:a:legion_of_the_bouncy_castle_inc.:bc-lts-java:*:*:*:*:*:*:*:*, and cpe:2.3:a:legion_of_the_bouncy_castle_inc.:bc-fja:*:*:*:*:*:*:*:*. Bouncy Castle is a broadly used Java cryptographic library providing ASN.1, X.509, PKI, and TLS primitives.

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 via TLS/LDAP before authentication; no interaction required; pure availability impact 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 7.5 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
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, Quadratic-time escaping when stringifying X.500 distinguished names. This issue also affects Bouncy Castle for Java LTS before 2.73.12, and Bouncy Castle for Java FIPS (BC-FJA) before bc-fips 1.0.2.7 (1.0.X series), 2.0.2 (2.0.X series) and 2.1.3 (2.1.X series).

Executive ViewAI

Why It Matters

Bouncy Castle for Java contains a denial-of-service vulnerability (CVE-2026-58059) enabling remote, unauthenticated attackers to exhaust CPU resources through malformed X.500 certificate distinguished names. Although no public exploit has been identified to date, this affects any Java service performing certificate validation, LDAP operations, or TLS authentication, potentially causing application downtime across authentication and identity infrastructure.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.3%
Top 75% exploitable
Prevalence
High
popular Java cryptographic library, widely used in enterprise Java and Android
Data Quality
8 sources
Confidence: High
EUVD 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: Important
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