Уязвимость CVE-2020-11501 в GnuTLS: DTLS-клиент не использует случайные данные
В библиотеке GnuTLS (версии 3.6.x до 3.6.13) обнаружена уязвимость, связанная с некорректной реализацией криптографии в протоколе DTLS. Клиент всегда отправляет 32 нулевых байта вместо случайного значения, что нарушает гарантии безопасности DTLS. Уязвимость затрагивает версии начиная с 3.6.3.
Подробности
Уязвимость присутствует в GnuTLS версий 3.6.x до 3.6.13 включительно. Самая ранняя затронутая версия — 3.6.3, выпущенная 16 июля 2018 года. Причиной стала ошибка, внесённая в код коммитом от 6 октября 2017 года. Суть проблемы заключается в том, что DTLS-клиент при формировании ClientHello всегда использует 32 байта, заполненных нулями ('\0'), вместо криптографически случайного значения. Таким образом, клиент не вносит никакой случайности в процесс согласования DTLS-соединения. Это подрывает фундаментальные гарантии безопасности протокола DTLS, поскольку случайность является основой для защиты от атак повторного воспроизведения и обеспечения уникальности сессионных ключей. Поскольку DTLS применяется в чувствительных к задержкам приложениях — VoIP, видеоконференциях, VPN, игровых сервисах и системах Интернета вещей, — уязвимость может иметь широкие последствия. Конкретный вектор эксплуатации и оценка CVSS в записи CVE не указаны, однако сам характер ошибки — отсутствие энтропии на стороне клиента — делает её критичной для сценариев, где требуется стойкая защита канала.Что делать
Основная рекомендация — обновить GnuTLS до версии 3.6.13 или более поздней. В этой версии ошибка исправлена. Разработчикам и администраторам следует проверить, какие версии библиотеки используются в их приложениях, операционных системах и сетевых устройствах, и как можно скорее провести обновление. Если немедленное обновление невозможно, следует рассмотреть временные митигации: ограничение использования DTLS там, где это допустимо, либо переход на альтернативные реализации TLS/DTLS. Также рекомендуется усилить мониторинг подозрительной активности в DTLS-трафике до момента устранения уязвимости.Итог
CVE-2020-11501 — показательный пример того, как одна ошибка в коде, отвечающем за генерацию случайных данных, способна подорвать криптографическую защиту целого протокола. Отсутствие энтропии на стороне DTLS-клиента в GnuTLS делает соединения предсказуемыми и уязвимыми. Единственный надёжный способ защиты — обновление до GnuTLS 3.6.13 или новее. Всем организациям, использующим эту библиотеку, рекомендуется провести аудит своих систем и применить исправление в приоритетном порядке.Источник: CVE Project (cvelistV5)
