Executive brief
Bouncy Castle is a widely-used cryptographic library for Java applications. This vulnerability allows the CMS signature verification function to incorrectly return success when validating a signed message with zero signers, bypassing security controls. Applications relying on Bouncy Castle to verify digital signatures may accept forged or tampired messages as legitimate, potentially compromising data integrity and authentication.
Technical details
This vulnerability is a cryptographic validation bypass in the Bouncy Castle CMS (Cryptographic Message Syntax) module. The verifySignatures method incorrectly returns true for SignedData objects containing zero signers, a condition that should fail validation. The root cause is insufficient input validation on the signer list before performing verification checks. No authentication or special network access is required; any application using the affected verifySignatures API is at risk if it processes untrusted CMS SignedData. An attacker can craft a forged SignedData message with no valid signers and have it accepted as legitimate, enabling message forgery and tampering attacks. Patches are available in Bouncy Castle for Java 1.85+, Java LTS 2.73.12+, and Bouncy Castle for Java FIPS in bcpkix-fips 1.0.12, 2.0.12, and 2.1.12.
Affected products
- Bouncy Castle Bouncy Castle for Java before 1.85
- Bouncy Castle Bouncy Castle for Java LTS before 2.73.12
- Bouncy Castle Bouncy Castle for Java FIPS bcpkix-fips before 1.0.12 (1.0.X series), before 2.0.12 (2.0.X series), before 2.1.12 (2.1.X series)
Timeline
- 2026-08-03: disclosed: Vulnerability disclosed and published on NVD