Механизм повторной передачи 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, неблокирующий ввод-вывод и состояние, когда запись рукопожатия уже приостановлена. Это означает, что утечка памяти происходит не во всех DTLS-соединениях. Red Hat оценила эту же CVE в 7,4 балла CVSS 3.1, считая сложность атаки высокой, тогда как основная оценка CVE составляет 8,2.
В летний период в OpenSSL обнаружили связанную с памятью уязвимость HollowByte, где короткий запрос заставлял сервер резервировать значительно больше памяти при TLS-рукопожатии. Новая CVE относится к другому механизму и именно к DTLS. Уязвимый код находится вне FIPS-модуля, поэтому сертифицированные FIPS-компоненты непосредственно не затронуты.
