Уязвимости в библиотеках X.Org, две из которых присутствуют с 1988 года

Обнародована информация о пяти уязвимостях в библиотеках libX11 и libXpm, развиваемых проектом X.Org. Проблемы устранены в выпусках libXpm 3.5.17 и libX11 1.8.7. Три уязвимости выявлены в библиотеке libx11, предлагающей функции с клиентской реализацией протокола X11:

  • CVE-2023-43785 – выход за границы буфера в коде libX11, проявляющийся при обработке ответа от X-сервера с числом символов, не соответствующих ранее отправленному запросу XkbGetMap. Уязвимость вызвана ошибкой в X11R6.1, существующей с 1996 года. Уязвимость может быть эксплуатирована при подключении приложения, использующего libx11, к вредоносному X-серверу или промежуточному прокси, контролируемому злоумышленником.
  • CVE-2023-43786 – исчерпание стека в результате бесконечной рекурсии в функции PutSubImage() в libX11, возникающей при обработке специально оформленных данных в формате XPM. Уязвимость существует с момента выхода X11R2 в феврале 1988 года.
  • CVE-2023-43787 – целочисленное переполнение в функции XCreateImage() в libX11, приводящее к переполнению кучи из-за ошибки в вычислении размера, не соответствующего фактическому размеру данных. Проблемная функция XCreateImage() вызывается из функции XpmReadFileToPixmap(), что позволяет эксплуатировать уязвимость при обработке специально оформленного файла в формате XPM. Уязвимость также существует со времён X11R2 (1988 год).

Кроме того, раскрыты две уязвимости в библиотеке libXpm (CVE-2023-43788 и CVE-2023-43789), вызванные возможностью чтения из областей вне границ выделенной памяти. Проблемы проявляются при загрузке комментария из буфера в памяти и обработке XPM-файла с некорректной картой цветов. Обе уязвимости датируются 1998 годом и были найдены благодаря применению инструментов для выявления ошибок работы с памятью и fuzzing-тестирования AddressSanitizer и libFuzzer.

X.org имеет исторические проблемы с безопасностью, например десять лет назад, на 30-й конференции Chaos Communication Congress (CCC) в докладе исследователя безопасности Ильи ван Шпрунделя (Ilja van Sprundel) половина презентации была посвящена серверу X.Org. В докладе Ильи, который в 2013 году выявил 30 уязвимостей, затрагивающих различные клиентские библиотеки X11, а также DRI-компоненты Mesa, присутствовали такие эмоциональные высказывания, как “GLX – это ужасный демотиватор! 80 000 строк сплошного ужаса!” и “За последние пару месяцев я нашёл в нем 120 ошибок, и я ещё не закончил проверку”.

Release. Ссылка here.