You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
David Hook edited this page Aug 3, 2026
·
1 revision
Title: OpenPGP CFB quick-check oracle active on symmetric/session-key paths.
Issue affecting: BC before 1.85, BC-LTS before 2.73.12, BC-FJA before bcpg-fips 1.0.13, 2.0.13 and 2.1.13.
Fixed versions: BC 1.85, BC-LTS 2.73.12, BC-FJA bcpg-fips 1.0.13, 2.0.13 and 2.1.13.
Platform affected: Java 8 and later.
In Bouncy Castle's OpenPGP implementation, PGPSymmetricKeyEncryptedData.getDataStream() (reached via PGPPBEEncryptedData, PGPSessionKeyEncryptedData, and the high-level OpenPGPMessageProcessor even for PKESK-unwrapped keys) still performs the CFB 'quick check' on the two repeated IV bytes and throws PGPDataValidationException before the MDC is verified. PGPPublicKeyEncryptedData already skips this check to avoid the Mister-Zuccherato oracle, but the symmetric/session-key path does not, and no system property gates it. An attacker with adaptive chosen-ciphertext access to a decryption endpoint can distinguish the early quick-check failure from later MDC/parse failures. This oracle lets them recover two plaintext bytes per roughly 2^15 queries against SEIPDv1 messages.