Skip to content

Padding Oracle Attack due to Observable Timing Discrepancy in jose

Moderate severity GitHub Reviewed Published Apr 15, 2021 in panva/jose • Updated Feb 1, 2023

Package

npm jose (npm)

Affected versions

>= 1.0.0, < 1.28.1
>= 2.0.0, < 2.0.5
>= 3.0.0, < 3.11.4

Patched versions

1.28.1
2.0.5
3.11.4

Description

jose is an npm library providing a number of cryptographic operations.

Impact

AES_CBC_HMAC_SHA2 Algorithm (A128CBC-HS256, A192CBC-HS384, A256CBC-HS512) decryption would always execute both HMAC tag verification and CBC decryption, if either failed JWEDecryptionFailed would be thrown. But a possibly observable difference in timing when padding error would occur while decrypting the ciphertext makes a padding oracle and an adversary might be able to make use of that oracle to decrypt data without knowing the decryption key by issuing on average 128*b calls to the padding oracle (where b is the number of bytes in the ciphertext block).

Patches

All major release versions have had a patch released which ensures the HMAC tag is verified before performing CBC decryption. The fixed versions are ^1.28.1 || ^2.0.5 || >=3.11.4.

Users should upgrade their v1.x dependency to ^1.28.1, their v2.x dependency to ^2.0.5, and their v3.x dependency to ^3.11.4

Credits

Thanks to Morgan Brown of Microsoft for bringing this up and Eva Sarafianou (@esarafianou) for helping to score this advisory.

References

@panva panva published to panva/jose Apr 15, 2021
Published by the National Vulnerability Database Apr 16, 2021
Reviewed Apr 16, 2021
Published to the GitHub Advisory Database Apr 19, 2021
Last updated Feb 1, 2023

Severity

Moderate
5.9
/ 10

CVSS base metrics

Attack vector
Network
Attack complexity
High
Privileges required
None
User interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
None
Availability
None
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N

CVE ID

CVE-2021-29443

GHSA ID

GHSA-58f5-hfqc-jgch

Source code

No known source code
Checking history
See something to contribute? Suggest improvements for this vulnerability.