GHSA-9xww-74xv-gjfpMediumCVSS 5.9
Http4s: DigestAuth allows replay of captured requests
🔗 CVE IDs covered (1)
📋 Description
The DigestAuth replay defence stores lastNc + 1 rather than the nonce-count (nc) value it just accepted. When a legitimate client sends non-contiguous nc values (parallel or retried requests, as browsers do), the server's counter lags behind the highest nc seen, and a captured Authorization header can be replayed multiple times.
Impact
A passive observer can turn one captured Digest-authenticated request into several replayed authenticated (state-changing) requests, defeating the core replay protection Digest provides over Basic.
Preconditions
- Application uses
DigestAuth. - Attacker can passively observe at least one legitimate digest request.
- Legitimate client emits an
ncmore than one greater than the last, for instance from a parallel or retried request.
Workarounds
- Deploy over TLS so requests cannot be captured.
🎯 Affected products5
- maven/org.http4s:http4s-ember-core_2.12:<= 0.23.34
- maven/org.http4s:http4s-ember-core_2.13:<= 0.23.34
- maven/org.http4s:http4s-ember-core_3:<= 0.23.34
- maven/org.http4s:http4s-ember-core_2.13:>= 1.0.0-M1, <= 1.0.0-M46
- maven/org.http4s:http4s-ember-core_3:>= 1.0.0-M1, <= 1.0.0-M46
🔗 References (5)
- https://github.com/http4s/http4s/security/advisories/GHSA-9xww-74xv-gjfp
- https://github.com/http4s/http4s/commit/7f065101c45f3d86bc105e8fc6323c2c4a11471f
- https://github.com/http4s/http4s/releases/tag/v0.23.35
- https://github.com/http4s/http4s/releases/tag/v1.0.0-M47
- https://github.com/advisories/GHSA-9xww-74xv-gjfp