Skip to content


Свежий local root exploit в linux

В ядре Linux обнаружена уязвимость, позволяющая получить root-доступ произвольному пользователю. Проблему усложняет то, что ошибка существовала на протяжении последних 2-3 лет и существует во всех ядрах начиная с 2.6.37 и включая 3.8.10.

Проблема присутствует в коде PERF_EVENTS, которая должна быть активирована для успешной эксплуатации уязвимости. Пользователям RHEL 6 и CentOS, несмотря на использование ядра 2.6.32, также светят проблемы – проблемный код был успешно бэкпортирван Red Hat в пакет с ядром, поставляемом в RHEL.

Эксплоит уже доступен публично:

bash-4.1# gcc -O2 exploit.c
bash-4.1# chmod 777 a.out
bash-4.1# su nobody -s /bin/bash
bash-4.1$ id
uid=99(nobody) gid=99(nobody) groups=99(nobody)
 
bash-4.1$ cd /
bash-4.1$ ls
a.out  bin  boot  dev  etc  exploit.c  home  lib  lib64  media....
 
bash-4.1$ ./a.out
2.6.37-3.x x86_64
 
sh-4.1# id
uid=0(root) gid=0(root) groups=0(root),99(nobody)

Источник: http://www.opennet.ru/opennews/art.shtml?num=36933

UPDATE от 2013-05-15
А вот и небольшой workaround подоспел (правда, есть подозрение, что помогает оно только конкретно от этого эксплойта, а сам баг в ядре можно и по-другому проэксплуатировать):

[root@serv ~]# /sbin/sysctl -w kernel.perf_event_paranoid=2
kernel.perf_event_paranoid = 2
[root@serv ~]# /sbin/sysctl -w kernel.perf_event_max_sample_rate=-1
kernel.perf_event_max_sample_rate = -1
[root@serv ~]# exit
[avz@serv ~]$ ./a.out
exploit: semtex.c:51: sheep: Assertion `!close(fd)' failed.
Aborted
[avz@serv ~]$

Кстати, быстро определить какие известные баги есть в вашем ядре можно с помощью такого one-liner-а:

(uname -s; uname -m; uname -r; uname -v) | curl https://uptrack.api.ksplice.com/api/1/update-list/ -L -H "Accept: text/text" --data-binary @-

Posted in *nix.


0 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

You must be logged in to post a comment.