Защитная памятка по mediasoup и GHSA-p7x2-g5cq-fhmq: граница версий, runtime-инвентарь, безопасный regression-тест, стоп-критерии, канарейка, rollback и очищенный пакет владельцу.
Короткий ответ и граница риска
GHSA-p7x2-g5cq-fhmq подтверждает отдельную проблему в mediasoup: state cookie SCTP не имел требуемой криптографической аутентичности, поэтому доверять одному формату cookie было недостаточно. Граница применимости — mediasoup npm до 3.20.6 и соответствующие Rust worker версии до 0.22.5 при использовании SCTP/DataChannel. Прямой безопасный ответ: сначала доказать runtime-версию и достижимость именно этой функции, затем обновить mediasoup до 3.20.6 и worker crate до 0.22.5, затем подтвердить совпадение JS wrapper и фактически запущенного worker binary. Наличие продукта в inventory ещё не доказывает уязвимость, а отсутствие жалоб не доказывает исправление. Вердикт формулируют как passed, failed, blocked или not affected by reachability; последний требует проверяемого доказательства отключённого пути.
Runtime-инвентарь без догадок
Соберите строку «JS package | worker binary | SCTP enabled | normal channel | altered-state decision» для фактического процесса, а не только manifest или container tag. Добавьте источник артефакта, его checksum, способ dependency resolution и владельца изменения. Если поставщик сделал backport, нужна ссылка на первичное описание и identity патча; одно похожее число версии не подходит. Для mediasoup отдельно зафиксируйте функциональный переключатель, сетевую или tenant-границу и роль тестового субъекта. Не копируйте hostname, IP, usernames, токены, cookies, содержимое рабочих объектов или полный environment. Неизвестная runtime-версия означает blocked.
Обратимый отрицательный контроль
Используйте изолированный стенд, synthetic data и восстановимый snapshot. Безопасный отрицательный контроль: в закрытом WebRTC стенде прогнать vendor SCTP interoperability suite, нормальное создание DataChannel и controlled rejection изменённого тестовым harness состояния без публикации байтов cookie. Сначала запишите baseline на текущей разрешённой сборке без активного эксплуатационного payload, затем повторите тот же сценарий на исправленной версии. Passed означает совпадение заранее объявленного security decision и сохранение штатной функции. Timeout, пустой ответ, один HTTP status или тишина журнала не считаются успехом: они могут означать неверный маршрут, crash или потерю telemetry.
Исправление, канарейка и возврат
Изменение по GHSA-p7x2-g5cq-fhmq начинается с сохранения исходной точки: backup, checksum, версия runtime, конфигурационные флаги и проверенная команда восстановления. После этого примените шаг: обновить mediasoup до 3.20.6 и worker crate до 0.22.5, затем подтвердить совпадение JS wrapper и фактически запущенного worker binary. Один изолированный экземпляр получает обычный smoke и заранее подготовленный отрицательный test, не имея доступа к пользовательским данным. Сверьте loaded module, логи только по error-class, restart counter и ресурсную стабильность. Масштабировать можно после прохождения окна наблюдения. Старый artifact не гарантирует возврат, если новые данные или формат уже несовместимы.
Ложные зелёные сигналы и стоп-линия
Стоп-линия для этой темы: перехватывается пользовательский трафик, fixture идёт в публичный SFU либо команда предлагает вручную конструировать рабочий forged cookie. При её срабатывании остановите опыт, сохраните только обезличенные признаки и восстановите snapshot. Не расширяйте тест, чтобы добиться воспроизведения. Ложнозелёные сигналы: один health endpoint, package metadata без runtime, успешное TCP-соединение, отсутствие публичного exploit и отсутствие пользовательских обращений. Эти признаки полезны для диагностики, но не отвечают на конкретный security decision и не заменяют первичную advisory-запись.
Специфическая развилка проверки
У mediasoup версии двух слоёв могут расходиться: npm package запускает отдельный worker. Поэтому package.json не является runtime-доказательством. Проверяют строку версии worker, его hash и SCTP negotiation. Изменённое состояние генерирует закрытый vendor harness; материал не раскрывает структуру или способ подделки protocol cookie. Результат считается самостоятельным только при сохранённой матрице до/после, заранее заданном expected decision и проверенном возврате. Если эта практическая развилка уже покрыта внутренней инструкцией, правильное действие — обновить её, а не создавать соседний URL под вариант названия продукта.
Минимальный пакет владельцу
Владельцу передают GHSA-p7x2-g5cq-fhmq, точную версию до и после, URL первичного источника, SHA-256 артефакта, timestamp Europe/Moscow и одну очищенную строку «JS package | worker binary | SCTP enabled | normal channel | altered-state decision». Добавьте expected и observed decision, длительность ограниченного окна, backup/rollback status и один обезличенный error-class. Удалите secrets, абсолютные домашние пути, IP, account ids, session values и содержимое пользовательских объектов. Если reachability не подтверждена, честный статус blocked; advisory не доказывает, что конкретная установка была затронута.
Материал подготовлен редакцией VOne с помощью ИИ по открытым официальным и первичным источникам; факты, версии и ссылки перепроверены. Реальные пользовательские данные, активные payload и вымышленные результаты тестов не использовались.
Источники и проверка
- GitHub Advisory Database: GHSA-p7x2-g5cq-fhmq проверено 2026-08-30
- npm registry: mediasoup 3.20.6 проверено 2026-08-30
Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.