CVE-2023-41037: OpenPGP.js cleartext signed message signature spoofing

CVE-2023-41037 · Severity: low · CVSS 3.1 · Published 2023-08-29

OpenPGP.js is a JavaScript library that encrypts and verifies digitally signed messages. An attacker can inject fake unsigned text into a cleartext signed message to make it appear legitimate when read directly, potentially deceiving users who visually inspect the message without checking the library's verified data field.

Technologies: openpgp (npm). Vendors: npm.

Quick answers

Is CVE-2023-41037 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2023-41037 being exploited in the wild.
How severe is CVE-2023-41037?
Low severity, with a CVSS score of 3.1, published 29 August 2023.
Which products and versions are affected?
openpgp (npm) SEMVER:introduced=0,fixed=4.10.11.
Is there a fix for CVE-2023-41037?
Yes. openpgp (npm): upgrade to 4.10.11 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2023-41037 attacked?
It is attacked over the network.
Am I affected by CVE-2023-41037?
Check whether you run openpgp (npm) at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

How to fix

  • openpgp (npm): upgrade to 4.10.11 or later
    npm install openpgp@4.10.11

Technical details

OpenPGP.js versions up to 5.9.0 failed to validate cleartext signed messages correctly, ignoring any data preceding the "Hash: ..." header during signature verification. An attacker can prepend arbitrary unsigned text to a legitimate signed message; the library still reports the signature as verified but only actually signed the portion after the Hash header. Exploitation requires user interaction—specifically, a user or application trusting the visible message content rather than checking the verificationResult.data field. The vulnerability is mitigated if applications programmatically verify the actual signed data (verificationResult.data) or re-armor messages via armor(). Patched versions 5.10.1 (current) and 4.10.11 (legacy) now reject malformed cleartext messages.

Affected products

  • OpenPGP.js openpgp 4.10.10 and earlier, 5.0.0 to 5.10.0

Identifiers

  • CVE-2023-41037
  • GHSA-ch3c-v47x-4pgp

Timeline

  • 2023-08-29: disclosed
  • 2023-08-29: patched: Patches released: v5.10.1 and v4.10.11

References

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.