GitHub Advisoryadvisory · Packagist
GHSA-7322-jrq4-x5hf File reference keys leads to incorrect hashes on HMAC algorithms
MEDIUM
Official page ↗
- Aliases
- CVE-2021-41106
- Ecosystem
- Packagist
- Packages
- lcobucci/jwt
- Severity
- Moderate
- CVSS vector
- CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N
- Weaknesses
- CWE-345
- Reviewed
- 2021-09-28
Affected packages
• Packagist lcobucci/jwt: >= 3.4.0, < 3.4.6 → fixed in 3.4.6
• Packagist lcobucci/jwt: >= 4.0.0, < 4.0.4 → fixed in 4.0.4
• Packagist lcobucci/jwt: >= 4.1.0, < 4.1.5 → fixed in 4.1.5
Description
Impact
Users of HMAC-based algorithms (HS256, HS384, and HS512) combined with `Lcobucci\JWT\Signer\Key\LocalFileReference` as key are having their tokens issued/validated using the file path as hashing key - instead of the contents.
The HMAC hashing functions take any string as input and, since users can issue and validate tokens, people are lead to believe that everything works properly.
Patches
All versions have been patched to always load the file contents, deprecated the `Lcobucci\JWT\Signer\Key\LocalFileReference`, and suggest `Lcobucci\JWT\Signer\Key\InMemory` as the alternative.
Workarounds
Use `Lcobucci\JWT\Signer\Key\InMemory` instead of `Lcobucci\JWT\Signer\Key\LocalFileReference` to create the instances of your keys:
```diff
-use Lcobucci\JWT\Signer\Key\LocalFileReference;
+use Lcobucci\JWT\Signer\Key\InMemory;
-$key = LocalFileReference::file(__DIR__ . '/public-key.pem');
+$key = InMemory::file(__DIR__ . '/public-key.pem');
```
Related
Alias · CVE (1)
- CVE-2021-41106 JWT is a library to work with JSON Web Token and JSON Web Signature. vulnerability
Weakness · CWE (1)
- CWE-345 Insufficient Verification of Data Authenticity weakness
References
- https://github.com/lcobucci/jwt/security/advisories/GHSA-7322-jrq4-x5hf web
- https://nvd.nist.gov/vuln/detail/CVE-2021-41106 advisory
- https://github.com/lcobucci/jwt/commit/8175de5b841fbe3fd97d2d49b3fc15c4ecb39a73 web
- https://github.com/lcobucci/jwt/commit/c45bb8b961a8e742d8f6b88ef5ff1bd5cca5d01c web
- https://github.com/FriendsOfPHP/security-advisories/blob/master/lcobucci/jwt/CVE-2021-41106.yaml web
- https://github.com/lcobucci/jwt package