| Package | Affected versions | Patched versions |
|---|---|---|
| org.http4s:http4s-core | ≥ 1.0.0-M1, ≤ 1.0.0-M30 | |
| org.http4s:http4s-core_2.10 | ≥ 0.1.0, ≤ 0.9.3 | |
| org.http4s:http4s-core_2.11 | ≥ 0.1.0, ≤ 0.21.0-M1 | |
| org.http4s:http4s-core_2.12 | ≥ 0.1.0, < 0.21.34≥ 0.22.0, < 0.22.15≥ 0.23.0, < 0.23.17 | 0.21.340.22.150.23.17 |
| org.http4s:http4s-core_2.13 | ≥ 0.1.0, < 0.21.34≥ 0.22.0, < 0.22.15≥ 0.23.0, < 0.23.17≥ 1.0.0-M1, < 1.0.0-M38 | 0.21.340.22.150.23.171.0.0-M38 |
| http4s | = 1.0.0≥ 0.1.0, < 0.21.34≥ 0.22.0, < 0.22.15≥ 0.23.0, < 0.23.17 | 0.21.340.22.150.23.17 |
The User-Agent and Server header parsers are susceptible to a fatal error on certain inputs. In http4s, modeled headers are lazily parsed, so this only applies to services that explicitly request these typed headers.
val unsafe: Option[`User-Agent`] = req.headers.get(`User-Agent`)
val unsafe: Option[`User-Agent`] = req.headers.get[`User-Agent`]
val alsoUnsafe: Option[`Server`] = req.headers.get[Server]
Fixes are released in 0.21.34, 0.22.15, 0.23.17, and 1.0.0-M38.
val safe: Option[Header] = req.headers.get("User-Agent".ci)
// but don't do this
val unsafe = header.map(_.parsed)
val safe: Option[Header] = req.headers.get(ci"User-Agent")
Running one of these products? Scan your site to see whether it exposes a vulnerable version.
Scan my site free