Война библиотек Linux: изменение безопасности ломает Discord, Steam, Julia

Война библиотек Linux: изменение безопасности ломает Discord, Steam, Julia

Безобидная строка кода — и всё, что вы запускали, превращается в окно с ошибкой.

image
В конце января вышла новая версия GNU C Library 2.41, и сразу после этого пользователи начали замечать проблемы: перестали запускаться некоторые игры в Steam, мессенджер Discord, языки программирования Julia и MATLAB, а также другие приложения. Особенно часто жаловались пользователи Arch Linux, где библиотека обновляется довольно оперативно. Причиной оказалась одна из изменений в Glibc 2.41, касающаяся работы с исполняемым стеком при загрузке библиотек через dlopen.

Суть проблемы в следующем : раньше, если загружаемая библиотека требовала исполняемого стека, он автоматически помечался как таковой. В версии 2.41 это поведение изменили — теперь dlopen и dlmopen больше не делают стек исполняемым по умолчанию, даже если загружаемая библиотека этого требует. Это и сломало некоторые приложения, особенно проприетарные: Discord, часть игр в Steam, язык Julia и даже 32-битную версию Mono.

Разработчики Arch Linux первыми отследили проблему до конкретного патча в составе Glibc 2.41, направленного на ужесточение контроля над исполняемым стеком — важным аспектом с точки зрения безопасности. Однако оказалось, что не все библиотеки корректно размечены: в некоторых случаях отсутствует секция .note.GNU-stack, а в других используются обходные конструкции вроде trampolines, которые тоже требуют исполняемого стека.

Сегодня, спустя чуть больше двух месяцев после подачи бага, в репозиторий Glibc внесли обходное решение. Теперь переменная окружения glibc.rtld.execstack может быть использована, чтобы явно включить поддержку исполняемого стека при запуске программы. Это своего рода "режим совместимости", позволяющий обойти проблему, но он небезопасен: в документации прямо говорится, что этот способ нарушает меры защиты, связанные с PT_GNU_STACK.

Важно, что механизм отключён для setuid-бинарников, то есть тех, что выполняются с повышенными правами, чтобы не создавать угрозу безопасности. Также подчёркивается, что решение временное и может быть удалено в будущем, когда разработчики приложений успеют адаптироваться к новым требованиям.

Проверку работоспособности патча провели на нескольких архитектурах: aarch64, x86_64 и i686. Так что, если после обновления Glibc у вас перестали запускаться привычные приложения — теперь есть способ это исправить, хотя и с оговорками.

Как управлять уязвимостями в инфраструктуре свыше 80 000 хостов

23 апреля состоится вебинар о возможностях ScanFactory VM для крупного бизнеса.

Реклама. 18+, ООО «СКАНФЭКТОРИ», ИНН 7727458406