Исправление уязвимости в Linux glibc создало более опасную проблему

Исправление уязвимости в Linux glibc создало более опасную проблему

В библиотеке можно вызвать ошибку сегментации, что приведет к состоянию «отказа в обслуживании».

image

В начале июня нынешнего года было выпущено исправление для относительно неопасной проблемы CVE-2021-33574 в GNU библиотеке (glibc), эксплуатация которой могла привести к сбою в работе приложения. К сожалению, оказалось, что исправление привело к появлению новой и более опасной уязвимости — CVE-2021-38604.

«Для проведения минимальной атаки с использованием этой уязвимости злоумышленнику требуется множество предварительных условий, чтобы иметь возможность даже вывести программу из строя с помощью ошибки mq_notify», — описывал первую проблему специалист Red Hat Сиддхеш Поярекар (Siddhesh Poyarekar).

Проверяя патч для CVE-2021-33574, специалист Никита Попов из CloudLinux TuxCare обнаружил новую проблему. Как оказалось, в библиотеке можно вызвать ошибку сегментации, что приведет к состоянию отказа в обслуживании (DoS) любого приложения, использующего библиотеку. Уязвимость получила оценку в 7,5 балла по шкале CVSS. Атака осуществляется легко и не требует никаких привилегий.

По словам Попова, «каждое Linux-приложение, включая интерпретаторы других языков (python, PHP), связано с glibc. Это вторая важная вещь после самого ядра, поэтому влияние уязвимости довольно велико».

Технически проблема заключалась в семействе функций mq_. Они обеспечивают совместимые с POSIX функциональные возможности прикладного программного интерфейса (API) очереди сообщений. Обычно они используются для межпроцессного взаимодействия (IPC). Каждое приложение Linux, включая интерпретаторы других языков (Python, PHP), связано с библиотекой glibc.

Попов обнаружил две ситуации, когда ядро ​​Linux будет использовать сообщение NOTIFY_REMOVED при передаче скопированных атрибутов потока по пути в поле data.attr. К сожалению, приложение может передать туда значение NULL, если оно хочет, чтобы glibc создавал поток с атрибутами по умолчанию. В этом случае glibc разыменует NULL-указатель в pthread_attr_destroy, что приведет к сбою всего процесса.



В нашем телеграм канале мы рассказываем о главных новостях из мира IT, актуальных угрозах и событиях, которые оказывают влияние на обороноспособность стран, бизнес глобальных корпораций и безопасность пользователей по всему миру. Узнай первым как выжить в цифровом кошмаре!