Рукопожатие пошло не по плану. Ошибка OpenSSL превратила повтор DTLS-сообщения в утечку памяти

leer en español

7698
Рукопожатие пошло не по плану. Ошибка OpenSSL превратила повтор DTLS-сообщения в утечку памяти

Сбой возник там, где библиотека должна была спокойно пережить потерю данных.

image

Сбой в механизме повторной передачи DTLS превратил обычное восстановление потерянного сообщения в утечку памяти. Разработчики OpenSSL сообщили об уязвимости CVE-2026-84782, ей присвоено 8,2 балла по CVSS 3.1.

DTLS защищает обмен данными поверх UDP и должен уметь повторять сообщения рукопожатия, если ответ потерялся. Ошибка возникала, когда отправка большого сообщения приостанавливалась на середине, а таймер в тот же момент запускал повторную передачу более раннего сообщения. OpenSSL продолжала читать буфер не с начала, а с позиции, где остановилась предыдущая запись.

Из-за неверного смещения повторная передача могла захватить лишние байты из памяти процесса и отправить их другой стороне как незашифрованные данные рукопожатия. Если чтение выходило в неотображённую область памяти, приложение аварийно завершалось, что превращало ошибку в отказ в обслуживании. Уязвимость относится к чтению за границами буфера, CWE-125.

Проблема затрагивает OpenSSL 4.0 до 4.0.3, 3.6 до 3.6.5, 3.5 до 3.5.9 и 3.4 до 3.4.8. Уязвимы также старые ветки 3.0, 1.1.1 и 1.0.2. Для них исправленные сборки получили номера 3.0.23, 1.1.1zj и 1.0.2zs, однако публичная поддержка этих веток уже завершена или ограничена условиями расширенной поддержки.

Исправление меняет две части логики. Перед повторной передачей OpenSSL теперь сбрасывает позицию чтения к началу сообщения, а при незавершённой записи вообще откладывает повтор до следующего вызова, который продолжит рукопожатие. Тем самым библиотека больше не использует один и тот же внутренний контекст одновременно для двух несовместимых операций.

Сценарий требует сочетания DTLS, неблокирующего ввода-вывода и момента, когда запись рукопожатия уже приостановлена. Поэтому ошибка не означает автоматическую утечку памяти в любом соединении. Red Hat оценила ту же CVE в 7,4 балла по CVSS 3.1, посчитав сложность атаки высокой, тогда как запись CVE использует более жёсткую оценку 8,2.

Летом у OpenSSL уже находили связанную с памятью проблему HollowByte, где короткий запрос заставлял сервер резервировать значительно больше памяти во время TLS-рукопожатия. Новая CVE относится к другому механизму и к DTLS. Код уязвимости находится вне границ FIPS-модуля, поэтому сертифицированные FIPS-компоненты напрямую не затронуты.

Рекламодатель
Реклама. АО «Позитив Текнолоджиз». ИНН 7718668887. 18+
Сайт рекламодателя: ptsecurity.com↗️
АО «Позитив Текнолоджиз»