CVE-2025-47934: OpenPGP.js Message Signature Verification Spoofing Vulnerability
Summary
CVE-2025-47934: OpenPGP.js's message signature verification can be spoofed. Affects openpgp across 2 version ranges.
>= 5.0.1, < 5.11.3
>= 6.0.0-alpha.0, < 6.1.1
Fixed in 5.11.3 or 6.1.1, depending on the release line you run. How to fix ↓
Check if this vulnerability affects your application
Upload a manifest or SBOM and we'll show whether you're affected, plus every other risky package in the same scan.
No signup required · Results in about 60 seconds
Background
OpenPGP.js is a widely used JavaScript library that implements the OpenPGP standard for encrypting and signing data. It allows developers to integrate secure communication features into their applications, providing functionalities such as message encryption, decryption, and signature verification. However, certain versions of OpenPGP.js are vulnerable to a spoofing attack that compromises the integrity of message signature verification.
Vulnerability Detail
The vulnerability in OpenPGP.js arises from the way the library handles message signature verification. A malicious actor can modify a signed message and pass it to the verification functions, openpgp.verify or openpgp.decrypt, leading these functions to return a valid signature verification result. This means that the data returned may not correspond to the original signed data, allowing attackers to spoof signatures of inline-signed and signed-and-encrypted messages. The flaw affects OpenPGP.js versions 5.0.1 to 5.11.2 and 6.0.0-alpha.0 to 6.1.0, while version 4 is not affected.
How To Fix
Latest published version: 6.3.2 as of 23 Oct 2026
npm install openpgp@6.3.2
Upgrading to it may include breaking changes; the versions below are the minimum fixed release for this vulnerability.
If you can't move to the latest
The minimum fixed version depends on the release line you run.
-
>= 5.0.1, < 5.11.35.11.3npm install openpgp@5.11.3 -
>= 6.0.0-alpha.0, < 6.1.16.1.1npm install openpgp@6.1.1
Tip — Not sure which release line you're on? Vulert can find the fix for the version you are using. Scan free →
Workaround
As a temporary workaround, when verifying inline-signed messages, extract the message and signature(s) from the message returned by openpgp.readMessage, and verify each signature as a detached signature by passing the signature and a new message containing only the data (created using openpgp.createMessage) to openpgp.verify. For signed-and-encrypted messages, decrypt and verify in two steps: first call openpgp.decrypt without verificationKeys, and then pass the returned signature(s) and a new message containing the decrypted data to openpgp.verify.
Conclusion
The OpenPGP.js vulnerability CVE-2025-47934 poses a significant risk by allowing attackers to spoof message signatures. It is crucial for developers using affected versions to update to the patched releases and implement workarounds to ensure the integrity of their applications' cryptographic operations.
See every vulnerability recorded for openpgp →
FAQ
CVE-2025-47934 is a vulnerability in OpenPGP.js that allows attackers to spoof message signature verifications, potentially compromising the integrity of signed messages.
OpenPGP.js versions 5.0.1 to 5.11.2 and 6.0.0-alpha.0 to 6.1.0 are affected by this vulnerability.
You can use Vulert, a tool that monitors and alerts for open-source vulnerabilities in real-time. By simply using your package-lock.json file, you can check for vulnerabilities without needing to install anything.
If you cannot update immediately, implement the suggested workarounds to mitigate the risk of exploitation until you can apply the patch.
More information can be found in the official advisory on GitHub and through security bulletins related to OpenPGP.js.
References
Related vulnerabilities
Recent vulnerabilities recorded for openpgp.