Headline
GHSA-675f-rq2r-jw82: JWK Set's HTTP client only overwrites and appends JWK to local cache during refresh
Impact
The project’s provided HTTP client’s local JWK Set cache should do a full replacement when the goroutine refreshes the remote JWK Set. The current behavior is to overwrite or append. This is a security issue for use cases that utilize the provided auto-caching HTTP client and where key removal from a JWK Set is equivalent to revocation.
Example attack scenario:
- An attacker has stolen the private key for a key published in JWK Set.
- The publishers of that JWK Set remove that key from the JWK Set.
- Enough time has passed that the program using the auto-caching HTTP client found in
github.com/MicahParks/jwkset
v0.5.0-v0.5.21 has elapsed itsHTTPClientStorageOptions.RefreshInterval
duration, causing a refresh of the remote JWK Set. - The attacker is signing content (such as JWTs) with the stolen private key and the system has no other forms of revocation.
Patches
The affected auto-caching HTTP client was added in version v0.5.0
and fixed in v0.6.0
. Upgrade to v0.6.0
or later.
Workarounds
The only workaround would be to remove the provided auto-caching HTTP client and replace it with a custom implementation. This involves setting the HTTPClientStorageOptions.RefreshInterval
to zero (or not specifying the value). Upgrade to v0.6.0
is advised.
References
Please see the tracking issue on GitHub for additional details: https://github.com/MicahParks/jwkset/issues/40
- GitHub Advisory Database
- GitHub Reviewed
- CVE-2025-22149
JWK Set’s HTTP client only overwrites and appends JWK to local cache during refresh
Low severity GitHub Reviewed Published Jan 9, 2025 in MicahParks/jwkset • Updated Jan 9, 2025
Package
gomod github.com/MicahParks/jwkset (Go)
Affected versions
>= 0.5.0, <= 0.5.21
Impact
The project’s provided HTTP client’s local JWK Set cache should do a full replacement when the goroutine refreshes the remote JWK Set. The current behavior is to overwrite or append. This is a security issue for use cases that utilize the provided auto-caching HTTP client and where key removal from a JWK Set is equivalent to revocation.
Example attack scenario:
- An attacker has stolen the private key for a key published in JWK Set.
- The publishers of that JWK Set remove that key from the JWK Set.
- Enough time has passed that the program using the auto-caching HTTP client found in github.com/MicahParks/jwkset v0.5.0-v0.5.21 has elapsed its HTTPClientStorageOptions.RefreshInterval duration, causing a refresh of the remote JWK Set.
- The attacker is signing content (such as JWTs) with the stolen private key and the system has no other forms of revocation.
Patches
The affected auto-caching HTTP client was added in version v0.5.0 and fixed in v0.6.0. Upgrade to v0.6.0 or later.
Workarounds
The only workaround would be to remove the provided auto-caching HTTP client and replace it with a custom implementation. This involves setting the HTTPClientStorageOptions.RefreshInterval to zero (or not specifying the value). Upgrade to v0.6.0 is advised.
References
Please see the tracking issue on GitHub for additional details: MicahParks/jwkset#40
References
- GHSA-675f-rq2r-jw82
- MicahParks/jwkset#40
- MicahParks/jwkset#41
Published to the GitHub Advisory Database
Jan 9, 2025