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)

Ответ на: комментарий от liberte

liberte

Насколько я понял, ASLR помогает против эксплойта. Т.е. Hardened Gentoo, например, взломать с его помощью не получится.

exploit@backbone ~ $ cc mempodipper.c && uname -a && ./a.out ; whoami
Linux backbone 3.1.5-hardened #1 Mon Jan 9 18:02:05 MSK 2012 x86_64 AMD Athlon(tm) 64 Processor 3500+ AuthenticAMD GNU/Linux
===============================
=          Mempodipper        =
=           by zx2c4          =
=         Jan 21, 2012        =
===============================

[+] Opening socketpair.
[+] Waiting for transferred fd in parent.
[+] Executing child from child fork.
[+] Opening parent mem /proc/7118/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
exploit

Во всяком случае, скомилировалось, так что уже СТРАШНО ЖИТЬ! :)

backbone ★★★★★
()

Как важно правильно выбрать дистрибутив. OpenSUSE 11.4, весь свежий софт есть, апдейты приходят, ядро

xxx@neuromancer:~> uname -r 2.6.37.6-0.9-pae

До нас нас бага недожила, это очень радует. Кто ставит себе в качестве основной последнюю версию дистрибутива, и это не Debian и не RedHat/клоны, тот ССЗБ. Стон в каментах по поводу решета вызывает недоумение.

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

Попробуй запустить ./a.out -o 0x402178, или ./a.out -o `objdump -d /bin/su | grep 'exit@plt' | head -n 1 | cut -d ' ' -f 1 | sed 's/^[0]*\([^0]*\)/0x\1/'` У меня без опций тоже неработает, а если указать смещение так работает.

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

Но с генту это не пройдет - на каждой машине смещение в /bin/su уникально.

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

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

Т.е. все твои сервера предназначены для использования ограниченым кругом лиц?

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

PS: У меня эксплойт запустился без проблем и отработал, но никакого эффекта. Я и так и сяк..

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

Оказывается только убунта и есть линукс, а у всех остальных что за ядро?

У остальных - другие версии ядра.

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

Ты вот прямо сходил и сравнил 3.0 и 3.2 между собой чтобы такое утверждать?

Патч небольшой, это не так сложно проверить.

2) главное скорость выпуска апдейтов. А кол-во умственных способностей которое нужно для выпуска патча меня не волнует.

Я к тому, что работу сделали не мейнтейнеры ubuntu. Они просто наложили готовый патч.

действительно, выпущенные security advisories это плод больного воображения мейнтейнеров.

А какие еще? Только rhel6 - и то тут умники сами сбекпортили себе грабли.

myhand
()

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

Снова порадовался за Debian, в стабильной ветке которого ядро 2.6.32.

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

что работу сделали не мейнтейнеры ubuntu. Они просто наложили готовый патч.

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

А какие еще?

вот выйдёт advisory увидишь в reference список дистров.

true_admin ★★★★★
()

Решето, епт. Сначала фейл с qemu, теперь это. Интересно, когда они начнут извлекать уроки? Или не начнут...

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

Попробуй запустить ./a.out -o 0x402178, или ./a.out -o `objdump -d /bin/su | grep 'exit@plt' | head -n 1 | cut -d ' ' -f 1 | sed 's/^[0]*\([^0]*\)/0x\1/'` У меня без опций тоже неработает, а если указать смещение так работает.

Да он с любым смещением пишет, что работает, но результата не видно.
Кстати, на то, чтобы objdump для su запустить нужен root, бог с ним, выполнил от root.

BITS 64 ; This shell code sets uid and gid to 0 and execs a shell in interactive mode. ; It also reopens stderr that was previously saved inside fd 6, for use with mempodipper. ; ; by zx2c4

Шелл ин интерактив моде не наблюдается. Чего-то не понял или делаю не так?

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

какие уроки? примерно раз в год осенью-зимой появляется критичная уязвимость в ядре
интересное совпадение кстати

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

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

ой ли...

$ ls -l /bin/su
-rws--x--x 1 root root 39336 июня 9 2011 /bin/su

$ objdump -d /bin/su | grep 'exit@plt' | head -n 1 | cut -d ' ' -f 1 | sed 's/^[0]*\([^0]*\)/0x\1/'
objdump: /bin/su: Permission denied

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

true_admin

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

Так для вызова objdump root нужен.

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

можно использовать не su, а например gpasswd

Я конечно извиняюсь... но генту это такая генту...
$ ls -l /usr/bin/gpasswd
-rws--x--x 1 root root 63128 июня 9 2011 /usr/bin/gpasswd

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

Update 2: as it turns out, Fedora very aptly compiles their su with PIE, which defeats this attack. They do not, unfortunately, compile all their SUID binaries with PIE, and so this attack is still possible with, for example, gpasswd.

веселуха

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

судя по сообщениями на этом форуме, машинки с ним только линухоиды покупают

Довольно странный выбор, есть же FreeDos, причём и на ThinkPad T, а за Starter надо платить и ставиться он только на г.

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

в 6ке kernel.randomize_va_space = 2 по-умолчанию, так что злорадство не в тему

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

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

В нормальных дистрах читать такие тулзы юзеру не дают... и правильно.

в смысле suid-ные типа sudo, ping, etc? И это правильно?

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

В генте su как и gpasswd идёт без прав на чтения для юзеров. У меня обычная гента не харденед и если в ручную указать смещение то пашет. Хотя на ноуте у меня 2.6.32-r41 (в 3 были баги с суспендом).

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

в смысле suid-ные

Просто прав на чтение нету похоже.

kolan@corka ~/tmp $ ll /bin/ls /bin/su
-rwxr-xr-x 1 root root 116512 Янв 15 19:56 /bin/ls
-rws--x--x 1 root root  56112 Сен 27 02:07 /bin/su

А каков результат должен быть - так и не понял...

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

я про

И это правильно?

не вижу особой надобности впринципе оставлять a+r для этих суидников
я не прав?

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

В генте su как и gpasswd идёт без прав на чтения для юзеров.

зато /proc/pid/mem читается. оттуда можно выдрать всё что нужно.

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

не вижу особой надобности впринципе оставлять a+r для этих суидников

я тоже не вижу если мы сейчас обсуждаем права на файлах. И лично я за то чтобы юзер мог как можно меньше лазить по системе в дефолтных настройках.

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

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

Anyone with the correct permissions could write to process memory. It turns out, of course, that the permissions checking was done poorly. This means that all Linux kernels >=2.6.39 are vulnerable, up until the fix commit for it a couple days ago

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

Просто прав на чтение нету похоже.

Хы, а в убунте есть. Но в данном случае это не спасёт т.к. можно читать через proc (если я правильно понял).

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

ну и для ядер младше 2.6.39

Выявленная проблема по своему проявляется и для более старых ядер Linux до версии 2.6.39, для которых потенциально возможно проведение менее опасных атак, связанных с чтением областей памяти процессов (например, возможно чтение остающихся в памяти определённого процесса криптографических ключей, хэшей паролей и других приватных данных).

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

Через proc, м...

Кстати, в обычной Gentoo pf-sources сработало, в Hardened Gentoo пока безрезультатно... [поставить нужный смайл]

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

в Hardened Gentoo пока безрезультатно...

так там из-за kernel.randomize_va_space оно так просто не заработает. Нужен «коммерческий» эксплоит который умеет находить нужное место в памяти.

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

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

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

эксплойт из первого поста - не панацея
к твоей системе он может и не применим, но уязвимость (Anyone with the correct permissions could write to process memory) есть

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

по скрипту:
а почему жестко проверяется /proc/self ?
у него все внутри имеет юзера овнером, в т.ч. и mem:

$ ls -l /proc/self/mem
-rw------- 1 jam jam 0 янв. 24 01:02 /proc/self/mem

в отличие от suid'ных процессов, запущенных юзером:

$ ls -l /proc/«`pidof su`»/mem
-rw------- 1 root root 0 янв. 24 00:48 /proc/8759/mem

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

а эт не мой скрипт, а от шапки и его модификация от спендера

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