В Eclipse Jetty серверный компонент дайджест-аутентификации использует ISO-8859-1 для кодирования пароля в байтах. Это было сделано потому, что первоначальная спецификация HTTP явно не указывала кодировку, и по историческим причинам предполагалось, что это ISO-8859-1. Если пароль содержит символы, которые не могут быть представлены в ISO-8859-1, они автоматически заменяются на `?`.
Это происходит с паролями, содержащими китайские, кириллические или греческие символы, например: `αβ123` преобразуется в `??123`. Злоумышленник может отправить запрос с дайджест-заголовком `Authorization`, созданным с паролем, состоящим только из символов `?`; сервер будет соответствовать любому паролю той же длины, который содержит символы, отличные от ISO-8859-1. Последний HTTP-дайджест [RFC-7616] (https://datatracker.ietf.org/doc/html/rfc7616) поддерживает параметры `charset`, которые по умолчанию имеют значение UTF-8, что позволяет правильно кодировать/декодировать пароли.
Показать оригинальное описание (EN)
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](https://datatracker.ietf.org/doc/html/rfc7616) supports a `charset` parameters that defaults to UTF-8 that allows for correct encoding/decoding of passwords.
Характеристики атаки
Последствия
Строка CVSS v4.0
Уязвимые продукты 5
| Конфигурация | От (включительно) | До (исключительно) |
|---|---|---|
|
Eclipse Jetty
cpe:2.3:a:eclipse:jetty:*:*:*:*:*:*:*:*
|
9.4.0
|
9.4.63
|
|
Eclipse Jetty
cpe:2.3:a:eclipse:jetty:*:*:*:*:*:*:*:*
|
10.0.0
|
10.0.31
|
|
Eclipse Jetty
cpe:2.3:a:eclipse:jetty:*:*:*:*:*:*:*:*
|
11.0.0
|
11.0.31
|
|
Eclipse Jetty
cpe:2.3:a:eclipse:jetty:*:*:*:*:*:*:*:*
|
12.0.0
|
12.0.36
|
|
Eclipse Jetty
cpe:2.3:a:eclipse:jetty:*:*:*:*:*:*:*:*
|
12.1.0
|
12.1.10
|