Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSupply crafted BKS/UBER keystore with Integer.MAX_VALUE length fields
-
DeliveryApplication calls KeyStore.load() on attacker input
-
ExploitBcKeyStoreSpi reads declared length before MAC check
-
ExecutionJVM attempts unbounded heap allocation
-
PersistOutOfMemoryError crashes JVM or service thread
-
ImpactAvailability impact achieved
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Memory allocation limits
|
| Exploitation Conditions | The application must call KeyStore.load() on attacker-controlled data in BKS or UBER format. Exploitation is completely independent of the password supplied to KeyStore.load() because the unbounded allocation occurs in loadStore() before the integrity MAC is verified. No authentication to the Bouncy Castle library itself is required - the constraint is whether the attacker can influence what keystore data the application loads. This limits exploitation to: applications that accept keystore uploads or remote keystore paths, management interfaces that allow keystore configuration, or any pipeline where externally-sourced BKS/UBER files are processed. Applications that load keystores exclusively from static, application-controlled files on disk are not reachable from this attack path. User interaction in the CVSS context (UI:P) reflects that a human or automated process within the target environment must initiate the KeyStore.load() call. |
| Impact | The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:P/VA:H) correctly captures the core risk profile: network-reachable, low complexity, no privileges required, but dependent on an application or user action that causes KeyStore.load() to be called with attacker-supplied data (UI:P). The availability impact is High - a single crafted file can crash a JVM unconditionally. EPSS data was not provided, so exploitation probability cannot be quantified from that source; however, the combination of a public POC, a trivially small payload, and the pre-MAC bypass makes this mechanically straightforward for any attacker who can influence keystore input. KEV status is not confirmed, so this is not confirmed as actively exploited in production environments. The 'Information Disclosure' tag in the source data appears to be a mislabeling - the actual impact is pure availability (DoS), with no confidentiality or integrity consequences reflected in the CVSS vector. Real-world risk is moderate-to-high for applications that accept or process externally sourced BKS/UBER keystores; negligible where keystores are only loaded from trusted, application-controlled paths. |
| Exploit ScenarioDerived | An attacker who can supply a crafted BKS or UBER keystore file - for example via a file upload endpoint, a configuration interface, or a management API that accepts keystore imports - provides a file of a few dozen bytes with one or more length fields set to Integer.MAX_VALUE. When the target application calls KeyStore.load() on this file, BcKeyStoreSpi immediately attempts to allocate a ~2 GB array before reaching the HMAC check, triggering an OutOfMemoryError that crashes the JVM process or the thread handling the request. A POC was submitted by the researcher alongside the report, confirming this is mechanically trivial. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 03, 2026
Bouncy Castle for Java's BKS and UBER keystore implementation crashes with an OutOfMemoryError when loading a crafted keystore because heap allocation from stream-declared lengths occurs before the HMAC integrity check. Any application calling KeyStore.load() with attacker-controlled BKS or UBER keystore data is affected - bc-java before 1.85 and bc-lts-java before 2.73.12. A POC was submitted alongside the report, confirming that a file of just a few dozen bytes declaring Integer.MAX_VALUE-length fields is sufficient to exhaust JVM heap regardless of heap configuration or supplied password. No public exploit identified at time of analysis beyond the researcher's POC referenced in the patch commit.
RemediationAI
Upgrade bc-java to version 1.85 or later, or bc-lts-java to version 2.73.12 or later, per the vendor advisory at https://github.com/bcgit/bc-java/wiki/CVE-2026-12185. The upstream fix (commit 7bbd7fe5f44132e5b6140a2914435c12430eeb3d) replaces unbounded array allocations with a readBlock() method capped at 2 MiB (ENTRY_BUF_SIZE), switches certificate-chain decoding to incremental parsing, and adds explicit bounds checks on salt lengths. As a compensating control where patching is not immediately possible, restrict keystore loading to keystores sourced exclusively from trusted, application-controlled storage - never from user-supplied uploads, network paths, or external configuration. This does not fully eliminate risk if the application's own keystore storage could be tampered, but it substantially reduces attacker reachability. If BKS/UBER keystore format support is not required, migrating to PKCS12 format eliminates this code path entirely without availability trade-offs.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 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 vulnerable code resides in BcKeyStoreSpi.java within the org.bouncycastle.jcajce.provider.keystore.bc package, which implements the proprietary BKS and UBER keystore formats. The root cause (CWE-789, Uncontrolled Memory Allocation) is that length-prefixed fields - certificate chains, key blobs, secrets, sealed entries, and salt values - were deserialized using raw new byte[dIn.readInt()] calls, allocating the full attacker-declared size without any upper-bound check. The critical aggravating factor is sequencing: loadStore() performs these allocations before the HMAC integrity MAC is validated, so the password is irrelevant and no valid credential is needed to trigger the OOM. Affected CPEs are cpe:2.3:a:legion_of_the_bouncy_castle_inc.:bc-java and cpe:2.3:a:legion_of_the_bouncy_castle_inc.:bc-lts-java across all versions prior to the fix.
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
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/U:Amber
Network-reachable with no privileges; user/app interaction required to call KeyStore.load(); pure availability impact via OOM crash.
Primary rating from Vendor (bcorg).
CVSS VectorVendor: bcorg
DescriptionCVE.org
In Bouncy Castle for Java before 1.85, BKS/UBER keystore allocates from untrusted lengths before integrity check. This issue also affects Bouncy Castle for Java LTS before 2.73.12.
Executive ViewAI
Bouncy Castle for Java (bc-java and bc-lts-java) contains a denial-of-service vulnerability that crashes JVM instances when processing crafted keystore files, affecting any application using these cryptographic libraries to load untrusted keystores. Organizations relying on these libraries face immediate service availability risk if keystores from untrusted sources are processed.
Apply vendor patch.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Related Vulnerabilities in Bouncy Castle for Java Cryptographic Vulnerabilities
View all 23Oracle Java SE 7 Update 6 and earlier contains multiple sandbox bypass vulnerabilities via the ClassFinder and forName m
Remote code execution in IBM Sterling B2B Integrator, Sterling Integrator, and Tivoli Common Reporting allows unauthenti
Java Runtime Environment sandbox bypass via incorrect image channel verification in 2D component allows remote unauthent
Oracle Java SE JDK/JRE 7 and 6 Update 27 and earlier allows remote code execution with complete system compromise throug
JBoss Seam 2 in Red Hat JBoss EAP 4.3.0 fails to sanitize JBoss Expression Language inputs, allowing remote attackers to
Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 update 4 and earlier, 6 up
Multiple vulnerabilities in Oracle Java 7 before Update 11 allow remote attackers to execute arbitrary code by (1) using
Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 2 and earlier, 6 Up
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
Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 7 and earlier allow
Remote unauthenticated attackers can execute arbitrary code on Adobe ColdFusion servers through Java deserialization fla
The ExceptionDelegator component in Apache Struts before 2.2.3.1 interprets parameter values as OGNL expressions during
Same technique Information Disclosure
View allVendor 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 |
| SUSE Linux Enterprise Server 16.1 | Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP7 | Affected |
| SUSE Linux Enterprise Server for SAP applications 16.0 | Affected |
| SUSE Linux Enterprise Server for SAP applications 16.1 | Affected |
| openSUSE Leap 16.0 | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP4 | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP4-LTSS | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP5 | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP5-LTSS | Affected |
| SUSE Linux Enterprise Module for Development Tools 15 SP4 | Affected |
| SUSE Linux Enterprise Module for Development Tools 15 SP5 | Affected |
| SUSE Linux Enterprise Module for Development Tools 15 SP6 | Affected |
| SUSE Linux Enterprise Server 15 SP4 | Affected |
| SUSE Linux Enterprise Server 15 SP4-LTSS | Affected |
| SUSE Linux Enterprise Server 15 SP5 | Affected |
| SUSE Linux Enterprise Server 15 SP5-LTSS | Affected |
| SUSE Linux Enterprise Server 15 SP6 | Affected |
| SUSE Linux Enterprise Server 15 SP6-LTSS | Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP6 | Affected |
| SUSE Manager Proxy 4.3 | Affected |
| SUSE Manager Retail Branch Server 4.3 | Affected |
| SUSE Manager Server 4.3 | Affected |
| SUSE Enterprise Storage 7 | Affected |
| SUSE Enterprise Storage 7.1 | Affected |
| SUSE Linux Enterprise Desktop 15 SP2 | Affected |
| SUSE Linux Enterprise Desktop 15 SP3 | Affected |
| SUSE Linux Enterprise Desktop 15 SP4 | Affected |
| SUSE Linux Enterprise Desktop 15 SP5 | Affected |
| SUSE Linux Enterprise Desktop 15 SP6 | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP2 | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP2-ESPOS | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP2-LTSS | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP3 | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP3-ESPOS | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP3-LTSS | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP4-ESPOS | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP6 | Affected |
| SUSE Linux Enterprise Module for Development Tools 15 SP2 | Affected |
| SUSE Linux Enterprise Module for Development Tools 15 SP3 | Affected |
| SUSE Linux Enterprise Real Time 15 SP2 | Affected |
| SUSE Linux Enterprise Real Time 15 SP3 | Affected |
| SUSE Linux Enterprise Real Time 15 SP4 | Affected |
| SUSE Linux Enterprise Server 15 SP2 | Affected |
| SUSE Linux Enterprise Server 15 SP2-BCL | Affected |
| SUSE Linux Enterprise Server 15 SP2-LTSS | Affected |
| SUSE Linux Enterprise Server 15 SP3 | Affected |
| SUSE Linux Enterprise Server 15 SP3-BCL | Affected |
| SUSE Linux Enterprise Server 15 SP3-LTSS | Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP2 | Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP3 | Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP4 | Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP5 | Affected |
| SUSE Manager Proxy 4.1 | Affected |
| SUSE Manager Proxy 4.2 | Affected |
| SUSE Manager Retail Branch Server 4.1 | Affected |
| SUSE Manager Retail Branch Server 4.2 | Affected |
| SUSE Manager Server 4.1 | Affected |
| SUSE Manager Server 4.2 | Affected |
| openSUSE Leap 15.3 | Affected |
| openSUSE Leap 15.4 | Affected |
| openSUSE Leap 15.5 | Affected |
| openSUSE Leap 15.6 | Affected |
EUVD-2026-52021
GHSA-9mmj-j2r4-96mp
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB