CVE-2026-69206: Http4s: DigestAuth allows replay of captured requests
Http4s is a Scala interface for HTTP services. Prior to 0.23.35 and 1.0.0-M47, DigestAuth replay protection records lastNc plus one instead of the highest nonce-count value it has accepted. When a legitimate client sends noncontiguous nc values because of parallel or retried requests, the stored counter remains below the accepted maximum, allowing a passive observer to replay a captured Authorization header multiple times. Successful replays execute authenticated requests, including state-changing operations, as the captured user. This issue is fixed in versions 0.23.35 and 1.0.0-M47.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
http4sto a version that resolves this vulnerability.Fixed in 0.23.35 - Upgrade
Upgrade
http4sto a version that resolves this vulnerability.Fixed in 1.0.0-M47
Event History
Frequently Asked Questions
Which deployments are exposed to replay attacks?
Deployments using Http4s DigestAuth before versions 0.23.35 or 1.0.0-M47 are affected when legitimate clients send noncontiguous nonce-count values, such as through parallel or retried requests.
What does an attacker need to exploit this issue?
An attacker must passively capture a valid Digest Authorization header from a legitimate request. They can then replay that header multiple times when the server's recorded nonce-count remains below the highest value it accepted.
What is the impact of a successful replay?
A successful replay executes the authenticated request as the captured user. This can include state-changing operations.
How can the issue be remediated?
Upgrade Http4s to version 0.23.35 or 1.0.0-M47, which fix the replay-protection counter handling.