Skip to main content

BC-FJA EUVDEUVD-2026-54726

| CVE-2026-13505 HIGH
Missing Release of Resource after Effective Lifetime (CWE-772)
2026-08-08 bcorg GHSA-98j2-6v39-78w8
8.7
CVSS 4.0 · Vendor: bcorg
View

Attack ChainAIDerived

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

  1. Access
    Target network-facing app using BC-FJA on Java 12+ JVM
  2. Delivery
    Send sustained high-volume cryptographic requests
  3. Exploit
    Allocate key objects faster than finalizer thread retires them
  4. Execution
    Pending-finalization queue grows without bound
  5. Persist
    JVM raises OutOfMemoryError
  6. Impact
    Application process crashes

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Resource cleanup on lifecycle end
Exploitation Conditions

The vulnerability is triggered when: (1) the application uses BC-FJA specifically - not bcprov or BC-LTS; (2) the JVM version is Java 9 or later, with the OutOfMemoryError path most reliably manifesting on Java 12+ where finalization has been de-emphasized and on Java 18+ where it is deprecated for removal; and (3) the rate of BC-FJA cryptographic object allocation exceeds what the single finalizer thread can retire - typically requiring sustained or high-throughput load. For the availability (OOM) impact the limiting factor is load level: low-traffic deployments are unlikely to exhaust the finalizer queue, so the practical DoS risk scales with request volume. For the key-material-lingering concern no load threshold is required - any unfixed deployment on Java 9+ fails to guarantee prompt zeroisation. No special feature flags or non-default configurations are needed; the flaw is intrinsic to how the affected class hierarchy implements zeroisation.

Impact

The provided CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H, score 8.7, Amber urgency) captures the primary availability threat but rates confidentiality impact as none (VC:N), which conflicts with the reporter-assigned 'Information Disclosure' tag and the CVE description's explicit concern that key material 'stays resident in the heap for as long as they are queued, defeating the purpose of the zeroisation.' This discrepancy is worth flagging: the VC:N scoring reflects that no attacker directly reads the key data through this vulnerability alone; a second-step heap access (heap dump, memory forensics, or a separate arbitrary-read primitive) would be needed. The availability risk is more straightforwardly exploitable - an attacker who can drive sustained cryptographic workload through a network-facing BC-FJA application can cause OutOfMemoryError. No EPSS score was provided. There is no CISA KEV listing and no known public proof-of-concept. The real-world priority is highest for Java FIPS compliance deployments (finance, healthcare, government) running on Java 12+ JVMs under network-accessible load; organizations still on Java 8 or Java 11 are not affected by the OOM path, though the key zeroisation design flaw is present in all unfixed versions. The fix is available and well-defined, making this a straightforward patch-and-verify remediation rather than a complex mitigate-in-place situation.

Exploit ScenarioDerived

A threat actor targeting a financial services API that uses BC-FJA for FIPS-compliant TLS key operations on a Java 17 JVM sends a sustained high-volume stream of requests that each cause BC-FJA to instantiate and discard AES or DESede engine objects. The single JVM finalizer thread cannot retire the pending-finalization queue fast enough, causing heap exhaustion and an OutOfMemoryError that crashes the API process. Separately, if the attacker also possesses a heap-dump or memory-read primitive (e.g., through a concurrent deserialization vulnerability), the unzeroed key material resident in the queue can be extracted. No public proof-of-concept exists for this scenario.

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 08, 2026

Cryptographic key material in Bouncy Castle for Java FIPS (BC-FJA) persists in the JVM heap far beyond its intended lifetime on Java 12 and later runtimes because the library's zeroisation scheme relies on Object.finalize(), a mechanism progressively de-emphasized since Java 9 and deprecated for removal in Java 18. Under load, the single finalizer thread cannot retire pending objects as fast as they are allocated, causing the queue to grow without bound - resulting in an OutOfMemoryError that crashes the application and defeating the cryptographic hygiene goal of prompt key zeroisation. No public exploit is identified at time of analysis; however, any network-accessible application built on BC-FJA prior to the fixed versions is exposed to both a remotely triggerable denial-of-service and prolonged in-memory residence of sensitive key material.

RemediationAI

Upgrade to one of the patched releases: bc-fips 1.0.2.7 (for the 1.0.X series), 2.0.2 (for the 2.0.X series), or 2.1.3 (for the 2.1.X series). The fix replaces the Object.finalize()-based zeroisation with a java.lang.ref.Cleaner-backed scheme in a multi-release jdk1.9 JAR overlay, ensuring prompt deterministic cleanup on Java 9 and later. Full vendor advisory is at https://github.com/bcgit/bc-java/wiki/CVE%E2%80%902026%E2%80%9013505. If an immediate upgrade is not possible, organizations running on Java 8 or Java 11 can confirm they are not exposed to the OutOfMemoryError degradation path, though the key-material-lingering concern still applies on those platforms in theory. As a short-term workaround on Java 9+ environments, tuning the JVM's GC aggressiveness (e.g., reducing GC pause targets or increasing heap headroom) may delay OOM onset but does not fix the root cause and does not address the key zeroisation failure - this trade-off must be clearly communicated to security auditors. The only complete remediation is patching.

Affected VersionsENISA

BC-FJA 2.0.0 <2.0.2
BC-FJA 1.0.0 <1.0.2.7
BC-FJA 2.1.0 <2.1.3

Affected Packages

maven org.bouncycastle:bc-fips fix: 1.0.2.7, 2.0.2, 2.1.3
euvd bc_fja fix: 1.0.2.7, 2.0.2, 2.1.3

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 2 packages in maven, euvd

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

Technical ContextAI · show details

BC-FJA (cpe:2.3:a:legion_of_the_bouncy_castle_inc.:bc-fja:*:*:*:*:*:*:*:*) is the FIPS 140-validated edition of the Bouncy Castle Java cryptographic library. The vulnerability is classified CWE-772 (Missing Release of Resource after Effective Lifetime). The affected classes - AES and DESede cipher engines, SP 800-90A DRBG implementations, SymmetricSecretKey, and PBKD and scrypt parameter classes - all override Object.finalize() to zero out key material when the garbage collector discards the object. The Java specification guarantees only that finalize() will be called before the object is reclaimed, not when: a single JVM-wide finalizer thread services all registered finalizers, and if the production rate of finalizable objects exceeds the retirement rate that thread can sustain, the pending-finalization queue grows unbounded. On Java 8 and Java 11 the finalizer thread was sufficiently aggressive that this did not manifest as a practical problem. Starting with Java 12, and accelerating through Java 18 (JEP 421 deprecated finalization for removal), the JVM's investment in timely finalization has been reduced, making the race condition exploitable at realistic load. The fix replaces finalize() with java.lang.ref.Cleaner (introduced in Java 9) via a multi-release JAR jdk1.9 overlay, giving the garbage collector a phantom-reference-based callback that does not depend on the finalizer thread. The non-FIPS editions of Bouncy Castle (bcprov and BC-LTS) never implemented this zeroisation scheme and are not affected.

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 8.2 HIGH

AV:N and PR:N because load is triggerable via unauthenticated network requests; C:L added over official VC:N to reflect unzeroed key material lingering in heap beyond intended lifetime.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:H/SC:N/SI:N/SA:N
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

Lifecycle Timeline

2
Patch available
Aug 08, 2026 - 02:01 EUVD
CVE Published
Aug 08, 2026 - 00:59 cve.org
HIGH 8.7

DescriptionCVE.org

In 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), sensitive key material held by the AES and DESede engines, the SP 800-90A DRBGs, SymmetricSecretKey and the PBKD and scrypt parameter classes was zeroised on garbage collection by overriding Object.finalize. Finalization runs at an unspecified time and in an unspecified order and is serviced by a single finalizer thread, so where objects carrying a finalizer are allocated faster than that thread retires them the pending-finalization queue grows without bound: disposal falls arbitrarily far behind, which can contribute to an OutOfMemoryError under load, and the key material those objects hold stays resident in the heap for as long as they are queued, defeating the purpose of the zeroisation. The behaviour was not a problem on Java 8 or Java 11; it is later JVMs, on which finalization has been deprecated and progressively de-emphasised, where it becomes one. Disposal of these classes now runs from a java.lang.ref.Cleaner registered in the multi-release jdk1.9 overlay, so on Java 9 and later it no longer depends on the finalizer being scheduled. Bouncy Castle for Java (bcprov) and Bouncy Castle for Java LTS are not affected, as neither implements the finalizer-based zeroisation scheme.

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 16 maven packages depend on org.bouncycastle:bc-fips (6 direct, 10 indirect)

Ecosystem-wide dependent count for version 2.0.0.

Executive ViewAI

Why It Matters

Applications relying on Bouncy Castle for Java FIPS (BC-FJA) are at risk of both denial-of-service crashes and prolonged exposure of cryptographic keys in memory, threatening operational continuity and encryption key confidentiality. Any organization running network-accessible Java services built on BC-FJA on Java 12 or later must prioritize immediate mitigation and patching.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations: (1) Enable aggressive JVM heap monitoring with automatic restart thresholds to prevent OutOfMemoryError crashes before they impact availability; (2) Deploy connection and request rate limiting to reduce object allocation velocity that accelerates finalizer queue overflow; (3) Isolate BC-FJA usage to dedicated JVM processes with strictly bounded heap sizes to contain impact; (4) Evaluate and prepare migration to alternative cryptographic libraries without finalization-based key zeroization (e.g., conscrypt, BoringSSL bindings); (5) Implement network segmentation to restrict BC-FJA application exposure to trusted internal infrastructure only.

Threat Intelligence Overview

EPSS Score
0.3%
Top 83% exploitable
Prevalence
Medium
FIPS-compliant Java crypto library, used primarily in regulated enterprise sectors
Threat Intel
1
1 source
Data Quality
6 sources
Confidence: High
EUVD NVD CVE.org EPSS GHSA 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· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact
High

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.

Related Vulnerabilities in Bouncy Castle BC-FJA Cryptographic Engine Flaws

View all 2

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

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