29 сентября проект OpenSSL выпустил обновления безопасности, устраняющие уязвимость CVE-2026-84782 высокой степени серьёзности в механизме ретрансляции DTLS-сообщений. Ошибка позволяет передать содержимое heap-памяти процесса удалённой стороне в виде незашифрованных данных рукопожатия или вызвать аварийное завершение программы. Уязвимость затрагивает все основные ветки OpenSSL — от 1.0.2 до 4.0 — но только приложения, использующие OpenSSL именно для DTLS-соединений. Обычные TLS-развёртывания не подвержены этой проблеме. Исправления доступны в версиях OpenSSL 4.0.3, 3.6.5, 3.5.9 и 3.4.8, а также в пакетах Ubuntu и Debian.
Механизм уязвимости
DTLS (Datagram Transport Layer Security) — вариант TLS для UDP-трафика, описанный в RFC 9147. Он применяется, в частности, для защиты каналов данных WebRTC и установки ключей шифрования в интернет-звонках. Поскольку UDP не гарантирует доставку, DTLS реализует собственный механизм повторной отправки: если ответ на сообщение рукопожатия не приходит до истечения таймера, сообщение отправляется повторно.
Крупные сообщения рукопожатия DTLS разбивает на фрагменты, каждый из которых помещается в один UDP-датаграмм. Если соединение временно не может принять данные, отправка приостанавливается на середине сообщения. Согласно описанию в записи CISA ADP, проблема возникает, когда таймер ретрансляции срабатывает в момент, пока запись более крупного сообщения рукопожатия приостановлена на полпути. До исправления код ретрансляции использовал текущую позицию приостановленного сообщения в буфере вместо того, чтобы вернуться к началу повторно отправляемого сообщения. В результате повторно отправленное сообщение получало неверную метку, а его тело содержало оставшиеся байты из буфера более крупного сообщения, причём чтение могло выйти за границы буфера.
Это приводит к двум последствиям: содержимое heap-памяти может быть передано удалённой стороне как незашифрованные данные рукопожатия, а если чтение достигает неотображённой области памяти — процесс аварийно завершается.
Оценка серьёзности
Проект OpenSSL, согласно описанию релиза 3.4.8, оценивает CVE-2026-84782 как уязвимость уровня High — на одну ступень ниже Critical по собственной шкале. CISA ADP присвоила оценку CVSS 3.1 — 8.2 (High) с вектором AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:H, указав низкое влияние на конфиденциальность и высокое — на доступность. Важно учитывать, что OpenSSL не использует CVSS для определения собственных рейтингов серьёзности и отмечает, что оценки от внешних организаций могут существенно отличаться.
На момент публикации записи 29 сентября CISA зафиксировала статус эксплуатации как «none». Независимых публичных отчётов об эксплуатации уязвимости обнаружено не было. При этом OpenSSL не уточнил, может ли атакующий целенаправленно спровоцировать ретрансляцию в момент приостановки записи сообщения.
Область воздействия
Практический радиус поражения уже, чем может показаться по числу затронутых версий. Уязвимость срабатывает только при одновременном выполнении двух условий: приложение использует OpenSSL для DTLS (а не обычного TLS), и запись сообщения рукопожатия приостановлена на середине в момент срабатывания таймера ретрансляции. Развёртывания, работающие исключительно с TLS поверх TCP, не подвержены этой проблеме. OpenSSL не ограничивает уязвимость только клиентами или серверами — исправление протестировано в обеих ролях.
Наибольшему риску подвержены системы, активно использующие DTLS: серверы WebRTC, VoIP-инфраструктура, VPN-решения на базе UDP и IoT-устройства с DTLS-каналами.
Затронутые версии и исправления
Согласно данным CNA, уязвимость затрагивает следующие версии OpenSSL:
- OpenSSL 4.0.0 – 4.0.2 → исправлено в 4.0.3
- OpenSSL 3.6.0 – 3.6.4 → исправлено в 3.6.5
- OpenSSL 3.5.0 – 3.5.8 → исправлено в 3.5.9
- OpenSSL 3.4.0 – 3.4.7 → исправлено в 3.4.8
- OpenSSL 3.0.0 – 3.0.22 → исправлено в 3.0.23 (только платная поддержка)
- OpenSSL 1.1.1 до 1.1.1zj → исправлено в 1.1.1zj (только платная поддержка)
- OpenSSL 1.0.2 до 1.0.2zs → исправлено в 1.0.2zs (только платная поддержка)
Ветка 3.0 прекратила получать публичные обновления безопасности 7 сентября. Версия 3.0.23 стала первым обновлением этой ветки, недоступным публично. Тем, кто самостоятельно собирает OpenSSL 3.0 или включает его в свои продукты, OpenSSL рекомендует переход на более новую ветку (4.0 или LTS-релиз 3.5) либо приобретение платного контракта поддержки.
Дистрибутивы Linux оперативно выпустили обновления. По данным исходного отчёта, Ubuntu опубликовала исправления 29 сентября:
- Ubuntu 26.04 LTS: libssl3t64 3.5.5-1ubuntu3.6
- Ubuntu 24.04 LTS: libssl3t64 3.0.13-0ubuntu3.16
- Ubuntu 22.04 LTS: libssl3 3.0.2-0ubuntu1.30
Debian исправил уязвимость в Debian 13 пакетом openssl версии 3.5.7-1~deb13u3 (DSA-6531-1). По состоянию на 07:36 UTC 30 сентября трекер безопасности Debian всё ещё отмечал Debian 12 как уязвимый.
Другие уязвимости в этом релизе
Помимо CVE-2026-84782, релизы от 29 сентября устраняют ещё 13 уязвимостей. Отдельного внимания заслуживают две из них:
CVE-2026-84783 — уязвимость типа use-after-free, затрагивающая только OpenSSL 4.0. Удалённый неаутентифицированный участник может вызвать аварийное завершение многопоточного TLS-клиента или многопоточного TLS-сервера, запрашивающего клиентские сертификаты, если несколько соединений одновременно строят первые цепочки сертификатов к одному и тому же доверенному CA. Следует отметить расхождение в оценках: проект OpenSSL присваивает ей рейтинг Moderate, тогда как CISA ADP — CVSS 3.1 7.5 (High).
CVE-2026-75806 — уязвимость низкой серьёзности в DTLS 1.2, согласно описанию релиза OpenSSL. Любой, кто может отправить датаграмму на установленное DTLS 1.2 соединение с AEAD-шифронабором, способен разорвать его одним слишком коротким датаграммом без знания ключей. Остальные 11 уязвимостей также оценены как Low и включают 5 ошибок в коде QUIC и 3 уязвимости побочных каналов по времени в коде ECDSA и SM2.
Рекомендации
- Обновите OpenSSL до версий 4.0.3, 3.6.5, 3.5.9 или 3.4.8 в зависимости от используемой ветки. Политика безопасности OpenSSL рекомендует устанавливать обновления с рейтингом High как можно скорее.
- Пользователям Ubuntu: установите обновлённые пакеты libssl и выполните перезагрузку — по данным Ubuntu, это необходимо для полного применения изменений.
- Пользователям Debian 12: отслеживайте появление исправления в трекере безопасности.
- Пользователям OpenSSL 3.0: запланируйте миграцию на поддерживаемую ветку (3.5 LTS или 4.0), поскольку публичные обновления для 3.0 прекращены.
- Проведите аудит использования DTLS в инфраструктуре — если OpenSSL применяется исключительно для TLS поверх TCP, эта конкретная уязвимость вас не затрагивает.
Обходных решений для тех, кто не может обновиться, OpenSSL не предлагает. Уязвимость была обнаружена Laurent Gaffie из Secorizon 17 августа, исправление разработал Ryan Hooper — коммит доступен на GitHub. Несмотря на отсутствие подтверждённой эксплуатации, сочетание утечки памяти и возможности удалённого отказа в обслуживании через сетевой вектор без аутентификации делает оперативное обновление приоритетной задачей для всех, кто использует DTLS на базе OpenSSL.