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)

Пользователи GNU/Linux ищут вирусы сами...

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

что крутого? уязвимость для ядра другой версии и другой архитектуры, а ты бахвалишься тут «Пользователи GNU/Linux ищут вирусы сами...»

xtraeft ★★☆☆
()

Ох, щи:

bash-4.1$ gcc -O2 exploit.c 
bash-4.1$ id
uid=500(virt) gid=500(virt) groups=500(virt),501(libvirt)
bash-4.1$ ./a.out 
2.6.37-3.x x86_64
sd@fucksheep.org 2010
-sh-4.1# id
uid=0(root) gid=0(root) groups=0(root),500(virt),501(libvirt)
-sh-4.1# uname -a
Linux hellheim 2.6.32-358.6.1.el6.x86_64 #1 SMP Tue Apr 23 19:29:00 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

Deleted
()

Не работает.

$ uname -a
Linux desktop 3.7.10-gentoo-r1 #1 SMP Thu May 2 11:46:06 EEST 2013 x86_64 Intel(R) Core(TM) i5-2430M CPU @ 2.40GHz GenuineIntel GNU/Linux

iVS ★★★★★
()
serge@silverblade:~$ gcc -O0 -o semtex.bin semtex.c 
serge@silverblade:~$ ./semtex.bin 
2.6.37-3.x x86_64
sd@fucksheep.org 2010
semtex.bin: semtex.c:81: main: Assertion `p = memmem(code, 1024, &needle, 8)' failed.
Аварийный останов
serge@silverblade:~$ gcc -O1 -o semtex.bin semtex.c 
serge@silverblade:~$ ./semtex.bin 
2.6.37-3.x x86_64
sd@fucksheep.org 2010
semtex.bin: semtex.c:81: main: Assertion `p = memmem(code, 1024, &needle, 8)' failed.
Аварийный останов
serge@silverblade:~$ gcc -O2 -o semtex.bin semtex.c 
serge@silverblade:~$ ./semtex.bin 
2.6.37-3.x x86_64
sd@fucksheep.org 2010
root@silverblade:~# id
uid=0(root) gid=0(root) группы=0(root),20(dialout),21(fax),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),109(netdev),110(bluetooth),116(scanner),1000(serge)
root@silverblade:~#
serge@silverblade:~$ gcc -O3 -o semtex.bin semtex.c 
serge@silverblade:~$ ./semtex.bin 
2.6.37-3.x x86_64
sd@fucksheep.org 2010
semtex.bin: semtex.c:81: main: Assertion `p = memmem(code, 1024, &needle, 8)' failed.
Аварийный останов
serge@silverblade:~$ gcc -Os -o semtex.bin semtex.c 
serge@silverblade:~$ ./semtex.bin 
2.6.37-3.x x86_64
sd@fucksheep.org 2010
semtex.bin: semtex.c:86: main: Assertion `!setuid(0)' failed.
Аварийный останов
exception13 ★★★★★
()
Ответ на: комментарий от exception13

и да

uname -a
Linux silverblade 3.2.0-3-amd64 #1 SMP Thu Jun 28 09:07:26 UTC 2012 x86_64 GNU/Linux
exception13 ★★★★★
()
Ответ на: комментарий от init_6

Они так часто выходят, что компилять не успеваешь. А еще влом прописывать новое ядро в EFI и перезагружаться.

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

okay. предлагаешь на критически важных участках обновлять линупс каждый день и наступать на нескучные баги?

да и сертификация идет под откос.

exception13 ★★★★★
()

Надо будет сохранить линк на эту тему и троллить любителей бэкпортов.

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

Они так часто выходят, что компилять не успеваешь. А еще влом прописывать новое ядро в EFI и перезагружаться.

Ну да старые дырки привычнее. Ну ок.

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

okay. предлагаешь на критически важных участках обновлять линупс каждый день и наступать на нескучные баги?

Всему есть свое место. Но есть и целесообразность. Если смысл сертификации только в бумажке ну держись за свою сертифицированную но в то же время дырявую версию и дальше.

init_6 ★★★★★
()

Porteus 64 v2.0: после запуска падает ядро (3.7.8)

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

Если смысл сертификации только в бумажке ну держись за свою сертифицированную но в то же время дырявую версию и дальше.

смысл сертификации в том что бы однажды написанный/собранный/поставленный софт работал и это например касается не только юзерспейса.

exception13 ★★★★★
()
d@deb:~/build$ ./a.out 
a.out: exploit.c:51: sheep: Assertion `!close(fd)' failed.
Аварийный останов
Debasher ★★★★★
()
Ответ на: комментарий от exception13

смысл сертификации в том что бы однажды написанный/собранный/поставленный софт работал

...и пофиг, что в нём дыры.

geekless ★★
()

Куда пропал тот поц который хотел установить кс без рута?
Сколько людей чувствуя себя хакерами пытались получить рут на собственном компе ?

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

представь себе что в изолированной системе локальный эксплойт это ерунда.

Да безусловно. Однако есть одно мерзкое «но» ;) одно дело пусть и изолированная система но с дырами и совсем другое изолированная система но без дыр.

init_6 ★★★★★
()

Было бы хорошо, запустить этот эксплоит на андроид'е. HTC One V - загрузчик менять страшно, а так: запустил и готово. (можно удалять всякие фейспуки, да свиттеры)

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

Было бы хорошо, запустить этот эксплоит на андроид'е. HTC One V - загрузчик менять страшно, а так: запустил и готово. (можно удалять всякие фейспуки, да свиттеры)

2.6.37-3.x x86_64

x86_64

ты конечно можешь разобрать как работает этот эксплойт

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

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

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

Ты не путай «найдут» и «объявят».

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

Ну и что. Главное — стабильность, а школоруткиты никому не важны.

Ну да безусловно! Стабильные дыры важны!

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

Любимый CentOS может спать спокойно

semtex: semtex.c:81: main: Assertion `p = memmem(code, 1024, &needle, 8)' failed.
Аварийный останов

на 2.6.32-279.el6.x86_64.

dexpl ★★★★★
()

американское гражданство Линуса явно не пошло на пользу ядру

._.

anonymous
()
gentoo drhouse123 # gcc -O2 semtex.c 
gentoo drhouse123 # chmod 777 a.out
gentoo drhouse123 # su nobody -s /bin/bash
nobody@gentoo /home/drhouse123 $ id
uid=65534(nobody) gid=65534(nobody) группы=65534(nobody)
nobody@gentoo /home/drhouse123 $ cd /
nobody@gentoo / $ ls
bin  boot  dev  etc  home  lib  lib32  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  sys  tmp  usr  var
nobody@gentoo / $ ./a.out
bash: ./a.out: Нет такого файла или каталога
nobody@gentoo / $ exit
gentoo drhouse123 # ./a.out
2.6.37-3.x x86_64
sd@fucksheep.org 2010
Убито
gentoo drhouse123 # uname -ra
Linux gentoo 3.7.10-gentoo-r1 #1 SMP Fri May 10 05:48:51 ALMT 2013 x86_64 Pentium(R) Dual-Core CPU E6500 @ 2.93GHz GenuineIntel GNU/Linux
RedEyedMan
()

Я дико извиняюсь, а обязательно эксплойт собирать из под рута и кидать в рут? Или без рута он не работает? Если не работает, в чем смысл?

diver@calculate ~/Загрузки $ ./a.out 
2.6.37-3.x x86_64
sd@fucksheep.org 2010
a.out: semtex.c:81: main: Assertion `p = memmem(code, 1024, &needle, 8)' failed.
Аварийный останов
diver@calculate ~/Загрузки $

Linux calculate 3.8.4-calculate #1 SMP PREEMPT Thu Mar 21 02:52:43 UTC 2013 x86_64 Intel(R) Pentium(R) CPU P6000 @ 1.87GHz GenuineIntel GNU/Linux

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

Ну я собирал по руководству, но всё равно в 13.04 получил уй :( Придётся красноглазить дыбу или ещё что-нибудь достаточно древнее :'(

Valkeru ★★★★
()

ошибка существовала на протяжении последних 2-3 лет

забавно, что никто не обратил внимания на эту фразу :)

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