Защитный разбор fast-uri и ghsa-v2hh-gcrm-f6hx: применимость, обратимый тест «канонизацию authority с literal backslash до выдачи scheme, host и path», измеримый исход и stop-rule.
Определите применимость к fast-uri
Сначала исследуется не severity, а граница «канонизацию authority с literal backslash до выдачи scheme, host и path». Запишите версию живого процесса, build digest, путь компонента, способ установки и включённую функцию. Advisory перечисляет «fast-uri >= 2.3.1, <= 2.4.2; first patched 2.4.3 | fast-uri >= 3.0.0, <= 3.1.3; first patched 3.1.4 | fast-uri >= 4.0.0, <= 4.1.0; first patched 4.1.1», но зависимость в manifest не равна доказанной runtime-версии. Отдельно установите reachability и субъекта, вызывающего путь. При неполном provenance оставьте статус unknown, а не переносите оценку advisory на ваше развёртывание.
Фактическая рамка GHSA-v2hh-gcrm-f6hx
Reviewed record опубликован 2026-07-21, обновлён 2026-07-21 и формулирует проблему как «fast-uri vulnerable to host confusion via literal backslash authority delimiter». Package boundaries: «fast-uri >= 2.3.1, <= 2.4.2; first patched 2.4.3 | fast-uri >= 3.0.0, <= 3.1.3; first patched 3.1.4 | fast-uri >= 4.0.0, <= 4.1.0; first patched 4.1.1». Upstream https://github.com/fastify/fast-uri подтверждает происхождение кода, но не состояние вашей установки. Даты, affected range и механизм берутся из прямой advisory-страницы. Ни record, ни форумный лид не доказывают атаку, ущерб, спрос, индексацию или позицию; для этого нужны другие измерения.
Отдельная боль: канонизацию authority с literal backslash до выдачи scheme, host и path
Узкая пользовательская боль: разные слои могут получить разные host из одной строки URI и применить несовместимые сетевые policy. Чтобы не спутать её с ошибкой стенда, заранее задайте поля артефакта: матрица input-class / parsed-host / authority-tail / policy-host / parser-result. Normal-control обязателен: обычная HTTPS-ссылка на documentation host разбирается одинаково в двух повторениях. Только после него запускают один граничный case. Marker не должен быть реальным credential, идентификатором или пользовательским содержимым. Так получается проверяемое дерево решения, а timeout, падение или неверная роль не выдаются за подтверждение механизма.
Безопасный обратимый опыт
Создайте parser-only harness, два documentation host, normal URI и один backslash-category fixture без сетевого клиента. Затем нужно разобрать оба значения напрямую и сопоставить host, authority remainder и policy class между двумя вызовами parser. Все операции выполняются в локальной или одноразовой среде с пределами wall-time, CPU, памяти, файлов, сокетов и запросов. Ожидаемый защитный результат задан до запуска: normal URI имеет один ожидаемый host, неоднозначный fixture отклоняется либо даёт одно и то же canonical значение на всех слоях. Не используйте production secrets, настоящие документы, внутренние адреса, пользовательские логи или публичные цели. После опыта очистите fixture, повторите normal-control и сверьте baseline digest.
Правило решения без догадок
Решение хранится как матрица input-class / parsed-host / authority-tail / policy-host / parser-result. Passed возможен, когда одновременно наблюдается «normal URI имеет один ожидаемый host, неоднозначный fixture отклоняется либо даёт одно и то же canonical значение на всех слоях», normal-control успешен и cleanup возвращает baseline. Failed фиксируют лишь после воспроизводимого расхождения с тем же fixture и лимитами. Not-applicable требует доказанной runtime-версии вне range либо документированно выключенного пути. Unknown остаётся при неполном provenance, нестабильном trace или неоднозначной конфигурации. Одного status code, падения или отсутствия события недостаточно для окончательного вывода.
Остановка, обновление и пакет поддержки
Stop-rule: прекратить до любого connect при расхождении parsed-host и policy-host. Если runtime входит в affected range, обновление получают из доверенного канала https://github.com/fastify/fast-uri, после чего повторяют тот же fixture с прежними лимитами; новый сценарий не подтверждает исправление старого. В обезличенный пакет включают runtime version, digest, конфигурационную ветвь, expected/observed, лимиты, timestamps, error class и хэши fixtures. Исключите токены, cookies, IP, внутренние имена, абсолютные пути и содержимое данных. Инструкция не обещает абсолютную защищённость.
Материал подготовлен редакцией VOne с помощью ИИ; даты, диапазоны, прямые ссылки, безопасный опыт и отсутствие рекламных обещаний затем перепроверены по первичным источникам.
Источники и проверка
- GitHub Reviewed Advisory ghsa-v2hh-gcrm-f6hx проверено 2026-08-31
- Upstream-репозиторий fastify/fast-uri проверено 2026-08-31
Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.