GHSA-fm4g-76c9-7w69
Http4s: DigestAuth nonce map grows unbounded
Packages
| Ecosystem | Package | Affected | Fixed in |
|---|---|---|---|
| Maven | org.http4s:http4s-ember-server_2.12 | < 0.23.35 | 0.23.35 |
| Maven | org.http4s:http4s-ember-server_2.13 | < 0.23.35 | 0.23.35 |
| Maven | org.http4s:http4s-ember-server_3 | < 0.23.35 | 0.23.35 |
| Maven | org.http4s:http4s-ember-server_2.13 | >= 1.0.0-M1, < 1.0.0-M47 | 1.0.0-M47 |
| Maven | org.http4s:http4s-ember-server_3 | >= 1.0.0-M1, < 1.0.0-M47 | 1.0.0-M47 |
Details
As written in the advisory (Markdown source, shown as plain text).
The `DigestAuth` server middleware's stale-nonce cleanup uses an inverted comparison: it removes *fresh* nonces and stops at the first *stale* one. Because a new nonce is created for every unauthenticated challenge, an attacker can drive the nonce map to grow without bound until the JVM runs out of heap.
## Impact
Unauthenticated remote denial of service (gradual heap exhaustion / OOM) against
any service using DigestAuth. The leak is persistent.
## Preconditions
- Application uses `DigestAuth` on at least one route.
## Workarounds
- Front the DigestAuth protected routes with a rate limiter to slow the leak.
- Restart periodically.
## Fixes
- The eviction logic is corrected.
- A max cache size of 1000000 is imposed to protected against a burst between evictions. This limit is not yet configurable.
References
External links from the advisory. They lead to third-party sites.