LINUX.ORG.RU

В ядре Linux обнаружена локальная root-уязвимость

 , , ,


2

5

В ядре 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

Перемещено beastie из talks

★★★★★

Последнее исправление: kerneliq (всего исправлений: 3)
Ответ на: комментарий от dexpl

ну если пофиксить, то разумеется уязвимость перестанет работать

xtraeft ★★☆☆
()
Ответ на: комментарий от drBatty

в слаке это трижды НЕ работает.

2 из трех пунктов выглядят бредово. Откуда ты взял необходимость логиниться nobody для эксплуатации уязвимости?

dexpl ★★★★★
()
Ответ на: комментарий от drBatty

в слаке это трижды НЕ работает.

Кто теперь скажет «слака - кака», м?

anonymous
()
Ответ на: комментарий от exception13

x86_64

Не обратил внимания. Зато теперь решил проверить на домашнем debian'е:

jurik_phys@fermi:~$ uname -a
Linux fermi 3.2.0-4-amd64 #1 SMP Debian 3.2.41-2 x86_64 GNU/Linux
Работает стабильно
jurik_phys@fermi:~/exploit$ ./a.out 
2.6.37-3.x x86_64
sd@fucksheep.org 2010

  Attribute 'InitialPixmapPlacement' (fermi:0.0) assigned value 2.

  Attribute 'GlyphCache' (fermi:0.0) assigned value 1.

  Attribute 'PixmapCache' (fermi:0.0) assigned value 1.

root@fermi:~/exploit# id
uid=0(root) gid=0(root) группы=0(root),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),104(scanner),111(netdev),118(vboxusers),1000(jurik_phys),1001(power)
root@fermi:~/exploit# mkdir /exploit
root@fermi:~/exploit# ls /exploit/
root@fermi:~/exploit# 

Правда, если запускать эксплоит сразу от рута - система сразу виснет.

Jurik_Phys ★★★★★
()
Ответ на: комментарий от xtraeft

Ты лучше бы, чем обвинениями кидаться (что, конечно, совершенно в твоем стиле, да), подправил этот эксплоит так, чтобы он хотя бы в популярных дистрибутивах запускался (гента, дебиан, арчег).

Anon
()
Ответ на: комментарий от Anon

подправил этот эксплоит так, чтобы он хотя бы в популярных дистрибутивах запускался (гента, дебиан, арчег).

Эдик, в дебиане он работает, почитай комментарии.
а править будут люди для своих нужд или за бабло.

xtraeft ★★☆☆
()
Ответ на: комментарий от anonymous

у серьёзных людей ядро старше, с patchlevel-666.

и с бекпортами, как у шапки?

xtraeft ★★☆☆
()
Ответ на: комментарий от Anon

Ты лучше бы, чем обвинениями кидаться (что, конечно, совершенно в твоем стиле, да), подправил этот эксплоит так, чтобы он хотя бы в популярных дистрибутивах запускался (гента, дебиан, арчег).

Ты по ссылке, данной drBatty, ходил?

dexpl ★★★★★
()
Ответ на: комментарий от dexpl

2 из трех пунктов выглядят бредово. Откуда ты взял необходимость логиниться nobody для эксплуатации уязвимости?

дык а как я в nobody залогинюсь-то? Из обычного пользователя не получается.

drBatty ★★
()
Ответ на: комментарий от xtraeft

а править будут люди для своих нужд или за бабло.

ну ты хоть скажи, что там править, чтоб оно в слаке работало?

drBatty ★★
()
Ответ на: комментарий от drBatty

дык а как я в nobody залогинюсь-то?

Встречный вопрос — зачем тебе для компиляции/запуска данного эксплойта логиниться в nobody?

Из обычного пользователя не получается.

Что не получается у обычного пользователя, но получится у nobody?

dexpl ★★★★★
()
Ответ на: комментарий от dexpl

Встречный вопрос — зачем тебе для компиляции/запуска данного эксплойта логиниться в nobody?

ну так в PoC написано.

Что не получается у обычного пользователя, но получится у nobody?

и так и так не получается. ЧЯДНТ?

drBatty ★★
()
Ответ на: комментарий от xtraeft

ты ведь даже не понимаешь сути работы кода

ну вот сейчас ты мне и расскажешь. Жду с нетерпением.

drBatty ★★
()
Ответ на: комментарий от drBatty

и так и так не получается. ЧЯДНТ?

покажи выхлоп

grep -i PERF_EVENTS /boot/config-$( uname -r )
или
zgrep -i PERF_EVENTS /proc/config.gz

xtraeft ★★☆☆
()
Ответ на: комментарий от xtraeft

дурачок, это просто пример. запускать можно от любого юзера

дурачок, НЕ РАБОТАЕТ от любого. И от nobody в т.ч.

О чём я и пытаюсь сказать.

А у тебя работает наверное потому, что ты от рута зашёл, вот оно и работает. Мне лениво в этом нагромождении быдлокода копаться, но если запускать его от простого юзера, который ОБЫЧНЫМ способом залогинился, то оно НЕ работает.

А вот если я в nobody от рута зайду, то «получить рута» я смогу без всяких эксплойтов, командой exit. Но этот эксплойт и её не в силах сделать.

drBatty ★★
()
Ответ на: комментарий от drBatty

В упор не вижу.

В ядре Linux обнаружена локальная root-уязвимость

Хм, действительно. А теперь попробуй выполнить команду из оригинального PoC (ссылка выше), т. е.

gcc-4.6 -O2 semtex.c && ./a.out
от имени своего повседневного юзера.

dexpl ★★★★★
()
Ответ на: комментарий от X10Dead

И спим спокойно.

Не совсем. Точнее, совсем не:

Our testing shows that this is not sufficient to avoid the issue in general, but it is currently sufficient mitigation against the publicly available (unmodified) exploits.

https://bugzilla.redhat.com/show_bug.cgi?id=962792#c10 + см. следующий коммент по ссылке.

dexpl ★★★★★
()
Ответ на: комментарий от dexpl

gcc-4.6 -O2 semtex.c && ./a.out

тоже не работает. Вылетает нафиг(в reboot). Что кгбэ неудивительно. Судя по всему, этот быдлокод конечно опасен, если позволит вывалится уровнем выше, туда, откуда su запущено. Ну а т.к. в нашем PoC запускается от рута, то мы и получаем права рута. Но нужно su, и не просто su, а версию из rh|deb.

drBatty ★★
()
Ответ на: комментарий от xtraeft

я не поленился установить это поделие (слаку 14), сплойт вешает ее наглухо

ага. Если так как в первом посте запускать, то вешает.

Kernel panic - not syncing: No init found.

это ты к чему?

drBatty ★★
()
Ответ на: комментарий от xtraeft

там правда ведро 3.2.x, но вообще да, результат был ожидаем.
если подпилить, то локал рут вполне выйдет

в принципе да. В некоторых случаях.

drBatty ★★
()
Последнее исправление: drBatty (всего исправлений: 1)
Ответ на: комментарий от drBatty

Вылетает нафиг(в reboot)

Мало хорошего, согласись.

Ну а т.к. в нашем PoC запускается от рута, то мы и получаем права рута. Но нужно su, и не просто su, а версию из rh|deb

Без комментариев.

dexpl ★★★★★
()
Ответ на: комментарий от dexpl

Мало хорошего, согласись.

согласен. Обновляюсь…

Ну а т.к. в нашем PoC запускается от рута, то мы и получаем права рута. Но нужно su, и не просто su, а версию из rh|deb

Без комментариев.

угу. В идеале этот эксплоит должен работать как команда exit. (посмотри первый пост, и попробуй тоже самое, s!./a.out!exit! )

Оно конечно КСЖ и РЕШЕТО, но…

drBatty ★★
()
Ответ на: комментарий от drBatty

это ты к чему?

слака рухнула после принудительного рестарта, дальше ковырять это поделие расхотелось.
если вешает, то уязвимость есть.
если кому то захочется, то код допилят для определенной версии ядра.

xtraeft ★★☆☆
()
Ответ на: комментарий от drBatty

Ну а т.к. в нашем PoC запускается от рута

нет, он не запускается от рута.
запускать можно из шелла любого юзера.

xtraeft ★★☆☆
()
Ответ на: комментарий от drBatty

угу. В идеале этот эксплоит должен работать как команда exit. (посмотри первый пост, и попробуй тоже самое, s!./a.out!exit! )

он не должен, потому что PoC код написан совсем не для этого.
а боевой эксплойт никто от рута запускать не будет (если есть рут права, то он вообще не нужен).
будь посерьезнее, пожалуйста :)

xtraeft ★★☆☆
()

Интересно, подобного рода уязвимости специально внедряют?

not_a_bogan
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.