Защитная памятка по djust и GHSA-xx4j-w367-7247: граница версий, runtime-инвентарь, безопасный regression-тест, стоп-критерии, канарейка, rollback и очищенный пакет владельцу.
Где проходит граница дефекта
GHSA-xx4j-w367-7247 подтверждает отдельную проблему в djust: socket lifecycle мог продолжиться без согласованного authorization decision после mount redirect. Граница применимости — djust до 1.0.4 в LiveView WebSocket сценариях, где HTTP mount менял маршрут или требовал аутентификацию. Прямой безопасный ответ: сначала доказать runtime-версию и достижимость именно этой функции, затем обновить djust до 1.0.4 и закрепить проверку principal и object permission на WebSocket connect и каждом чувствительном event. Наличие продукта в inventory ещё не доказывает уязвимость, а отсутствие жалоб не доказывает исправление. Вердикт формулируют как passed, failed, blocked или not affected by reachability; последний требует проверяемого доказательства отключённого пути.
Какие признаки собрать до изменения
Для границы применимости GHSA-xx4j-w367-7247 заполните минимальную таблицу djust: «djust version | HTTP mount decision | socket principal | event authorization | state delivered». Источником версии служит активный runtime, а lockfile, registry и image digest используются для взаимной сверки. Отдельно докажите, что уязвимая функция включена или действительно недостижима. Vendor backport допустим только с первичным changelog и идентифицируемым патчем. Рабочие адреса, аккаунты, cookies, ключи, журналы целиком и конфигурационные секреты не собираются. Любая нестыковка версии или reachability оставляет решение в blocked, не в passed.
Ограниченный тест на синтетике
Используйте изолированный стенд, synthetic data и восстановимый snapshot. Безопасный отрицательный контроль: на тестовых аккаунтах сравнить анонимное соединение, разрешённого пользователя и пользователя с отозванной сессией после mount; запрещённые sockets закрываются и не получают state. Сначала запишите baseline на текущей разрешённой сборке без активного эксплуатационного payload, затем повторите тот же сценарий на исправленной версии. Passed означает совпадение заранее объявленного security decision и сохранение штатной функции. Timeout, пустой ответ, один HTTP status или тишина журнала не считаются успехом: они могут означать неверный маршрут, crash или потерю telemetry.
Развёртывание и путь назад
Изменение по GHSA-xx4j-w367-7247 начинается с сохранения исходной точки: backup, checksum, версия runtime, конфигурационные флаги и проверенная команда восстановления. После этого примените шаг: обновить djust до 1.0.4 и закрепить проверку principal и object permission на WebSocket connect и каждом чувствительном event. Один изолированный экземпляр получает обычный smoke и заранее подготовленный отрицательный test, не имея доступа к пользовательским данным. Сверьте loaded module, логи только по error-class, restart counter и ресурсную стабильность. Масштабировать можно после прохождения окна наблюдения. Старый artifact не гарантирует возврат, если новые данные или формат уже несовместимы.
Что не является доказательством
Стоп-линия для этой темы: используются реальные сессии, event изменяет данные или для проверки нужно удерживать bypassed socket в production. При её срабатывании остановите опыт, сохраните только обезличенные признаки и восстановите snapshot. Не расширяйте тест, чтобы добиться воспроизведения. Ложнозелёные сигналы: один health endpoint, package metadata без runtime, успешное TCP-соединение, отсутствие публичного exploit и отсутствие пользовательских обращений. Эти признаки полезны для диагностики, но не отвечают на конкретный security decision и не заменяют первичную advisory-запись.
Компонентная матрица решения
HTTP 302 и закрытый WebSocket — разные протоколы, поэтому браузерный redirect не является доказательством разрыва socket. Проверка наблюдает close code, отсутствие initial state и повторную authorisation на synthetic event. После отзыва сессии соединение не должно продолжать получать обновления. Cookies и payload сообщений в отчёт не включаются. Результат считается самостоятельным только при сохранённой матрице до/после, заранее заданном expected decision и проверенном возврате. Если эта практическая развилка уже покрыта внутренней инструкцией, правильное действие — обновить её, а не создавать соседний URL под вариант названия продукта.
Финальный протокол проверки
Владельцу передают GHSA-xx4j-w367-7247, точную версию до и после, URL первичного источника, SHA-256 артефакта, timestamp Europe/Moscow и одну очищенную строку «djust version | HTTP mount decision | socket principal | event authorization | state delivered». Добавьте expected и observed decision, длительность ограниченного окна, backup/rollback status и один обезличенный error-class. Удалите secrets, абсолютные домашние пути, IP, account ids, session values и содержимое пользовательских объектов. Если reachability не подтверждена, честный статус blocked; advisory не доказывает, что конкретная установка была затронута.
Материал подготовлен редакцией VOne с помощью ИИ по открытым официальным и первичным источникам; факты, версии и ссылки перепроверены. Реальные пользовательские данные, активные payload и вымышленные результаты тестов не использовались.
Источники и проверка
- GitHub Advisory Database: GHSA-xx4j-w367-7247 проверено 2026-08-30
- PyPI: djust 1.0.4 проверено 2026-08-30
Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.