VDB
Sign up
MEDIUM

GHSA-rm8v-mxj3-5rmq

github.com/lestrrat-go/jwx vulnerable to Potential Padding Oracle Attack

Quick fix

GHSA-rm8v-mxj3-5rmq — github.com/lestrrat-go/jwx/v2: upgrade to the fixed version with the command below.

go get github.com/lestrrat-go/jwx/v2@v2.0.11

Details

### Summary

Decrypting AES-CBC encrypted JWE has Potential Padding Oracle Attack Vulnerability.

### Details

On [v2.0.10](https://github.com/lestrrat-go/jwx/releases/tag/v2.0.10), decrypting AES-CBC encrypted JWE may return an error "failed to generate plaintext from decrypted blocks: invalid padding":

https://github.com/lestrrat-go/jwx/blob/8840ffd4afc5839f591ff0e9ba9034af52b1643e/jwe/internal/aescbc/aescbc.go#L210-L213

Reporting padding error causes [Padding Oracle Attack](https://en.wikipedia.org/wiki/Padding_oracle_attack) Vulnerability. RFC 7516 JSON Web Encryption (JWE) says that we **MUST NOT** do this.

> 11.5. Timing Attacks > To mitigate the attacks described in RFC 3218 [RFC3218], the > recipient MUST NOT distinguish between format, padding, and length > errors of encrypted keys. It is strongly recommended, in the event > of receiving an improperly formatted key, that the recipient > substitute a randomly generated CEK and proceed to the next step, to > mitigate timing attacks.

In addition, the time to remove padding depends on the length of the padding. It may leak the length of the padding by Timing Attacks.

https://github.com/lestrrat-go/jwx/blob/796b2a9101cf7e7cb66455e4d97f3c158ee10904/jwe/internal/aescbc/aescbc.go#L33-L66

To mitigate Timing Attacks, it MUST be done in constant time.

### Impact

The authentication tag is verified, so it is not an immediate attack.

Are you affected?

Enter the version of the package you're using.

Affected packages

Go/github.com/lestrrat-go/jwx/v2
Introduced in: 0Fixed in: 2.0.11
Fixgo get github.com/lestrrat-go/jwx/v2@v2.0.11
Go/github.com/lestrrat-go/jwx
Introduced in: 0Fixed in: 1.2.26
Fixgo get github.com/lestrrat-go/jwx@v1.2.26

References