OpenPGP.js bug enables encrypted message spoofing

Security researchers are sounding the alarm over a fresh flaw in the JavaScript implementation of OpenPGP (OpenPGP.js) that allows both signed and encrypted messages to be spoofed.

Tracked as CVE-2025-47934 (8.7 – high), the vulnerability stems from the openpgp.verify and openpgp.decrypt functions. The advisory posted to the library’s GitHub repo states that a maliciously modified message can be passed to one of these functions and return a result indicating a valid signature without actually being signed.

No word from Proton yet, but given they are the maintainers of OpenPGP.js and almost certainly the largest user of it, I hope they’ll comment soon.

1 Like

In the article:

Daniel Huigens, cryptography team lead at Proton and head maintainer of OpenPGP.js, said in the advisory that until they can upgrade, users should scrutinize any ostensibly signed message they receive and verify each signature as a detached one.

For signed-and-encrypted messages, Huigens suggested verifying their legitimacy in two steps. First, call openpgp.decrypt without verificationKeys, and then pass the returned signatures and a new message containing decrypted data to openpgp.verify.

1 Like