Skip to main content

Bouncy Castle CVE-2026-59643

| EUVDEUVD-2026-52031 HIGH
Improper Verification of Cryptographic Signature (CWE-347)
2026-08-03 bcorg GHSA-r7xx-x336-xqqr
8.7
CVSS 4.0 · Vendor: bcorg
View

Attack ChainAIDerived

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

  1. Recon
    Obtain OpenPGP key trusted by target using weak hash (SHA-1/MD5)
  2. Delivery
    Create inline one-pass signed message
  3. Exploit
    Deliver message to application using vulnerable bc-java API
  4. Install
    Policy exception silently discarded in empty catch block
  5. C2
    Signature proceeds to cryptographic verify()
  6. Execute
    isTestedCorrect() returns true
  7. Impact
    Application trusts policy-violating signature as valid

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A04:2025 - Cryptographic Failures
ASVS 5.0
V11 - Cryptography Signature verification
Exploitation Conditions

The vulnerable code path is triggered exclusively by the inline one-pass OpenPGP signature verification flow, specifically OpenPGPMessageInputStream.OnePassSignatures.verify() in bc-java's high-level OpenPGP API. The detached-signature and prefixed-signature verification paths already handled the policy exception correctly and are NOT affected. Exploitation requires that: (1) the target application uses bc-java or bcpg-fips at a vulnerable version; (2) the application invokes the high-level OpenPGP API for inline signature verification rather than the low-level API; and (3) the attacker's signature uses an algorithm or key characteristic that triggers OpenPGPSignature.sanitize() to throw a PGPSignatureException - concretely, a hash algorithm prohibited by policy such as MD5, SHA-1, or RIPEMD-160, an unacceptable key, an unknown critical subpacket, or a pre-dated timestamp. The attacker's key must still produce a cryptographically valid signature (i.e., the key must be trusted by the verifier and the signature mathematically verifies), meaning this is a policy-bypass flaw rather than a signature forgery flaw against strong cryptography. Applications that do not perform OpenPGP inline signature verification are unaffected.

Impact

The CVSS 4.0 base vector (AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:N) scores 8.7, reflecting a straightforward unauthenticated network-reachable integrity failure with no confidentiality or availability component. This score is consistent with the nature of the bug: any sender can craft or forward a signed OpenPGP message using a weak-hash key, and the verifying application will accept it without requiring any special access or user interaction. The Urgency label is 'Amber' in the provided vector, indicating elevated but not immediate operational priority. No EPSS score was supplied in the input data, so exploitation probability cannot be quantified numerically. CVE is not listed in the CISA KEV catalog, and no public exploit code has been identified. However, the vulnerability is trivially exploitable in concept - any party holding an OpenPGP key that uses SHA-1 (historically very common) and is trusted by the target can exploit this without collision attacks. Applications that use OpenPGP signature verification as a hard security gate (e.g., software distribution pipelines, signed-message workflows, JWT-adjacent signing schemes as suggested by the 'Jwt Attack' tag) face meaningful real-world risk. The bc-fja (FIPS) variant is also affected, which widens impact to compliance-sensitive deployments. Risk is real and not merely a paper score inflation.

Exploit ScenarioDerived

An attacker holds an OpenPGP key pair that is trusted by a target application but was generated using SHA-1 as the hash algorithm - historically the default in many PGP implementations. The attacker signs a malicious or unauthorized document using the inline (one-pass) signature format and submits it to the target application. The vulnerable Bouncy Castle API swallows the policy rejection exception, reports the signature as valid via isTestedCorrect(), and the application proceeds to trust the document as if it met its cryptographic policy requirements. No public exploit code exists 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 inline-signature policy enforcement in Bouncy Castle for Java silently discards rejection exceptions, causing signatures that use prohibited weak hash algorithms (MD5, SHA-1, RIPEMD-160) or otherwise violate the configured OpenPGPPolicy to be reported as cryptographically valid. Affected are bc-java before 1.85 and bcpg-fips (bc-fja) before 2.0.13; the detached-signature and prefixed-signature verification paths are not affected - only the inline one-pass path. A vendor patch is available; no public exploit code has been identified at time of analysis, though the CVSS 4.0 score of 8.7 reflects a high integrity impact driven by the unauthenticated network vector.

RemediationAI

Upgrade bc-java to version 1.85 or later and bcpg-fips to 2.0.13 or later; both fix versions are confirmed by the vendor release notes in the linked commit (https://github.com/bcgit/bc-java/commit/d3f8cc408b4a36d28e5a410c93436fe3d0fe726b) and the advisory at https://github.com/bcgit/bc-java/wiki/CVE-2026-59643. SUSE and other downstream Linux distribution users should additionally apply distribution-provided security updates once available, as the SUSE tag indicates downstream packaging is affected. If immediate upgrade is not possible, a targeted workaround is to avoid relying on bc-java's high-level OpenPGP inline one-pass signature API (OpenPGPMessageInputStream) for security-critical signature verification until patched, and redirect affected workflows to use the detached-signature path, which correctly enforces policy. Alternatively, applications can add a post-verification step that independently inspects the hash algorithm of each returned signature object and explicitly rejects SHA-1, MD5, or RIPEMD-160 digests as a defense-in-depth measure. Note that these workarounds require application-level code changes and introduce operational overhead.

Affected VersionsENISA

BC-FJA 2.0.12 <2.0.13
BC-JAVA 1.81 <1.85

Affected Packages

euvd bc_fja fix: 2.0.13
euvd bc_java fix: 1.85

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

Bouncy Castle for Java (bc-java) is a widely used Java cryptography library implementing OpenPGP among many other standards. The vulnerability resides in OpenPGPMessageInputStream.OnePassSignatures.verify() in the high-level OpenPGP API (org.bouncycastle.openpgp.api). During inline one-pass signature verification, OpenPGPSignature.sanitize() enforces the library's OpenPGPPolicy, throwing a PGPSignatureException when a signature uses a weak or prohibited hash (MD5, SHA-1, RIPEMD-160), an unacceptable key, unknown critical subpackets, or pre-dated timestamps. The defect (CWE-347: Improper Verification of Cryptographic Signature) is that the catch block for PGPSignatureException contained only an empty '// continue' comment with no executable statement, so execution fell through: the signature proceeded to the cryptographic verify() call and was added to the results via getSignatures() / isTestedCorrect() as though it had passed policy. The commit diff confirms that the fix adds processor.onException(e) and a continue statement, skipping the offending signature and matching the already-correct behavior of the detached- and prefixed-signature paths. Affected CPEs: cpe:2.3:a:legion_of_the_bouncy_castle_inc.:bc-java:*:*:*:*:*:*:*:* (before 1.85) and cpe:2.3:a:legion_of_the_bouncy_castle_inc.:bc-fja:*:*:*:*:*:*:*:* (before bcpg-fips 2.0.13).

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

OpenPGP messages arrive over network without authentication; no user interaction on verifier side; impact is integrity-only as policy-violating signatures are silently accepted.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:N/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
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 inline-signature policy failures silently ignored. This issue also affects Bouncy Castle for Java FIPS (BC-FJA) before bcpg-fips 2.0.13.

Executive ViewAI

Why It Matters

Bouncy Castle for Java (bc-java and bcpg-fips) contains a signature validation bypass that silently accepts cryptographic signatures violating configured policy-signatures using weak hash algorithms (MD5, SHA-1) or non-compliant configurations are incorrectly reported as valid. Any application relying on Bouncy Castle for signature verification of documents, code, or messages cannot trust the cryptographic integrity guarantees, creating organizational exposure to fraudulent or tampered content being accepted undetected.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.2%
Top 93% exploitable
Prevalence
High
foundational Java cryptography library used across enterprise, banking, and security tooling
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: 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