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 ()

Скорее всего дело было крайне обычным: что-то в попыхах на коленке сделано (с расчетов на причесывание кода в будущем), да потом позабыто.

alex-w ★★★★★
()

>в архитектуре Win32/64 подобные плюхи принципиально невозможны

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

nu11 ★★★★★
()

вроде как уже обсуждалось

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

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

rtfm
()

ох неты!!1 в какую версию войдет патч?

Osmos ★★
()

У меня уже Ksplice Uptrack в Ubuntu выдал алярм по этому поводу и рантайм-патч наложился.

Nao ★★★★★
()

>сама возможность подобного лихого обращения с нулевыми указателями в современной ОС вызывает некоторое недоумение - к примеру, в архитектуре Win32/64 подобные плюхи принципиально невозможны

А чего тут удивительного? Ведь в лохматых 2000 годах код ядра писали всякие красноглазые уроды. Сколько еще открытий чудных нас ожидает в будущем?

Sun-ch
()
Ответ на: комментарий от A_Hariton

а чувак вполне серьёзно! Он там ещё в другом посте о китайских хакерах и ФСБ писал... ТОже стоит почитать )))))))

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

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

vovans ★★★★★
()

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

эээ... исключения при обращении к диапазонам адресов происходят если MMU настроен соответствующим образом (не "замаплен"?). _обычно_ большой участок от 0x0 до непомню скольки именно так и помечается. да, это делается большинством ОС, специально для упрощения отлова распространённых ошибок. Win9x тут совершенно ни при чем.

rudchenkos
()

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

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

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

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

У меня тоже не работает -- пульсаудио нет.

Интересно, почему уже второй баг в ведре эксплуатируют с помощью pulseaudio? Может проблема и не в ведре-то вовсе? :)

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

>Это даст дополнительный козырь вендотроллям... И попробуй потом убеди их в том, что это уже исправлено!

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

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

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

Ппц.. так что продолжение следует ))) когда всё забудется ))

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

вот именно. А кто уверен ещё, что вендотроллей надо убеждать, ссылка выше )) там и аська, и телефон его есть... можно мило поболтать, рассказать, что Линукс не дыряв...

Просто, если люди не соображают в принципе, то и убеждать их...

vovans ★★★★★
()

> Что и приводит к возможности внедрения кода, выполняющегося с правами ядра - достаточно положить его в нулевую страницу памяти.

Не понял... Осталось только понять, как положить что-то в нулевую страницу ядру. И какую дополнительную пользу при такой возможности даёт сабжевая дырка.

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

> почему уже второй баг в ведре эксплуатируют с помощью pulseaudio? Может проблема и не в ведре-то вовсе?

Проблема — в особенностях построения системы, которые в обычных условиях не позволяют „за просто так“ поэксплуатировать даже критические баги. Вот и приходится создавать костыли наподобие pulseaudio, специально для подкормки оффтопикотроллей.

k336184
()

Во-первых, КАК что-то в указанную "нулевую страницу" положить? Тем более, что в "нулевой странице" должен быть как минимум кусок биоса, за неизменностью которого следит ведро, опции:
X86_CHECK_BIOS_CORRUPTION [=y]
X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK [=y]
X86_RESERVE_LOW_64K [=y]

Во-вторых... Вы хоть в собирающий скрипт заглядывали? Код собирается с опцией "-fno-stack-protector".

В-третьих...

r00t@r00t:/$ uname -a
Linux r00t 2.6.29.6madebyR00T #1 SMP Mon Jul 20 12:07:12 MSD 2009 i686 Intel(R) Core(TM)2 Duo CPU T7700 @ 2.40GHz GenuineIntel GNU/Linux
r00t@r00t:/$ cat /etc/slackware-version
Slackware 12.2.0
r00t@r00t:/$

Ведро самосборное.

под юзером:

r00t@r00t:/tmp/wunderbar_emporium$ ./exploit
[+] MAPPED ZERO PAGE!
[+] Resolved commit_creds to 0xc024d230
[+] Resolved prepare_kernel_cred to 0xc024d130
unable to find a vulnerable domain, sorry
r00t@r00t:/tmp/wunderbar_emporium$

и даже под рутом.
root@r00t:/tmp/wunderbar_emporium# ./exploit
[+] MAPPED ZERO PAGE!
[+] Resolved commit_creds to 0xc024d230
[+] Resolved prepare_kernel_cred to 0xc024d130
unable to find a vulnerable domain, sorry
root@r00t:/tmp/wunderbar_emporium#

Вывод: не стоит выеденного яйца.

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

>пожалуй только minix 3 ожил, после того как Таненбаум получил грант...

Ну не только. Смотри L4 (OkL4)

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

>> Осталось только понять, как положить что-то в нулевую страницу ядру

> С патчем - к счастью, уже никак.

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

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

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

"... Recent kernels with mmap_min_addr support may prevent exploitation if
the sysctl vm.mmap_min_addr is set above zero. However, administrators
should be aware that LSM based mandatory access control systems, such
as SELinux, may alter this functionality.

It should also be noted that all kernels up to 2.6.30.2 are vulnerable to
published attacks against mmap_min_addr. ..."

( http://permalink.gmane.org/gmane.comp.security.full-disclosure/68951 )

$ sysctl vm.mmap_min_addr
vm.mmap_min_addr = 65536

$ uname -r
2.6.30.4

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

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

АЙ КАК ТОЛСТО!

PS Обьясните несепциалисту в ядре linux действительно ли мапится нулевой адрес? И если да то как Линус коментирует такой баг "by disign"?

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

> у тя ж всегда Gentoo было?!

И сейчас Генту. Бубунта - на работе.

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

r00t@r00t:~$ sysctl vm.mmap_min_addr
error: "vm.mmap_min_addr" is an unknown key
r00t@r00t:~$

Ы? :)

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

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

Ну молодец, что не ведётся...

Dmitry_Sokolowsky ★★★★★
()

>Если точнее, затрагивает все ядра 2.4 и 2.6, восходя аж к 2001 году

Решето

>в архитектуре Win32/64 подобные плюхи принципиально невозможны

Перехожу на винду ;)

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

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

> amd64?

Да, у меня то же самое.

Как его собрать под x86_64?

Rubystar ★★
()

>./wunderbar_emporium.sh mv: невозможно выполнить stat для `pwnkrnel.c': Нет такого файла или каталога pulseaudio: no process killed [+] MAPPED ZERO PAGE! [+] Resolved security_ops to 0xc07bb160 [+] Resolved sel_read_enforce to 0xc04c7a8f unable to find a vulnerable domain, sorry [+] MAPPED ZERO PAGE! [+] Resolved security_ops to 0xc07bb160 [+] Resolved sel_read_enforce to 0xc04c7a8f unable to find a vulnerable domain, sorry mv: невозможно выполнить stat для `pwnkernel2.c': Нет такого файла или каталога rm: невозможно удалить `pwnkernel1.c': Нет такого файла или каталога

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

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

# sysctl vm.mmap_min_addr
vm.mmap_min_addr = 65536
# uname -r
2.6.27.24-170.2.68.fc10.x86_64

# sysctl vm.mmap_min_addr
vm.mmap_min_addr = 65536
# uname -r
2.6.18-155.el5

$ sysctl vm.mmap_min_addr
vm.mmap_min_addr = 32768
$ uname -r
2.6.29.6-217.2.3.fc11.i586

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

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