В ядре Linux найдена локальная root-уязвимость
Источником уязвимости является ошибка в реализации proc-интерфейса для прямого доступа к памяти процесса (/proc/pid/mem). До версии ядра 2.6.39 этот интерфейс предоставлял доступ только на чтение, т.к. было известно, что для записи он небезопасен. Незадолго до выхода версии 2.6.39 ограничения доступа к /proc/pid/mem были переделаны, после чего доступ на запись был разрешён. Как оказалось, проверка привилегий была выполнена некорректно, что позволяет локальному пользователю получить права суперпользователя во всех ядрах 2.6.39 и выше (исключая GIT snapshot, в котором данная уязвимость была на днях закрыта), а также в ядрах из состава RHEL 6.
Уязвимость обнаружил Juri Aedla, который в приватном порядке уведомил разработчиков ядра Linux. К сожалению, изменения в Git-репозитории ядра были внесены спешно, что позволило создать эксплоиты на основе анализа изменений ещё до появления обновлений с исправлением проблемы в дистрибутивах. На момент публикации этой новости уязвимость была исправлена в дистрибутивах ALT Linux. По неофициальной информации, обновления для Red Hat и Ubuntu планировалось выпустить завтра, но в ситуации появления эксплоита в публичном доступе, процесс выпуска обновлений будет форсирован и, возможно, они выйдут уже сегодня.
Временно нейтрализовать проблему можно запретив доступ пользователей ко всем SUID/SGID программам, либо с помощью systemtap (на дистрибутивах от Red Hat и на Debian и Ubuntu). В число уязвимых попадают некоторые продукты на базе RHEL 6 и относительно недавно выпущенные дистрибутивы, поставляемые с ядрами 2.6.39, 3.0, 3.1 и 3.2 - Fedora 16, Ubuntu 11.10, OpenSUSE 12.1, Arch Linux, Gentoo и т.п. Статус выпуска обновлений для различных дистрибутивов можно проследить на данных страницах: Ubuntu, Gentoo, openSUSE, Fedora, Debian, Red Hat Enterprise Linux 6, Scientific Linux 6 и Cent OS 6.
Дополнение 1: Выявленная проблема по своему проявляется и для более старых ядер Linux до версии 2.6.39, для которых потенциально возможно проведение менее опасных атак, связанных с чтением областей памяти процессов (например, возможно чтение остающихся в памяти определённого процесса криптографических ключей, хэшей паролей и других приватных данных).
Дополнение 2: Упомянутый выше Git-коммит привносит другую, сравнительно небольшую, проблему (возможный обход ограничения расхода памяти пользователем).
Дополнение 3: Вышло обновление с устранением уязвимости для Ubuntu 11.10.
Дополнение 4: Вышел эксплоит для платформы Android.
Дополнение 5: Вышло обновление для RHEL 6.
Дополнение 6: На RHEL 6 и некоторых других системах, где опубликованные эксплойты как-бы не работают, дело в ASLR и PIE. Для успешной атаки потребуется другая SUID/SGID-программа (собранная не как PIE, но тоже выводящая что-то подходящее в stdout или stderr) или обход ASLR (много запусков) или выключенный ASLR (для проверки). Поэтому, для пользователей подобных систем также важно установить обновление для ядра Linux.
Дополнение 7: Kees Cook (Chrome OS, Ubuntu) предлагает добавить в ядро новый sysctl kernel.proc_pid_mem, который позволит отключать поддержку /proc/pid/mem полностью или ограничивать ее режимом только на чтение. На данный момент (24 января), в LKML опубликована уже третья редакция соответствующего патча, с учетом замечаний от других разработчиков.
Дополнение 8: Данная уязвимость исправлена в ядрах 3.0.18 и 3.2.2 c использованием ранее указанного коммита.
Источник: http://www.opennet.ru/opennews/art.shtml?num=32872
|
0 | Tweet | Нравится |
|