Защитный разбор Jetty Digest Authentication и ghsa-2fvj-hgj9-j2gr: применимость, обратимый тест «сопоставление исходной Unicode identity без lossy character substitution в Digest Authentication», измеримый исход, stop-rule и пакет для поддержки.
Определите, относится ли сигнал к Jetty Digest Authentication
Сначала исследуется не severity, а граница «сопоставление исходной Unicode identity без lossy character substitution в Digest Authentication». Запишите версию живого процесса, build digest, путь загруженного компонента, способ установки и включённую функцию. Advisory перечисляет «org.eclipse.jetty:jetty-security >= 9.4.0.v20161208, <= 9.4.58.v20250814; first patched 9.4.63 | org.eclipse.jetty:jetty-security >= 10.0.0, <= 10.0.26; first patched 10.0.31 | org.eclipse.jetty:jetty-security >= 11.0.0, <= 11.0.26; first patched 11.0.31 | org.eclipse.jetty:jetty-security >= 12.0.0, <= 12.0.35; first patched 12.0.36 | org.eclipse.jetty.ee8:jetty-ee8-security >= 12.0.0, <= 12.0.35; first patched 12.0.36 | org.eclipse.jetty.ee9:jetty-ee9-security >= 12.0.0, <= 12.0.35; first patched 12.0.36 | org.eclipse.jetty:jetty-security >= 12.1.0, <= 12.1.9; first patched 12.1.10 | org.eclipse.jetty.ee8:jetty-ee8-security >= 12.1.0, <= 12.1.9; first patched 12.1.10 | org.eclipse.jetty.ee9:jetty-ee9-security >= 12.1.0, <= 12.1.9; first patched 12.1.10», однако зависимость в manifest не равна доказанной runtime-версии. Отдельно установите, достижим ли путь в вашей конфигурации и какой субъект его вызывает. Если provenance или reachability не подтверждены, оставьте статус unknown.
Фактическая рамка GHSA-2fvj-hgj9-j2gr
Reviewed record опубликован 2026-07-22, обновлён 2026-07-22 и формулирует проблему как «Eclipse Jetty Digest Authentication: ISO-8859-1 lossy encoding allows authentication bypass via character substitution». Package boundaries: «org.eclipse.jetty:jetty-security >= 9.4.0.v20161208, <= 9.4.58.v20250814; first patched 9.4.63 | org.eclipse.jetty:jetty-security >= 10.0.0, <= 10.0.26; first patched 10.0.31 | org.eclipse.jetty:jetty-security >= 11.0.0, <= 11.0.26; first patched 11.0.31 | org.eclipse.jetty:jetty-security >= 12.0.0, <= 12.0.35; first patched 12.0.36 | org.eclipse.jetty.ee8:jetty-ee8-security >= 12.0.0, <= 12.0.35; first patched 12.0.36 | org.eclipse.jetty.ee9:jetty-ee9-security >= 12.0.0, <= 12.0.35; first patched 12.0.36 | org.eclipse.jetty:jetty-security >= 12.1.0, <= 12.1.9; first patched 12.1.10 | org.eclipse.jetty.ee8:jetty-ee8-security >= 12.1.0, <= 12.1.9; first patched 12.1.10 | org.eclipse.jetty.ee9:jetty-ee9-security >= 12.1.0, <= 12.1.9; first patched 12.1.10». Upstream https://github.com/jetty/jetty.project подтверждает происхождение кода, но не состояние вашей установки. Даты, affected range и механизм берутся из прямой advisory-страницы. Ни Reviewed record, ни форумный лид не доказывают атаку, ущерб, спрос, индексацию или позицию.
Отдельная боль и наблюдаемые точки: сопоставление исходной Unicode identity без lossy character substitution в Digest Authentication
Узкая пользовательская боль: две разные тестовые identity могут получить одинаковое байтовое представление и неверное решение аутентификации. Чтобы не спутать её с ошибкой стенда, заранее задайте независимые поля артефакта: таблица identity-digest / encoding-result / realm-key / auth-result / account-match-count. Normal-control обязателен: одна ASCII identity с тестовым credential получает ожидаемый результат в local realm. Только после него запускают один граничный case. Marker не должен быть credential, реальным идентификатором или пользовательским содержимым. Такое разделение даёт проверяемое дерево решения и не превращает timeout, падение или неверную роль в подтверждение механизма.
Безопасный обратимый опыт
Создайте локальный realm, две фиктивные Unicode identity, deterministic nonce, auth decision recorder и нулевые реальные accounts. Затем нужно сравнить normal ASCII identity и пару distinct Unicode fixtures, не перебирая пароли и не обращаясь к production. Все операции выполняются в локальной или одноразовой среде с пределами wall-time, CPU, памяти, файлов, сокетов и запросов. Ожидаемый защитный результат задан до запуска: normal identity проходит свой control, lossy pair не связывается с одной учётной записью и получает deny. Не используйте production secrets, настоящие документы, внутренние адреса, пользовательские логи или публичные цели. После граничного case очистите fixture, повторите normal-control и сравните baseline digest.
Правило решения без догадок
Решение хранится как таблица identity-digest / encoding-result / realm-key / auth-result / account-match-count. Passed возможен, когда одновременно наблюдается «normal identity проходит свой control, lossy pair не связывается с одной учётной записью и получает deny», normal-control успешен и cleanup возвращает baseline. Failed фиксируют лишь после воспроизводимого расхождения с тем же fixture и лимитами. Not-applicable требует доказанной runtime-версии вне range либо документированно выключенного пути. Unknown остаётся при неполном provenance, нестабильном trace или неоднозначной конфигурации. Одного status code, падения или отсутствия события недостаточно.
Остановка, обновление и пакет для поддержки
Stop-rule этого опыта: прекратить при любом account match для lossy fixture. Если runtime входит в affected range, обновление получают из доверенного канала https://github.com/jetty/jetty.project, после чего повторяют ровно тот же fixture с прежними лимитами; новый сценарий не подтверждает исправление старого. В обезличенный пакет включают runtime version, digest, конфигурационную ветвь, expected/observed, измеренные лимиты, timestamps, error class и хэши fixtures. Исключите токены, cookies, IP, внутренние имена, абсолютные пути и содержимое данных. Инструкция не обещает абсолютную защищённость.
Материал подготовлен редакцией VOne с помощью ИИ; даты, диапазоны, прямые ссылки, безопасный опыт и отсутствие рекламных обещаний затем перепроверены по первичным источникам.
Источники и проверка
- GitHub Reviewed Advisory ghsa-2fvj-hgj9-j2gr проверено 2026-08-31
- Upstream-репозиторий jetty/jetty.project проверено 2026-08-31
Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.