Эксплоиты уязвимостей ядра: обновитесь как можно скорее!

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

Одна уязвимость присутствовала с момента появления vmsplice(), так что все ядра начиная с версии 2.6.17 и далее уязвимы. Она была исправлена в версиях 2.6.24.2, 2.6.23.16 и 2.6.22.18. Ей был присвоен идентификатор CVE-2008-0600.

Другая уязвимость впервые появилась в ядре 2.6.23. Она была исправлена в версиях 2.6.23.15 и 2.6.24.1. Этой уязвимости был присвоены идентификаторы CVE-2008-0009 и CVE-2008-0010.

В понедельник в дерево были добавлены gentoo-sources-2.6.23-r8 и gentoo-sources-2.6.24-r2, которые включают исправления для обеих уязвимостей. Установите обновлённую версию gentoo-sources как можно скорее.

Gentoo не выпускает GLSA для ядер из-за огромного количества работы необходимой, чтобы отслеживать 18 существующих ядер и доступные версии каждого из них. Если вы хотите это изменить, свяжитесь с нашей командой безопасности.

Обновление до безопасного ядра

На стабильных системах выполните
# emerge =gentoo-sources-2.6.23-r8

Если вы используете ~arch, выполните
# emerge =gentoo-sources-2.6.24-r2

Обсудить (на англ. языке)!

Daniel Drake и Tobias Scherbaum написали черновик этого объявления. Doug Klima обратил внимание на то, что ядро версии 2.6.23, будучи стабильным, должно использоваться по умолчанию. Donnie Berkholz опубликовал это объявление на www.gentoo.org 13 января 2008. Пётр Волков перевёл и опубликовал на www.gentoo.ru.

Люди помогите запустил я этот

Люди помогите запустил я этот эксплоит.

-----------------------------------
Linux vmsplice Local Root Exploit
By qaaz
-----------------------------------
[+] mmap: 0x0 .. 0x1000
[+] page: 0x0
[+] page: 0x20
[+] mmap: 0x4000 .. 0x5000
[+] page: 0x4000
[+] page: 0x4020
[+] mmap: 0x1000 .. 0x2000
[+] page: 0x1000
[+] mmap: 0xb7ef4000 .. 0xb7f26000
[+] root

Пишу такую команду с помощью шелла chmod 777 /etc/shadow где хранятся пароли но он её не открывает... Вопрос. Как вообще этим эксплоитом пользоваться?

~ $ uname

~ $ uname -r
2.6.23-gentoo-r6

~ $ ./exploit1
-----------------------------------
Linux vmsplice Local Root Exploit
By qaaz
-----------------------------------
[+] addr: 0xc011b81e
[+] root
localhost ~ # whoami
root
localhost ~ #

Собственно работает

exploit.c:30:22: error:

exploit.c:30:22: error: asm/page.h: Нет такого файла или каталога

.

gcc -I /usr/src/linux/include -o Exploit Exploit.c

exploit

Не подскажете, а где можно почитать по-больше о смысле этой уязвимости и способов её использования?
А то соревнуемся с приятелем, кто чью систему вальнёт - классная возможность же получить рутовский доступ как я понял через эту дыру!
Я уже смог открыть у него ssh (ip у него через no-ip.org обновляется) и есть учетка простого пользователя (привелегии, которые по умолчанию для новго пользователя через useradd).

ЗЫ а я сейчас с ddos'ами борюсь, vsftpd он мне почти моментально убивает, хз как. А apache стоит скалой :)

Выше ссылки на 2

Выше ссылки на 2 эксплоита, скачай, да скомпиль.

Глупый вопрос

"Совершенно" не программист, и поэтому можно по буквам от сюда

Цитата:
Выше ссылки на 2 эксплоита, скачай, да скомпиль.

Я пробовал сохранить ссылки, удалил html-теги, потом

%gcc 5093.txt
/usr/lib/gcc/i686-pc-linux-gnu/4.1.2/../../../../i686-pc-linux-gnu/bin/ld:5093.txt: file format not recognized; treating as linker script
/usr/lib/gcc/i686-pc-linux-gnu/4.1.2/../../../../i686-pc-linux-gnu/bin/ld:5093.txt:1: syntax error
collect2: выполнение ld завершилось с кодом возврата 1

Что я сделал не так?

не надо html

Открыть ссылку, выделить всё, копировать, вставить в любимый редактор, сохранить как Exploit.c
а потом "gcc -o Exploit Exploit.c"
а потом "./Exploit"
и увидеть "[-] wtf"

У кого как, у

У кого как, у меня один из экплоитов прохлял. На ванильном ядре 2.6.23.9

У меня вопрос

У меня вопрос ещё глупее. Обновил генту сурцес, дальше то делать что? Я начинаю пересобирать ядро но он собирает старую версию!

час от часу не

час от часу не легче...
eselect kernel list
eselect kernel номер_нового_ядра
eselect kernel list (для проверки)

юзайте харденед!

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

./expl.bin
-----------------------------------
Linux vmsplice Local Root Exploit
By qaaz
-----------------------------------
[+] mmap: 0x0 .. 0x1000
[+] page: 0x0
[+] page: 0x20
[+] mmap: 0x4000 .. 0x5000
[+] page: 0x4000
[+] page: 0x4020
[+] mmap: 0x1000 .. 0x2000
[+] page: 0x1000
[+] mmap: 0x4e405000 .. 0x4e437000
Ошибка сегментирования
daevy@uakalera /mnt/vol2/ftp/downloads $ uname -a
Linux uakalera 2.6.20-hardened-r6 #20 SMP Tue Sep 4 22:38:48 YEKST 2007 i686 Genuine Intel(R) CPU 2160 @ 1.80GHz GenuineIntel GNU/Linux
daevy@uakalera /mnt/vol2/ftp/downloads $ uptime
10:38:27 up 144 days, 17:28, 1 user, load average: 0.01, 0.03, 0.00

харденед!

$ uname -r
2.6.23-hardened-r4

[ebuild R ] dev-util/pkgconfig-0.22 USE="-hardened*" 0 kB
[ebuild R ] sys-libs/glibc-2.6.1 USE="nls -debug -gd -glibc-omitfp -hardened* -multilib -profile (-selinux) -vanilla" 0 kB
[ebuild R ] sys-devel/gcc-3.4.6-r2 USE="nls (-altivec) -bootstrap -boundschecking -build -d -doc -fortran -gcj -gtk -hardened* -ip28 -ip32r10k -multilib -multislot (-n32) (-n64) -nocxx -nopie -nossp -objc -test -vanilla" 0 kB

Ядро еще пока не конфигурил.. т.е.
Grsecurity --->
[ ] Grsecurity
PaX --->
[ ] Enable various PaX features
Miscellaneous hardening features --->
[ ] Sanitize all freed memory
[ ] Prevent invalid userland pointer dereference

http://www.milw0rm.com/exploits/5092

$ ./jessica_biel_naked_in_my_bed
-----------------------------------
Linux vmsplice Local Root Exploit
By qaaz
-----------------------------------
[+] mmap: 0x0 .. 0x1000
[+] page: 0x0
[+] page: 0x20
[+] mmap: 0x4000 .. 0x5000
[+] page: 0x4000
[+] page: 0x4020
[+] mmap: 0x1000 .. 0x2000
[+] page: 0x1000
[+] mmap: 0xb7f46000 .. 0xb7f78000
Segmentation fault

http://www.milw0rm.com/exploits/5093

$ ./diane_lane_fucked_hard
-----------------------------------
Linux vmsplice Local Root Exploit
By qaaz
-----------------------------------
[+] addr: 0xc040d68e
[+] root
#

Консоль рута!

$ uname

$ uname -r
2.6.23-hardened-r4

настроил PaX в ядре, получил:

$ ./diane_lane_fucked_hard
-----------------------------------
Linux vmsplice Local Root Exploit
By qaaz
-----------------------------------
[-] /proc/kallsyms: No such file or directory

$ ./jessica_biel_naked_in_my_bed
-----------------------------------
Linux vmsplice Local Root Exploit
By qaaz
-----------------------------------
[+] mmap: 0x0 .. 0x1000
[+] page: 0x0
[+] page: 0x20
[+] mmap: 0x4000 .. 0x5000
[+] page: 0x4000
[+] page: 0x4020
[+] mmap: 0x1000 .. 0x2000
[+] page: 0x1000
[+] mmap: 0x5223c000 .. 0x5226e000
Segmentation fault

$ paxtest kiddie|blackhat

Executable anonymous mapping : Killed
Executable bss : Killed
Executable data : Killed
Executable heap : Killed
Executable stack : Killed
Executable anonymous mapping (mprotect) : Killed
Executable bss (mprotect) : Killed
Executable data (mprotect) : Killed
Executable heap (mprotect) : Killed
Executable stack (mprotect) : Killed
Executable shared library bss (mprotect) : Killed
Executable shared library data (mprotect): Killed
Writable text segments : Killed
Anonymous mapping randomisation test : 17 bits (guessed)
Heap randomisation test (ET_EXEC) : 13 bits (guessed)
Heap randomisation test (ET_DYN) : 23 bits (guessed)
Main executable randomisation (ET_EXEC) : No randomisation
Main executable randomisation (ET_DYN) : 15 bits (guessed)
Shared library randomisation test : 17 bits (guessed)
Stack randomisation test (SEGMEXEC) : 23 bits (guessed)
Stack randomisation test (PAGEEXEC) : 24 bits (guessed)
Return to function (strcpy) : Vulnerable
Return to function (memcpy) : Vulnerable
Return to function (strcpy, RANDEXEC) : Vulnerable
Return to function (memcpy, RANDEXEC) : Vulnerable
Executable shared library bss : Killed
Executable shared library data : Killed

если будешь пытаться

искать путь чтоб прикрыть
Return to function (strcpy) : Vulnerable
Return to function (memcpy) : Vulnerable
Return to function (strcpy, RANDEXEC) : Vulnerable
Return to function (memcpy, RANDEXEC) : Vulnerable

то вот инфа к размышлению
$ bzless /usr/share/doc/paxtest-0.9.6/README.bz2
================================================================================
Return to function (strcpy)
Return to function (strcpy, RANDEXEC)
Return to function (memcpy)
Return to function (memcpy, RANDEXEC)

Return to function attacks are very nasty. These tests are hard to
stop by kernel patches, but they show that there you should not expect
perfect protection from this kind of security patches.
....
Perfect protection is not possible. That is also the reason why there are
so called return to function tests in paxtest. PaX does not prevent return to
function attacks. Neither do any of the other memory protection patches. But it
is important that people who use kernel patches like PaX do not get a false
sense of security. As the PaX documentation points out: There are three
different classes of attacks, and at this moment PaX can only guarantee
protection against one of them
================================================================================

второй сплойт тоже не прошел

dave@fenrir ~ $ ./5093
-----------------------------------
Linux vmsplice Local Root Exploit
By qaaz
-----------------------------------
[-] /proc/kallsyms: No such file or directory
dave@fenrir ~ $

на одном картина чуть по другому...

dave@proxy ~ $ /home/dave/5093
-----------------------------------
Linux vmsplice Local Root Exploit
By qaaz
-----------------------------------
[+] addr: 0xc0149fab
[-] wtf
dave@proxy

У меня тоже

У меня тоже сработало, обновил ядро до 2.6.24-gentoo-r2 и теперь все гуд.

Ну как бы тебе

Ну как бы тебе сказать. Это у тебя оно так сработало. А у меня сервак вырубился, но через какое-то время снова появился в сети. Аптайм сбросился в 0. А это значит что ядро было достаточно повреждено, чтобы вызвать перезагрузку. Это конечно лучше, чем рутовая консоль, но все равно плохо. А фикса для hardened ядра пока нет.

ну тут много моментов.

может что то не включено просто?
а вобще что показывает paxtest blackhat?
ps. 4 сервера с харденед ядрами, устояли, продолжали работать дальше в нормальном режиме
еще pps)) фикса для харденед ядра и не будет имхо, дыра то в Ядре, а харденед это же просто патчи которые накладываются на обычное Ядро, можно пофиксеное ядро скачать и самостоятельно патчи наложить

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".