Skip to main content

Bouncy Castle Java EUVDEUVD-2026-52136

| CVE-2026-12817 HIGH
Improper Validation of Integrity Check Value (CWE-354)
2026-08-03 bcorg GHSA-9q38-7pr7-8j6w
8.7
CVSS 4.0 · Vendor: bcorg
View

Attack ChainAIDerived

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

  1. Recon
    Intercept or obtain write access to OpenPGP AEAD ciphertext
  2. Delivery
    Identify or induce chunk-aligned plaintext length
  3. Exploit
    Strip one or more trailing ciphertext chunks and the final authentication tag
  4. Install
    Adjust outer OpenPGP packet length to match truncated ciphertext
  5. C2
    Deliver tampered ciphertext to target application
  6. Execute
    Bouncy Castle AEAD stream processes surviving chunks, skips final tag, signals EOF
  7. Impact
    Application receives truncated plaintext silently accepted as authentic

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A08:2025 - Software or Data Integrity Failures
ASVS 5.0
V15 - Secure Coding and Architecture Integrity verification
Exploitation Conditions

Two concurrent conditions are required for exploitation. First, the plaintext encrypted under OpenPGP AEAD must be an exact multiple of the configured AEAD chunk length - this is an inherent numerical property of the data rather than a configurable option, meaning it occurs naturally for a non-trivial fraction of real-world messages and files. Second, the attacker must be able to modify the OpenPGP ciphertext after it is produced - either via a network-level man-in-the-middle position or direct write access to the file or message store holding encrypted data. The vulnerability is scoped strictly to the OpenPGP AEAD decryption path (SEIPDv2 per RFC 9580 and the legacy v5 AEAD packet); standard MDC-protected PGP messages (SEIPDv1) use a separate code path and are not affected. Confidentiality of surviving ciphertext chunks is not compromised because each chunk's individual AEAD tag remains intact and valid; only integrity of the overall message length and the presence of trailing chunks is bypassed.

Impact

The provided CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:N) scores 8.7, reflecting a network-reachable unauthenticated integrity bypass with no stated attack complexity. Real-world risk is genuine but gated: exploitation requires the attacker to both reach a position where they can modify OpenPGP ciphertext (MITM or storage write access) and encounter a chunk-aligned plaintext, which is a natural property of certain file sizes rather than a configuration knob. The integrity failure mode is entirely silent - no exception is raised, verify() returns true, and the recipient application receives truncated plaintext with no indication of tampering - making detection difficult without supplementary out-of-band integrity checks. No EPSS data was provided in the input. No public exploit code exists and the vulnerability is not in CISA KEV, suggesting exploitation has not been observed in the wild at time of analysis. However, the combination of a widely-deployed library, a silent failure mode, and the complete absence of a backstop in the verify() method makes this a genuine remediation priority for any application relying on OpenPGP AEAD for message authenticity - particularly document signing workflows, secure file transfer pipelines, and encrypted email systems.

Exploit ScenarioDerived

An attacker with write access to stored OpenPGP AEAD-encrypted files - or positioned as a man-in-the-middle on the encrypted message transport - identifies a ciphertext whose plaintext length is a multiple of the AEAD chunk size, strips one or more trailing data chunks along with the final authentication tag, and patches the outer OpenPGP packet length field to reflect the reduced size. When the intended recipient's Bouncy Castle-based application decrypts the message, each surviving chunk passes its individual tag check, the decrypting stream reaches EOF without verifying the missing final tag, and PGPEncryptedData.verify() returns true - causing the application to silently process truncated plaintext as a fully authentic, unmodified message. No public proof-of-concept code has been identified at time of analysis.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.2% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Aug 03, 2026

OpenPGP AEAD decryption in Bouncy Castle for Java silently bypasses the final authentication tag when plaintext is an exact multiple of the AEAD chunk length, allowing an attacker who can tamper with ciphertext to strip trailing plaintext chunks and have the truncated message accepted as cryptographically authentic. Affected libraries span bc-java before 1.85, bc-lts-java before 2.73.12, and all three active BC-FJA FIPS series before their respective bcpg-fips 1.0.13, 2.0.13, and 2.1.13 releases. No public exploit has been identified at time of analysis and this CVE is not listed in CISA KEV, but the CVSS 4.0 score of 8.7 (Integrity: High) reflects a complete and silent bypass of AEAD integrity guarantees for chunk-aligned messages with no downstream exception or warning.

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 the appropriate BC-FJA FIPS release - bcpg-fips 1.0.13 for the 1.0.X series, bcpg-fips 2.0.13 for the 2.0.X series, or bcpg-fips 2.1.13 for the 2.1.X series. The fix is confirmed by upstream commit https://github.com/bcgit/bc-java/commit/4b712819846ec944379f4909101abac20f0ad4b0, which introduces a verifyFinalTag() method invoked unconditionally before EOF is signalled in both the Bc and Jce decryptors. The vendor advisory at https://github.com/bcgit/bc-java/wiki/CVE-2026-12817 should be consulted for additional guidance. If an immediate upgrade is not feasible, the only effective compensating control is to avoid relying on OpenPGP AEAD (SEIPDv2 or v5 AEAD packet) for message integrity and instead use MDC-protected traditional PGP (SEIPDv1), whose verification path is not affected by this defect; this trades off AEAD performance and per-chunk authentication benefits. A secondary mitigation is to add an application-layer integrity check (e.g., a detached signature or hash verified via an out-of-band channel) on all decrypted PGP payloads before acting on their contents, though this adds architectural complexity and does not fix the underlying library defect.

Affected VersionsENISA

BC-LTS-JAVA 2.73.0 <2.73.12
BC-FJA 2.0.0 <2.0.13
BC-FJA 2.1.0 <2.1.13
BC-FJA 1.0.7 <1.0.13
BC-JAVA 1.74 <1.85

Affected Packages

euvd bc_fja fix: 1.0.13, 2.0.13, 2.1.13
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 (Legion of the Bouncy Castle Inc.) is the dominant open-source Java cryptographic library, embedded across enterprise, Android, and server-side Java applications. The affected code paths are BcAEADUtil and JceAEADUtil, which implement OpenPGP Authenticated Encryption with Associated Data per RFC 9580 SEIPDv2 and the earlier v5 AEAD packet format. Under the OpenPGP AEAD scheme, plaintext is divided into fixed-size chunks; each chunk carries its own AEAD authentication tag, and a trailing message-level final tag authenticating the total plaintext length is appended last (RFC 9580 §5.13.2). CWE-354 (Improper Validation of Integrity Check Value) captures the root cause precisely: the decrypting stream's look-ahead pre-read the final trailing tag into the buffer, but the full-size-chunk processing path never submitted that buffer to cipher.doFinal(); EOF was signalled without the tag ever being verified. The short-final-chunk path did call doFinal correctly, meaning only non-aligned plaintexts received full integrity verification. Compounding the defect, PGPEncryptedData.verify() was coded to return true unconditionally for all AEAD-decrypted messages, providing no secondary backstop when the stream failed to throw.

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:H/VA:N/SC:N/SI:N/SA:N/U:Amber
vuln.today AI 5.9 MEDIUM

Requires both ciphertext tamper access and a chunk-aligned plaintext, warranting AC:H; no authentication needed and no confidentiality or availability impact.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:N
4.0 AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N
SUSE 7.5 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A: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
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, OpenPGP AEAD decryption skips final tag on chunk-aligned data. This issue also affects Bouncy Castle for Java LTS before 2.73.12, and Bouncy Castle for Java FIPS (BC-FJA) before bcpg-fips 1.0.13 (1.0.X series), 2.0.13 (2.0.X series) and 2.1.13 (2.1.X series).

Executive ViewAI

Why It Matters

Bouncy Castle for Java (bc-java, bc-lts-java, and BC-FJA FIPS variants) contains a cryptographic authentication bypass in OpenPGP AEAD decryption that silently accepts truncated or forged messages under specific conditions, with no public exploit identified at time of analysis. Organizations using these libraries for message authentication risk accepting compromised data without operator detection or warning. The silent failure mode poses significant integrity risk to any system relying on Bouncy Castle for cryptographic message validation.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.2%
Top 95% exploitable
Prevalence
High
dominant Java crypto library embedded across enterprise and Android ecosystems
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.2%
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
openSUSE Leap 16.0 Fixed
openSUSE Tumbleweed Fixed
SUSE Linux Enterprise High Performance Computing 15 SP4-ESPOS Affected
SUSE Linux Enterprise High Performance Computing 15 SP4-LTSS Affected
SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS Affected

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