В оконном интерфейсе Linux есть опасные «дыры». Самые древние не могут починить 35 лет
Уязвимости возрастом в четверть века и старше
В библиотеках проекта X.Org обнаружен ряд опасных уязвимостей, которые присутствовали в их коде целыми десятилетиями, пишет Phoronix.
Бреши затрагивают библиотеки libxpm и libX11, которые развиваются в составе проекта X.Org.
Среди пяти выявленных брешей две – CVE-2023-43786 и CVE-2023-43787 – возникли в 1988 г. (релиз X11R2). Еще пара ошибок датируются 1998 г. – им присвоены идентификаторы CVE-2023-43788 и CVE-2023-43789. Наконец, CVE-2023-43785 появилась в 1996 г.
Проблемы безопасности устранены в libX11 версии 1.8.7 и libxpm 3.5.17.
Подробнее об уязвимостях
Уязвимость, получившая идентификатор CVE-2023-43786, вызвана возможностью попадания в бесконечный цикл (рекурсию) внутри функции PutSubImage(), реализованной в библиотеке libX11, который позволяет злоумышленнику добиться исчерпания всех доступных системных ресурсов и, как следствие, вызвать состояние отказа в обслуживании (DoS).
Брешь обнаружена Яиром Мизрахи (Yair Mizrahi) из софтверной компании JFrog. Патч подготовил Алан Куперсмит (Alan Coopersmith) из Oracle.
Другая «древняя» уязвимость CVE-2023-43787, которая также датируется 1988 г. и затрагивает библиотеку libX11. Она обусловлена целочисленным переполнением в функции XCreateImage(), приводящим к переполнению «кучи» (heap) из-за отсутствия проверки размера буфера, в который загружаются данные. Проэксплуатировать ее можно при загрузке специальным образом подготовленного изображения формата XPM, которая осуществляется с помощью функции XpmReadFileToPixmap(), как раз и вызывающей XCreateImage().
Ошибка выявлена и устранена упомянутым ранее Яиром Мизрахи. Для предотвращения возникновения подобных ситуаций впредь в библиотеку libxmp были внесены правки, которые вынуждают функцию возвращать код ошибки при любом вызове, который способен вызвать численное переполнение.
Уязвимость CVE-2023-43785 допускает выход за границы буфера в коде libX11 в процессе обработки ответа от X-сервера на запрос XkbGetMap. Эксплуатация бреши позволяет злоумышленнику получить доступ к содержимому памяти.
«Дыра» найдена Грегори Джеймсом Даком (Gregory James Duck), закрыта Аланом Куперсмитом.
Наконец, CVE-2023-43788 и CVE-2023-43789 описывают пару уязвимостей библиотеки libxpm, которые вызваны возможностью чтения из областей, находящихся за пределами границ выделенной памяти.
Первая обнаружена и устранена Яиром Мизрахи, за выявление и исправление второй можно благодарить Алана Куперсмита.
Небезопасный X.Org
X.Org – это свободная реализация оконной системы X Windows System, применяемая в ряде UNIX-подобных операционных систем, в частности, семейств Linux и BSD. Проект развивает X.Org Foundation.
X Window System предоставляет инструменты и протоколы для построения графического интерфейса пользователя.
Libxpm – это библиотека, обеспечивающая работу с графическими файлами формата X Pixmap (XPM). XPM является текстовым форматом графических файлов, который используется X Window System.
LibX11 – библиотека, предоставляющая клиентский интерфейс к X Window System (Xlib); полный API для основных функций оконной системы.
C 2008 г. силами сообщества ведется разработка протокола для организации графического сервера в UNIX-подобных ОС – Wayland, который позиционируется в качестве замены X.Org, имеющего давние проблемы с безопасностью. В рамках проекта Wayland развивается Weston – эталонная реализация композитного менеджера Wayland.
К 2020 г. большинство мейнстримных дистрибутивов GNU/Linux обзавелись поддержкой Wayland. В их числе Fedora, Debian, Red Hat Enterprise Linux (RHEL), Ubuntu.
В 2018 г. CNews писал об обнаружении в коде X.Org Server «тривиальной» ошибки, которая может привести к повышению привилегий в среде Linux и BSD до уровня суперпользователя (root).
Выявленная в нем ошибка определяется как «некорректная валидация параметра, введенного с командной строки». Злоумышленник получает возможность перезаписывать произвольные файлы.
Повышение привилегий возможно посредством использования аргумента "-modulepath" и установления небезопасного пути к модулям, загружаемым сервером X.Org. Произвольная перезапись файлов возможна с помощью аргумента "-logfile".