Защитная диагностика Engine.IO WebTransport по GHSA-gr94-w7qr-f4j3: version inventory, обратимый fixture, PASS/FAIL/Unknown, stop-rule и минимальный пакет доказательств без production-данных.
Короткий ответ: какая граница важна в Engine.IO WebTransport
Проверять нужно не продукт целиком, а конкретный инвариант: lookup обязан требовать собственное свойство registry, валидный client object и локально обрабатывать rejection до изменения WebTransport session state. Пользовательская боль здесь одна — специальное имя session id может разрешиться в унаследованное свойство объекта вместо зарегистрированного клиента и завершить async upgrade ошибкой. Запись GHSA-gr94-w7qr-f4j3 задаёт инвентарную отсечку «engine.io: 6.5.0–6.6.6; исправление: 6.6.7; применимость требует отдельно доказать opt-in WebTransport», но номер версии не является диагнозом. Наличие пакета означает только candidate: ещё нужно доказать runtime artifact, включённую функцию и достижимый путь. Отсутствие жалоб, зелёный health и название образа ничего не говорят об этой границе. Практический ответ строится вокруг отдельного наблюдения «SID class | own property | client shape valid | rejection handled | process alive | verdict» и прекращается по условию «унаследованное свойство принято как client, rejection вышел из harness или fixture включил HTTP/3 listener». Это сохраняет тему узкой и не превращает её в повтор общего security-чеклиста.
Проверьте применимость до эксперимента
Найдите engine.io в resolved lock, SBOM или фактически загруженном binary и свяжите результат с digest либо revision. Сопоставьте его с «engine.io: 6.5.0–6.6.6; исправление: 6.6.7; применимость требует отдельно доказать opt-in WebTransport». Получаются четыре честных исхода: absent — компонента в runtime нет; out_of_range — доказанная версия не входит в указанную область; candidate — область совпала и функция доступна; unknown — provenance или reachability не подтверждены. Для backport отдельно приложите commit и regression test. Не повышайте unknown до pass по дате сборки, vendor banner или одному ответу HTTP.
Безопасное наблюдение для GHSA-gr94-w7qr-f4j3
Используйте только обратимый сценарий: чистый upgrade-dispatcher получает существующий synthetic SID и инертные имена prototype-chain; client registry создан без transport, Promise rejection перехватывается test harness. Сначала выполните штатный control, иначе отказ boundary-case может означать сломанный стенд. Работайте в disposable-процессе или namespace без production snapshot, учётных данных, персональных объектов и открытого egress. До старта зафиксируйте разрешённые файлы, network scope, timeout, CPU/RSS budget и способ cleanup. После шага прочитайте состояние обратно и сравните только синтетические маркеры. Не переносите из advisory exploit-код, реальные идентификаторы или опасную нагрузку.
Матрица результата и критерий остановки
Рабочая строка этой статьи: SID class | own property | client shape valid | rejection handled | process alive | verdict. PASS допустим, когда control достигает целевой функции, boundary-case управляемо отклонён, а readback и side-effect diff чисты. FAIL фиксируется только при работающем control и прямом нарушении инварианта «lookup обязан требовать собственное свойство registry, валидный client object и локально обрабатывать rejection до изменения WebTransport session state». UNKNOWN обязателен при неизвестной сборке, неполной телеметрии, раннем limiter, неоднозначном состоянии или невозможности безопасно воспроизвести ветку. Stop-condition задаётся заранее: унаследованное свойство принято как client, rejection вышел из harness или fixture включил HTTP/3 listener. После него тест не расширяют и не пытаются добиться результата большей нагрузкой.
Как доказать исправление без лишних изменений
Для candidate или FAIL сверьте remediation на upstream-странице GHSA-gr94-w7qr-f4j3 и используйте поддерживаемую версию либо документированный backport; inventory-ориентир остаётся «engine.io: 6.5.0–6.6.6; исправление: 6.6.7; применимость требует отдельно доказать opt-in WebTransport». Если patched release не названа, не выдумывайте её: временно изолируйте функцию и согласуйте отдельную миграцию. На том же fixture сохраните pre/post artifact digest, повторите control и boundary-case, затем сравните матрицу «SID class | own property | client shape valid | rejection handled | process alive | verdict». Canary допустим только после чистого cleanup и отдельного rollback. Не меняйте одновременно proxy, права, storage или формат данных — иначе причина результата потеряется.
Минимальный handoff владельцу Engine.IO WebTransport
Передайте GHSA-gr94-w7qr-f4j3, resolved package, границу «engine.io: 6.5.0–6.6.6; исправление: 6.6.7; применимость требует отдельно доказать opt-in WebTransport», artifact digest, feature state, hash fixture, budgets, одну заполненную строку «SID class | own property | client shape valid | rejection handled | process alive | verdict», verdict PASS/FAIL/UNKNOWN и причину unknown. Ссылки на GitHub Advisory Database и upstream источник нужны для повторной проверки, но длинные фрагменты не копируются. Укажите, что вывод относится только к боли «специальное имя session id может разрешиться в унаследованное свойство объекта вместо зарегистрированного клиента и завершить async upgrade ошибкой». Удалите hostnames, IP, usernames, cookies, tokens, конфиги и содержимое пользовательских объектов. Для независимого журнала достаточно полей `engineio-webtransport-session-own-property-check-artifact`, `engineio-webtransport-session-own-property-check-control`, `engineio-webtransport-session-own-property-check-boundary`, `engineio-webtransport-session-own-property-check-readback`, `engineio-webtransport-session-own-property-check-sideeffects`, `engineio-webtransport-session-own-property-check-stop`, `engineio-webtransport-session-own-property-check-verdict`, `engineio-webtransport-session-own-property-check-cleanup`; значения секретов в них запрещены.
Материал подготовлен редакцией VOne с помощью ИИ; даты, версии, первичные источники, обратимый fixture, stop-rule, privacy-ограничения и отсутствие рекламных обещаний перепроверены человеком.
Источники и проверка
- GitHub Advisory Database GHSA-gr94-w7qr-f4j3 проверено 2026-09-01
- Primary upstream source for Engine.IO WebTransport проверено 2026-09-01
Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.