In Eclipse Jetty, the Digest authentication server-side component uses ISO-8859-1 to encode the password as bytes.
This was done because the initial specification for HTTP did not specify explicitly a charset, and it was assumed to be ISO-8859-1 for historical reasons.
If the password contains characters that cannot be represented in ISO-8859-1, they are silently replaced by ?. This happens with passwords that contain Chinese, Cyrillic or Greek characters, for example: αβ123 converts to ??123.
An attacker can send a request with a digest Authorization header crafted with a password made of only ? characters; the server would match any password of the same length that contains non-ISO-8859-1 characters.
Recent HTTP Digest RFC-7616 supports a charset parameters that defaults to UTF-8 that allows for correct encoding/decoding of passwords.
The product does not properly handle when an input uses an alternate encoding that is valid for the control sphere to which the input is being sent.
| Name | Vendor | Start Version | End Version |
|---|---|---|---|
| Jetty | Eclipse | 9.4.0 (including) | 9.4.63 (excluding) |
| Jetty | Eclipse | 10.0.0 (including) | 10.0.31 (excluding) |
| Jetty | Eclipse | 11.0.0 (including) | 11.0.31 (excluding) |
| Jetty | Eclipse | 12.0.0 (including) | 12.0.36 (excluding) |
| Jetty | Eclipse | 12.1.0 (including) | 12.1.10 (excluding) |