Защитный разбор Netty и ghsa-c69g-56f8-xwqj: применимость, обратимый тест «однозначное преобразование authority и Host перед HTTP/2 to HTTP/1.x routing», измеримый исход, stop-rule и пакет для поддержки.
Определите, относится ли сигнал к Netty
Сначала исследуется не severity, а граница «однозначное преобразование authority и Host перед HTTP/2 to HTTP/1.x routing». Запишите версию живого процесса, build digest, путь загруженного компонента, способ установки и включённую функцию. Advisory перечисляет «io.netty:netty-codec-http2 >= 4.2.0.Final, <= 4.2.15.Final; first patched 4.2.16.Final | io.netty:netty-codec-http2 < 4.1.136.Final; first patched 4.1.136.Final», однако зависимость в manifest не равна доказанной runtime-версии. Отдельно установите, достижим ли путь в вашей конфигурации и какой субъект его вызывает. Если provenance или reachability не подтверждены, оставьте статус unknown.
Фактическая рамка GHSA-c69g-56f8-xwqj
Reviewed record опубликован 2026-07-22, обновлён 2026-07-22 и формулирует проблему как «Netty: [codec-http2] Lack of Host Header Deduplication in HTTP/2→HTTP/1.x Translation Leads to Request Routing Bypass». Package boundaries: «io.netty:netty-codec-http2 >= 4.2.0.Final, <= 4.2.15.Final; first patched 4.2.16.Final | io.netty:netty-codec-http2 < 4.1.136.Final; first patched 4.1.136.Final». Upstream https://github.com/netty/netty подтверждает происхождение кода, но не состояние вашей установки. Даты, affected range и механизм берутся из прямой advisory-страницы. Ни Reviewed record, ни форумный лид не доказывают атаку, ущерб, спрос, индексацию или позицию.
Отдельная боль и наблюдаемые точки: однозначное преобразование authority и Host перед HTTP/2 to HTTP/1.x routing
Узкая пользовательская боль: два Host-представления могут дать security filter и downstream router разные цели маршрута. Чтобы не спутать её с ошибкой стенда, заранее задайте независимые поля артефакта: матрица authority-count / host-count / translated-host / filter-result / route-count. Normal-control обязателен: одна authority формирует ровно один ожидаемый Host и выбирает mock route. Только после него запускают один граничный case. Marker не должен быть credential, реальным идентификатором или пользовательским содержимым. Такое разделение даёт проверяемое дерево решения и не превращает timeout, падение или неверную роль в подтверждение механизма.
Безопасный обратимый опыт
Создайте EmbeddedChannel, два documentation host, translation handler, route counters и no-network pipeline. Затем нужно прогнать matching normal headers и один duplicate-host fixture, записывая headers до filter и после translation. Все операции выполняются в локальной или одноразовой среде с пределами wall-time, CPU, памяти, файлов, сокетов и запросов. Ожидаемый защитный результат задан до запуска: normal ветвь создаёт один Host, duplicate fixture отклоняется до router, оба route counters остаются нулевыми. Не используйте production secrets, настоящие документы, внутренние адреса, пользовательские логи или публичные цели. После граничного case очистите fixture, повторите normal-control и сравните baseline digest.
Правило решения без догадок
Решение хранится как матрица authority-count / host-count / translated-host / filter-result / route-count. Passed возможен, когда одновременно наблюдается «normal ветвь создаёт один Host, duplicate fixture отклоняется до router, оба route counters остаются нулевыми», normal-control успешен и cleanup возвращает baseline. Failed фиксируют лишь после воспроизводимого расхождения с тем же fixture и лимитами. Not-applicable требует доказанной runtime-версии вне range либо документированно выключенного пути. Unknown остаётся при неполном provenance, нестабильном trace или неоднозначной конфигурации. Одного status code, падения или отсутствия события недостаточно.
Остановка, обновление и пакет для поддержки
Stop-rule этого опыта: закрыть channel при любом routing duplicate fixture. Если runtime входит в affected range, обновление получают из доверенного канала https://github.com/netty/netty, после чего повторяют ровно тот же fixture с прежними лимитами; новый сценарий не подтверждает исправление старого. В обезличенный пакет включают runtime version, digest, конфигурационную ветвь, expected/observed, измеренные лимиты, timestamps, error class и хэши fixtures. Исключите токены, cookies, IP, внутренние имена, абсолютные пути и содержимое данных. Инструкция не обещает абсолютную защищённость.
Материал подготовлен редакцией VOne с помощью ИИ; даты, диапазоны, прямые ссылки, безопасный опыт и отсутствие рекламных обещаний затем перепроверены по первичным источникам.
Источники и проверка
- GitHub Reviewed Advisory ghsa-c69g-56f8-xwqj проверено 2026-08-31
- Upstream-репозиторий netty/netty проверено 2026-08-31
Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.