Безопасная проверка Russh SSH identification reader по ghsa-76r6-x97p-67vr: применимость, обратимый fixture, peer-role / pre-lines / bytes-read / canonical-result / connection-state, PASS и stop-rule без production-данных.
Разберите симптом Russh SSH identification reader
Отдельная пользовательская боль: server принимает client pre-banner lines и не ограничивает их число/объём до identification. Reviewed advisory описывает «Russh: SSH identification parsing accepted non-canonical client banners and did not bound pre-banner input»; практический механизм: RFC роли различаются: client может видеть server pre-banner, но server не должен симметрично принимать произвольный client preamble. Reader также требует byte/line/time caps. Проверяем invariant «server-side reader принимает один canonical SSH identification line в bounded buffer», а не общий класс проблем. Запись ghsa-76r6-x97p-67vr опубликована 2026-06-11, обновлена 2026-06-11; ecosystem boundary: «rust/russh >= 0.34.0-beta.1, < 0.61.0; first patched 0.61.0». Это не доказывает affected code в fork, факт эксплуатации, популярность или поисковый спрос.
Сопоставьте runtime и безопасный control
Зафиксируйте source package, runtime version, build digest, commit provenance, feature/config state и роль, достигающую ветви. Нормальный control: одна canonical client line переводит parser в identified. Отдельно укажите самый ранний read/write/send/execute/cache/credential side effect. Если provenance или reachability неизвестна, статус unknown. Версионный диапазон «rust/russh >= 0.34.0-beta.1, < 0.61.0; first patched 0.61.0» — фильтр; backport подтверждается diff и поведением, а не предположением.
Запустите обратимый fixture
Лабораторный опыт: Async reader fixture подаст canonical line, client pre-lines, слишком длинную line и много коротких lines; socket не создаётся. Все идентификаторы и данные синтетические; network отключён или заменён recorder, filesystem ограничен mkdtemp, persistence — memory adapter/rollback. До запуска сохраните input digest, ожидаемое правило «pre-banner/noncanonical/over-cap дают bounded error без дальнейшего handshake» и нулевые counters. После — строку «peer-role / pre-lines / bytes-read / canonical-result / connection-state», final-state digest и cleanup proof. Реальный payload, credential, нагрузка или production mutation запрещены.
Прочитайте матрицу peer-role / pre-lines / bytes-read / canonical-result / connection-state
Убедитесь, что control прошёл именно нужную ветвь, затем найдите stage policy и любой чувствительный action. PASS возможен только если pre-banner/noncanonical/over-cap дают bounded error без дальнейшего handshake. Один status code, отсутствие exception или запись в лог не доказывают защиту. Для concurrency/state boundary используйте fixed barriers и малый детерминированный повтор. Любой неожиданный side effect переводит результат в fail/unknown до объяснения и полного cleanup.
Свяжите patch, stop-rule и решение
Diff исправления должен реализовать смысл «server-side reader принимает один canonical SSH identification line в bounded buffer» до side effect. Красные флаги: fail-open, policy после action, несовпадение requested/effective target, неполный transport/path coverage или отсутствующий negative control. Stop-rule: не держать SSH connection и ограничить input сотнями байт. Также остановитесь при privilege prompt, реальных данных, необратимой записи, росте ресурсов или невозможности cleanup. Дерево: proven patched — not-applicable; недостижимо — not-reachable; PASS — ready-for-reviewed-update; наблюдается «server принимает client pre-banner lines и не ограничивает их число/объём до identification» — fail; иначе unknown. В support packet включите ghsa-76r6-x97p-67vr, build provenance, «peer-role / pre-lines / bytes-read / canonical-result / connection-state», expected/observed, stop reason и две source URL без секретов/персональных данных. Production rollout требует отдельного backup, canary, readiness и rollback.
Материал подготовлен редакцией VOne с помощью ИИ; даты, диапазоны, прямые источники, безопасный fixture, privacy-границы и отсутствие рекламных обещаний затем перепроверены.
Источники и проверка
- GitHub Reviewed Advisory ghsa-76r6-x97p-67vr проверено 2026-08-31
- Official/upstream source for Russh SSH identification reader проверено 2026-08-31
Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.