В ядре Linux найдена [2] опасная уязвимость [3], позволяющая локальному злоумышленнику выполнить код с правами пользователя root (при наличии доступной пользователю SUID root программы, такой как, например, /bin/su). Проблема наблюдается, начиная с ядра 2.6.39. Уязвимость также проявляется для ядра, используемого в RHEL 6 (начиная с 2.6.32-220.el6). На данный момент уже опубликовано три рабочих эксплоита [4]. Уязвимости присвоен номер CVE-2012-0056 [5].
Источником уязвимости является ошибка в реализации proc-интерфейса для прямого доступа к памяти процесса (/proc/pid/mem). До версии ядра 2.6.39 [6] этот интерфейс предоставлял доступ только на чтение, т.к. было известно, что для записи он небезопасен. Незадолго до выхода версии 2.6.39 ограничения доступа к /proc/pid/mem были переделаны, после чего доступ на запись был разрешён. Как оказалось, проверка привилегий была выполнена некорректно, что позволяет локальному пользователю получить права суперпользователя во всех ядрах 2.6.39 и выше (исключая GIT snapshot, в котором данная уязвимость была на днях закрыта [7]), а также в ядрах из состава RHEL 6.
Уязвимость обнаружил Juri Aedla, который в приватном порядке [8] уведомил разработчиков ядра Linux. К сожалению, изменения в Git-репозитории ядра были внесены спешно, что позволило создать эксплоиты на основе анализа изменений ещё до появления обновлений с исправлением проблемы в дистрибутивах. На момент публикации этой новости уязвимость была исправлена в дистрибутивах ALT Linux. По неофициальной информации, обновления для Red Hat и Ubuntu планировалось выпустить завтра, но в ситуации появления эксплоита [9] в публичном доступе, процесс выпуска обновлений будет форсирован и, возможно, они выйдут уже сегодня.
Временно нейтрализовать проблему можно запретив доступ пользователей ко всем SUID/SGID программам или с помощью SystemTap [10]. В число уязвимых попадают продукты на базе RHEL 6 и относительно недавно выпущенные дистрибутивы, поставляемые с ядрами 2.6.39, 3.0, 3.1 и 3.2 - Fedora 16, Ubuntu 11.10, OpenSUSE 12.1, Arch Linux, Gentoo и т.п. Статус выпуска обновлений для различных дистрибутивов можно проследить на данных страницах: Ubuntu [11], Gentoo [12], openSUSE [13], Fedora [14], Debian [15], Red Hat Enterprise Linux 6 [16], Scientific Linux 6 [17] и Cent OS 6 [18].
Дополнение 1: Выявленная проблема по своему проявляется и для более старых ядер Linux до версии 2.6.39, для которых потенциально возможно [19] проведение менее опасных атак, связанных с чтением областей памяти процессов (например, возможно чтение остающихся в памяти определённого процесса криптографических ключей, хэшей паролей и других приватных данных).
Дополнение 2: Упомянутый выше Git-коммит привносит [19] другую, сравнительно небольшую, проблему (возможный обход ограничения расхода памяти пользователем).
Дополнение 3: Вышло [20] обновление [21] с устранением уязвимости для Ubuntu 11.10.
Дополнение 4: Вышел [22] эксплоит для платформы Android.
Ссылки:
[1] http://htfl.ru/cat-news-uyazvimosti
[2] /out.php?link=http://www.openwall.com/lists/oss-security/2012/01/18/1
[3] /out.php?link=http://blog.zx2c4.com/749
[4] /out.php?link=http://seclists.org/fulldisclosure/2012/Jan/354
[5] /out.php?link=https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2012-0056
[6] http://htfl.ru/news/reliz-linux-yadra-2639
[7] /out.php?link=http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=e268337dfe26dfc7efd422a804dbb27977a3cccc
[8] /out.php?link=http://www.openwall.com/lists/oss-security/2012/01/23/2
[9] /out.php?link=http://git.zx2c4.com/CVE-2012-0056/tree/mempodipper.c
[10] /out.php?link=https://access.redhat.com/kb/docs/DOC-69129
[11] /out.php?link=https://lists.ubuntu.com/archives/ubuntu-security-announce/2012-January/
[12] /out.php?link=http://www.gentoo.org/security/
[13] /out.php?link=http://lists.opensuse.org/opensuse-security-announce/2012-01/
[14] /out.php?link=https://admin.fedoraproject.org/updates/F16/security
[15] /out.php?link=http://www.debian.org/security/
[16] /out.php?link=https://rhn.redhat.com/errata/
[17] /out.php?link=http://listserv.fnal.gov/scripts/wa.exe?A1=ind1201&L=scientific-linux-errata&T=0
[18] /out.php?link=http://lists.centos.org/pipermail/centos-announce/2012-January/
[19] /out.php?link=http://www.openwall.com/lists/oss-security/2012/01/22/5
[20] /out.php?link=https://lists.ubuntu.com/archives/ubuntu-security-announce/2012-January/001557.html
[21] /out.php?link=http://www.ubuntu.com/usn/usn-1336-1/
[22] /out.php?link=https://github.com/saurik/mempodroid