CVE-2021-29444: jose-browser-runtime padding oracle via timing discrepancy

CVE-2021-29444 · Severity: low · CVSS 3.1 · Published 2021-04-19

jose-browser-runtime is a JavaScript library for handling JSON Web Encryption (JWE) tokens in web browsers. A timing-based side-channel vulnerability allows an attacker to decrypt JWE messages encrypted with AES-CBC-HMAC algorithms without knowing the decryption key by observing execution time differences during decryption failures. An attacker can exploit this weakness to recover sensitive encrypted data, such as authentication tokens or session information, through repeated decryption attempts.

Vendors: npm.

Quick answers

Is CVE-2021-29444 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2021-29444 being exploited in the wild.
How severe is CVE-2021-29444?
Low severity, with a CVSS score of 3.1, published 19 April 2021.
Which products and versions are affected?
jose-browser-runtime (npm) SEMVER:introduced=0,fixed=3.11.4.
Is there a fix for CVE-2021-29444?
Yes. jose-browser-runtime (npm): upgrade to 3.11.4 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2021-29444 attacked?
It is attacked over the network.
Am I affected by CVE-2021-29444?
Check whether you run jose-browser-runtime (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

  • jose-browser-runtime (npm): upgrade to 3.11.4 or later
    npm install jose-browser-runtime@3.11.4

Technical details

The vulnerability is a padding oracle attack arising from observable timing discrepancies in the AES_CBC_HMAC_SHA2 decryption algorithm (A128CBC-HS256, A192CBC-HS384, A256CBC-HS512). The vulnerable code performs HMAC tag verification and CBC decryption in a specific order without constant-time comparison, causing measurable timing differences when padding validation fails versus when HMAC verification fails. An attacker with network access to a service using the library can issue crafted JWE payloads and measure response times to determine correct padding byte-by-byte, enabling full decryption without the key (approximately 128*b queries needed where b is the ciphertext block size). The fix ensures HMAC verification is performed before CBC decryption and uses constant-time comparison. Patched in version 3.11.4 and later.

Affected products

  • Jose jose-browser-runtime < 3.11.4

Identifiers

  • CVE-2021-29444
  • GHSA-94hh-pjjg-rwmr

Timeline

  • 2021-04-15: disclosed
  • 2021-04-15: patched: Fixed in version 3.11.4

References

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