11 байт хватает, чтобы сервер на OpenSSL начал без пользы раздувать память. Специалисты Okta описали HollowByte — проблему в обработке TLS-хендшейков, из-за которой короткий пакет может заставить процесс выделить до 131 Кбайт под сообщение, которое так и не придет.

Речь не о краже данных и не о взломе учётной записи. HollowByte бьёт по доступности: сервер зависает в ожидании продолжения рукопожатия, а при серии таких запросов память расползается и процесс может упасть. В заметке ниже — короткий разбор и практический чек-лист для администраторов.

Какую проблему решаем

HollowByte опасна тем, что атакующему не нужны ни пароль, ни сессия, ни какой-либо доступ к панели управления. Достаточно открыть TLS-соединение и отправить пакет с заголовком, который обещает большой ClientHello, а потом ничего не досылать.

Уязвимые версии OpenSSL заранее увеличивали буфер под размер, который указан в заголовке, и делали это до проверки фактического объёма данных. В итоге сервер резервировал память, рабочий поток ждал продолжения, а при массовой атаке росло число бесполезных выделений.

Что подготовить

Перед проверкой обновите план действий по серверу: где лежит конфиг, как перезапускается процесс, кто отвечает за сборку пакетов и как быстро вы откатываете релиз. Если у вас несколько хостов, проверьте, где OpenSSL встроен в системный пакет, а где собран отдельно.

Имеет смысл заранее посмотреть журналы на предмет всплесков коротких TLS-сеансов и роста потребления памяти. Если сервер работает в среде с ограничением ресурсов, запишите текущие лимиты — потом это поможет понять, что именно упирается в потолок.

Пошаговые действия

один. Проверьте версию OpenSSL

Сверьте установленный релиз с исправленными сборками: OpenSSL 4.0.1, 3.6.3, 3.5.7, 3.4.6 и 3.0.21. Если пакет поставляет дистрибутив, смотрите не только номер версии, но и changelog — исправление могли добавить в старую сборку без смены версии.

два. Обновите библиотеку и пакет сервера

Поставьте обновление через официальный репозиторий дистрибутива или из новой сборки, где уже есть патч. Важно проверить не только саму библиотеку, но и веб-сервер, прокси или приложение, которое её использует.

три. Перезапустите процесс после обновления

Если сервис уже получил фрагментированный хип, одного обновления мало. После установки патча перезапустите процесс, чтобы вернуть память и убрать накопленные бесполезные блоки.

четыре. Ужесточите пределы на соединения и память

Сократите время ожидания TLS-хендшейка, проверьте лимиты на одновременные соединения и следите за потреблением памяти на пике. На практике это снижает ущерб от коротких запросов, которые не доходят до полноценного обмена данными.

Если вы настраиваете удалённый доступ сотрудников к внутренним сервисам, полезно держать под рукой шпаргалку по защищённой работе с корпоративными ресурсами как один из элементов общей защиты трафика и учётных данных.

Как проверить себя

После обновления запустите обычную нагрузку и посмотрите, не растёт ли память сервиса на серии незавершённых TLS-сеансов. Сравните поведение до и после перезапуска: если процесс быстро «надувается» от коротких соединений, патч ещё не применён или пакет собран без нужных исправлений.

Отдельно проверьте журналы системного мониторинга. В статье про SonicWall SMA под ударом мы уже показывали, почему опасно полагаться только на версию на бумаге — иногда решает именно состав сборки и путь доставки патча.

Что делать, если не получилось

Если обновление недоступно сразу, временно ограничьте число одновременных соединений и поставьте сервис под более жёсткий контроль по памяти. Для критичных узлов лучше планировать окно перезапуска, чем ждать, пока процесс сам упадёт от нехватки ресурсов.

Если вы не уверены, вошёл ли патч в пакет, проверьте changelog у мейнтейнера или внутреннюю карту зависимостей. Для серверов, которые обслуживают публичный трафик, это не формальность, а способ не пропустить тихую проблему с доступностью.

Практический чек-лист

  • Сверил версию OpenSSL с исправленными релизами.
  • Проверил changelog пакета, а не только номер версии.
  • Перезапустил процесс после установки обновления.
  • Установил лимиты на число соединений и ожидание TLS-хендшейка.
  • Проверил журналы на всплески коротких незавершённых сеансов.
  • Подготовил план быстрого отката и перезапуска сервиса.
Поделиться: