CVE-2026-71891: CWE-347 Improper Verification of Cryptographic Signature in Legion of the Bouncy Castle Inc. BC-JAVA
CVE-2026-71891 is a high-severity vulnerability in Bouncy Castle for Java versions 1.85 up to but not including 1.86. It involves improper verification of cryptographic signatures due to acceptance of public keys constructed on non-canonical elliptic curves that share the field characteristic of BLS12-381 but differ in curve parameters. This flaw allows an attacker to create a phantom signer in aggregate signature verification, bypassing proper subgroup checks. The vulnerability is only exploitable if an application explicitly constructs ECPoints on non-standard curves and uses them as authority keys; the standard compressed-point decoder is unaffected. The issue has been addressed by adding strict validation of the curve parameters before subgroup checks.
AI Analysis
Technical Summary
In Bouncy Castle for Java before version 1.86, the keyValidate method in BLS12_381BasicScheme and related classes accepted public keys built on foreign elliptic curves that share the BLS12-381 field characteristic but differ in curve equation and cofactor. The subgroup check trusted the curve's cofactor value, which could be forged to one, causing ECPoint.satisfiesOrder to return true incorrectly. Consequently, points not on the canonical G1 curve passed validation. In the pairing implementation, such points contribute the identity element, allowing aggregate signature verification to succeed despite missing valid signatures for those keys, effectively admitting phantom signers. The fix in version 1.86 enforces that the point's curve matches the canonical G1 field, equation, order, and cofactor before subgroup validation. This vulnerability is only reachable if applications construct ECPoints on explicit, non-canonical curves and accept them as valid keys; the standard 48-byte compressed-point decoder always uses the canonical curve and is unaffected.
Potential Impact
An attacker can exploit this vulnerability to forge aggregate signatures that include phantom signers, bypassing signature verification checks. This undermines the integrity of cryptographic operations relying on BLS12-381 signatures in affected Bouncy Castle Java versions. However, exploitation requires the application to explicitly construct ECPoints on non-canonical curves and accept them as valid public keys. Standard usage with the compressed-point decoder is not vulnerable. There are no known exploits in the wild.
Mitigation Recommendations
Upgrade Bouncy Castle for Java to version 1.86 or later, where the keyValidate method enforces strict curve parameter validation before subgroup checks. If upgrading is not immediately possible, ensure that applications do not construct ECPoints on explicit, non-canonical curves or accept such points as valid public keys. The standard compressed-point decoder remains safe. No other mitigation is indicated by the vendor.
CVE-2026-71891: CWE-347 Improper Verification of Cryptographic Signature in Legion of the Bouncy Castle Inc. BC-JAVA
Description
CVE-2026-71891 is a high-severity vulnerability in Bouncy Castle for Java versions 1.85 up to but not including 1.86. It involves improper verification of cryptographic signatures due to acceptance of public keys constructed on non-canonical elliptic curves that share the field characteristic of BLS12-381 but differ in curve parameters. This flaw allows an attacker to create a phantom signer in aggregate signature verification, bypassing proper subgroup checks. The vulnerability is only exploitable if an application explicitly constructs ECPoints on non-standard curves and uses them as authority keys; the standard compressed-point decoder is unaffected. The issue has been addressed by adding strict validation of the curve parameters before subgroup checks.
CVSS v4.0
Score 7.1high
Affected software
Legion of the Bouncy Castle Inc.
BC-JAVA
Run on your own infrastructure? Check whether these packages are installed with threat-finder — our free open-source scanner.
Weaknesses
AI-Powered Analysis
Machine-generated threat intelligence
Technical Analysis
In Bouncy Castle for Java before version 1.86, the keyValidate method in BLS12_381BasicScheme and related classes accepted public keys built on foreign elliptic curves that share the BLS12-381 field characteristic but differ in curve equation and cofactor. The subgroup check trusted the curve's cofactor value, which could be forged to one, causing ECPoint.satisfiesOrder to return true incorrectly. Consequently, points not on the canonical G1 curve passed validation. In the pairing implementation, such points contribute the identity element, allowing aggregate signature verification to succeed despite missing valid signatures for those keys, effectively admitting phantom signers. The fix in version 1.86 enforces that the point's curve matches the canonical G1 field, equation, order, and cofactor before subgroup validation. This vulnerability is only reachable if applications construct ECPoints on explicit, non-canonical curves and accept them as valid keys; the standard 48-byte compressed-point decoder always uses the canonical curve and is unaffected.
Potential Impact
An attacker can exploit this vulnerability to forge aggregate signatures that include phantom signers, bypassing signature verification checks. This undermines the integrity of cryptographic operations relying on BLS12-381 signatures in affected Bouncy Castle Java versions. However, exploitation requires the application to explicitly construct ECPoints on non-canonical curves and accept them as valid public keys. Standard usage with the compressed-point decoder is not vulnerable. There are no known exploits in the wild.
Mitigation Recommendations
Upgrade Bouncy Castle for Java to version 1.86 or later, where the keyValidate method enforces strict curve parameter validation before subgroup checks. If upgrading is not immediately possible, ensure that applications do not construct ECPoints on explicit, non-canonical curves or accept such points as valid public keys. The standard compressed-point decoder remains safe. No other mitigation is indicated by the vendor.
Technical Details
- Data Version
- 5.2
- Assigner Short Name
- bcorg
- Date Reserved
- 2026-08-08T00:06:07.401Z
- Cvss Version
- 4.0
- State
- PUBLISHED
Threat ID: 6ac11721a43b0b3b89cacf56
Added to database: 10/03/2026, 14:54:25 UTC
Last enriched: 10/03/2026, 14:55:24 UTC
Last updated: 10/04/2026, 05:45:56 UTC
Views: 11
Community Reviews
0 reviewsCrowdsource mitigation strategies, share intel context, and vote on the most helpful responses. Sign in to add your voice and help keep defenders ahead.
Want to contribute mitigation steps or threat intel context? Sign in or create an account to join the community discussion.
Actions
Updates to AI analysis require Pro Console access. Upgrade inside Console → Billing.
Need more coverage?
Upgrade to Pro Console for AI refresh and higher limits.
For incident response and remediation, OffSeq services can help resolve threats faster.
Latest Threats
Check if your credentials are on the dark web
Instant breach scanning across billions of leaked records. Free tier available.