LINUX.ORG.RU

Уязвимость в ядре Linux позволяет локально повысить свои привилегии до root.


0

0

В версиях ядра Linux 2.4 и 2.2 была обнаружена проблема в ptrace позволяющая локальным пользователям увеличить свои привилегии до уровня администратора (root).

Было выпущено ядро 2.2.25 единстенным изменением в котором является исправление этой проблемы.

Патч для 2.4 ядер доступен по ссылке.

Проблему обнаружил Andrzej Szombierski.

Advisory от RedHat: https://rhn.redhat.com/errata/RHSA-20...

>>> Письмо Alan Cox'а

★★★★★

угу, с пачтеным ядром хрен похакаешь:

[miha@beer tmp]$ gcc -o isec-ptrace-kmod-exploit isec-ptrace-kmod-exploit.c
[miha@beer tmp]$ w
4:34pm up 30 days, 6:35, 3 users, load average: 0.03, 0.05, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
[miha@beer tmp]$ ./isec-ptrace-kmod-exploit
[-] Unable to attach: Operation not permitted
Killed
[miha@beer tmp]$ uname -a
Linux host 2.4.19-grsec-2 #3 SMP Sun Feb 16 09:42:17 EST 2003 i686 unknown

FreeBSD ★★★
()

4Анатолий (пишу здесь, только когда накипело, регится ломы):
ну дык читай про новую дыру в win2000 и IIS и плач.
У меня дома стоит и линукс и винда. Раз в две-три недели я гружу ночью
винду и она качает себе апдейты. Если затянуть с этим, может и
ночи не хватить (диалап...).
А чтобы дырки не очень напрягали, нужно пользоваться различными
хорошими патчиками к ядру, настроечки пожестче выставлять в
конфигах и т.п.

jackill ★★★★★
()

Тривиальный фикс без перезагрузки (для тех кто печется об uptime)
Просто выключаем syscall ptrace.
Для тех кто не в курсе: ptrace предназначен для отладки программы в
отладчике и на файл/web/.. сервере не нужен.

подходит готовый фикс из SOLUTION на
http://www.securitybugware.org/Linux/708.html
Компилируем модуль и подгружаем.
И ждем когда выйдет новое ядро.

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

Кстати, я заметил, что на 2.4.19 вообще ни один фикс не 
работает! Наложил патч - пофигу. 
echo "/" > /proc/sys/kernel/modprobe - пофигу.
предложенный модуль noptrace.o тоже не защищает. 

И вопрос к green'у, так как наверное никто больше не ответит:
Почему эксплойт продолжает работать при снятом бите CAP_SYS_PTRACE ??? Это уж совсем никуда не годится. 
Мне кажется это конкретный баг в ядреных капабилити. 
Зато перестает работать,если выключить CAP_SETUID, но это меня не устраивает.

Смотри, мне кажется вот этот код всегда дает true:

int ptrace_attach(struct task_struct *task)
{
	task_lock(task);
	if (task->pid <= 1)
		goto bad;
	if (task == current)
		goto bad;
	if (!task->mm)
		goto bad;
	if(((current->uid != task->euid) ||
	    (current->uid != task->suid) ||
	    (current->uid != task->uid) ||
 	    (current->gid != task->egid) ||
 	    (current->gid != task->sgid) ||
 	    (!cap_issubset(task->cap_permitted,               current->cap_permitted)) ||
 	    (current->gid != task->gid)) && !capable(CAP_SYS_PTRACE))
		goto bad;

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

>Hi. Дайте хоть кто-нить патч в файле а не в HTML. PLZ. А экслоит работает :((( >Ж*ПА Илья

блин, дал же кто-то в этом форуме выше утилиту, которой этот патч из HTML
выдирается, после выдирания всё патчится.

на всякий случай я выложил патч сюда:
http://make-install.ifirst.ru/misc/kernel-ptrace-patch.diff

anonymous
()

В OpenNA Linux rc1 2.4.20 работает ;) а еще "один из самых защищенных серверных дистрибутивов"

anonymous
()

[serg@www serg]$ ./e
[-] Fatal error: Unknown error 125
Killed
[serg@www serg]$ uname -a
Linux www 2.4.19-grsec #4 Mon Sep 2 10:47:01 MSD 2002 i686 unknown
[serg@www serg]$

anonymous
()

Linux version 2.4.19 (root@) (gcc version 2.96 20000731 (Red Hat Linux 7.1 2.96-81)) #2

isec-ptrace-kmod-exploit.c ------------------------------------------------ [olegs@ tmp]$ ./ch [-] Unable to attach: Operation not permitted Killed ------------------------------------------------

ptrace24.c ------------------------------------------------ [olegs@ tmp]$ ./ch2 attached exec ./ch2 3024 03037: find library=libc.so.6; searching 03037: search cache=/etc/ld.so.cache 03037: trying file=/lib/libc.so.6 03037: 03037: 03037: calling init: /lib/libc.so.6 03037: 03037: 03037: initialize program: grep 03037: 03037: 03037: transferring control: grep 03037: 03037: 03037: calling fini: /lib/libc.so.6 03037: sh-2.04$ id uid=500(olegs) gid=500(olegs) groups=500(olegs) sh-2.04$ exit ----------------------------------------------------------- что бы это значило? P.S. ядро монолитное собрано из src от kernel.org

anonymous
()

Linux version 2.4.19 (root@) (gcc version 2.96 20000731 (Red Hat Linux 7.1 2.96-81)) #2

isec-ptrace-kmod-exploit.c
------------------------------------------------
[olegs@ tmp]$ ./ch [-] Unable to attach: Operation not permitted Killed ------------------------------------------------

ptrace24.c
------------------------------------------------
[olegs@ tmp]$ ./ch2
attached
exec ./ch2 3024
03037: find library=libc.so.6; searching
03037: search cache=/etc/ld.so.cache
03037: trying file=/lib/libc.so.6
03037:
03037:
03037: calling init: /lib/libc.so.6
03037:
03037:
03037: initialize program: grep
03037:
03037:
03037: transferring control: grep
03037:
03037:
03037: calling fini: /lib/libc.so.6
03037:
sh-2.04$ id
uid=500(olegs) gid=500(olegs) groups=500(olegs)
sh-2.04$ exit
exit
----------------------------------------
что бы это значило? P.S. ядро монолитное собрано из src от kernel.org

anonymous
()

я когда сегодня зашел kernel.org думал найти там новое ядро, и .. ничего не увидел... интересно 2.4.21 выйдет в обозримом будущем или мы еще пару месяцев с такой дырой в стабильной ветке будем жить?

anonymous
()

Любителям выдирать из html:

Выдирать ничего не надо, а надо нажать на ссылку [Download message RAW], которая там в самом верху - там тоже самое, только в plain text.

abramoff
()

Помнится были такие проблемы в ядрах 2.2 пару лет назад но тогда
было достаточно поставить -r на свидные проги. По умолчанию эксплойт
работал с passwd...

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

По поводу "не защищает ничего в 2.4.19", все дело в том что жксплойт сам себя делает suid root. так что для проверки нужно всегда удалять бинарь эксплойта перед новой попыткой

То же самое в случае CAP_SYS_PTRACE, и об'ясняет CAP_SETUID поведение. Внимательнее надо быть ;)

А тот код не дает true всегда, && !capable(CAP_SYS_PTRACE) поотму что. А если б он всегда true давал, у тебя бы вообще не работал бы ptrace_attach() ;)

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

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

ptrace24.c - это для 2.4.9 и более ранних, этот баг давно закрыт.

green ★★★★★
() автор топика

2All

Про FreeBSD писал не я.

Я вообще ничего не пишу сюда после 18.0 MSK, если кто заметил.

Рекомендую всем смотреть в сторону уязвимости OpenSSL

и Apache + mod_ssl новый mod_ssl готов 18 марта.

Доступен на http://www.modssl.org

Саныч

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

dz@aegis:~$ ./isec-ptrace-kmod-exploit
[+] Attached to 19142
request-module[net-pf-14]: waitpid(19142,...) failed, errno 1
[+] Waiting for signal
[+] Signal caught
[+] Shellcode placed at 0x4000da2d
[+] Now wait for suid shell...
sh-2.05a#
dz@aegis:~$ uname -a
Linux aegis 2.4.20 #3 SMP Wed Dec 11 18:28:15 ALMT 2002 i686 unknown

гы :-)

anonymous
()

да, действительно, работает модуль,
намудрил я с правами

[fvv@tcha hack]$ uname -a
Linux tcha 2.4.19 #3 25 09:18:23 ULAT 2002 i686 unknown
[fvv@tcha hack]$ rm -f isec
[fvv@tcha hack]$ gcc isec-ptrace-kmod-exploit.c -o isec
[fvv@tcha hack]$ gcc -c noptrace.c
[fvv@tcha hack]$ su
Password:
[root@tcha hack]# insmod noptrace.o
[root@tcha hack]# exit
[fvv@tcha hack]$ ./isec
[-] Unable to attach: Operation not permitted
Killed

anonymous
()

стремная тема - но ничего - пропатчим - главное чтоб успеть =)

кстати nosuid у меня стоит где надо еще давно ...

zmey_fm
()

2Саныч а ты зарегистрируйся, и не будет двоякостей "писал - не писал"

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

Ложная тревога: забыл suid снять :-). На 2.4.21-pre5 exploit действительно не работает (но вот на чистом 2.4.20 - работает). Спасибо green'у за замечание.

asaw ★★★★★
()

2 del (*) (2003-03-18 21:25:49.224)
>>Опять какие-то уроды чужими никами подписываются. Убил бы
>А ты зарегистрируйся

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

Виндузятник

anonymous
()

http://www.grsecurity.net/news.php

March 18, 2003

A note about the recent discovery of the ptrace hole in Linux. Users using PaX as part of grsecurity are not vulnerable to the exploit released, although they are vulnerable if a ret2libc exploit of the hole is written. People using the ACL system of grsecurity who have an ACL subject set up for modprobe are not vulnerable, even in the case of a ret2libc exploit. We'll be releasing 1.9.9d shortly which will fix the ptrace hole and in addition include several updates to the ACL system and ports of PaX to several other architectures. The ptrace fix released publicly does not work on alpha and sparc64, and this has been corrected in the patch as well.

anonymous
()

2 anonymous (*) (2003-03-19 12:49:00.813)

Слышь ты, весь из себя русский, а что означает на родном языке "Виндузятник" ? Или будешь регистрироваться как "Оконник" ? :))))

PitStop
()

2 PitStop (*) (2003-03-19 13:34:43.273)
Слышь, ты, Яма тормозная, а что на твоем языке это означает? Уровень развития? :)))))))))))
(Вариант - остановка в яме) ;)
Виндузятник

anonymous
()

bash-2.05b$ uname -r 2.4.20-gentoo-r2 bash-2.05b$ ./exploime [-] Unable to attach: Operation not permitted Killed

Я тащюсь от их патча с Low Level Shuedeling ;) Играю в ку2, а в фоне мазилка собираттся ;) и не лагует ;) Но это оффтопик ;)

BigBug
()

green (*) (2003-03-19 11:29:07.42)

Проблема старая а фикс (workaround) подходит для новой

Toster
()

green (*) (2003-03-19 11:29:07.42)

Проблема старая а фикс (workaround) подходит для новой

Toster
()

Модуль с http://www.securitybugware.org/Linux/6072.html не собирается - 

zulu@zulu:~$ gcc -c noptrace.c  2>&1 | head
In file included from /usr/include/linux/wait.h:13,
                 from /usr/include/linux/fs.h:12,
                 from /usr/include/linux/capability.h:17,
                 from /usr/include/linux/binfmts.h:5,
                 from /usr/include/linux/sched.h:9,
                 from noptrace.c:5:
/usr/include/linux/kernel.h:73: parse error before `size_t'
/usr/include/linux/kernel.h:75: parse error before `size_t'
In file included from /usr/include/linux/fs.h:15,
                 from /usr/include/linux/capability.h:17,


Комментарии?

Zulu ★★☆☆
()

2 anonymous (*) (2003-03-19 14:31:50.952)

Я вижу намёк тобой не понят. Скорее всего умышленно, ибо вижу что задело .... :))) пошли оскорбления...
Нда-с неувязочка у тебя с ником! А насчёт моего... видали и похуже, а люди были интересные.

PitStop
()

2 PitStop (*) (2003-03-19 17:01:27.129)
Нет, уважаемый, намек не понят. :) Задел проход насчет русского - за это буду отвечать невежливо.
Я вижу, вами мои слова не поняты. Я думаю, намеренно... ;)
Мой ответ был абсолютно симметричен. Вы со стебом перевели мой ник - я ваш (такое предложил PROMT (остановка ямы) при раздельном написании - ничего личного - а в импортных играх я не особо разбираюсь). Вы взяли импортный ник, и написали по импортному. Я взял в качестве ника широко используемое тут словечко, и хочу писать его по-русски. А система не дает... :(
Подстраиваться под систему? Зачем? Туча придурков, которые под меня косят, меня волнуют мало. Обиженных лечить - не моя спецуха. :)
Вы хотите повеселиться? Да я тоже умею... :)

Виндузятник

anonymous
()

2 anonymous (*) (2003-03-19 17:58:01.938)
> Вы со стебом перевели мой ник - я ваш (такое предложил PROMT (остановка ямы) при раздельном написании - ничего личного - а в импортных играх я не особо разбираюсь)

Я вижу вы в совершенстве овладели http://www.translate.ru/text.asp?lang=ru !!!

> Подстраиваться под систему? Зачем? Туча придурков, которые под меня косят, меня волнуют мало. Обиженных лечить - не моя спецуха. :)

Глупо. Долбоебизм ИМХО. С вашей стороны замечу!

> Вы хотите повеселиться? Да я тоже умею... :)

Ваш пост ниже доказывает обратное. -->>

> питстоп давай твой ник переведем?

- получается .... получается ....

короче что-то кроме "пидар" в словаре ничего нет :(

А если это писал не ты, то как мне вас отличать? Вы все на один ник!!!! Многим здесь не стыдно зарегистрироваться, чтобы отвечать за свои слова PTO, Irsi, Antihrist, Ogr (давненько не читали), ... кто тут еще самый радикальный? "Отмазы" не принимаются.

PitStop
()

2 PitStop (*) (2003-03-19 18:39:52.931)
Ошибка. Лицензионный промт стоит у меня на лицензионной винде.
Опять хамите. Хоть и через имхо.
Мне до барабана, что и почему делают Огр, РТО и все остальные. Я по этой теме отвечаю за себя.
Сделают возможность регистрации по-русски - зарегистрируюсь. Не в стыде дело, а в отношении к пользователю. Попробуют заставить при регистрации три раза подпрыгнуть - не буду регистрироваться.
Не могут/хотят сделать - я-то тут при чем? Мне разработчики сказали, что это техническая проблема. А тут говорят, что линукс-рулез, а винда - отстой. Но в других форумах я по-русски регистрировался. Наверное, там, дурачки, глупую винду пользовали.
Ко мне тут (как к пользователю) будут относяться с пофигизмом - такое же отношение будет и с моей стороны.
Ниже (получается .... получается ) был не мой пост.
Хотите отличать - каждый пост отмечен временем.
Считаете отмазкой - ваше дело.

Виндузятник

Зы. Помогите Максиму сделать такое. Объявите подписку на оплату такой работы. Я 50 грин внесу. У макскома мое мыло есть. Давайте ваше - вам по мылу еще раз прогарантирую.

anonymous
()

Если сделать и по-русски и по-англицки то можно будет ники легко
подделывать, а так сложнее.

Toster
()

я, виндузятник-онанимус, торжественно клянусь..

1. кидаться на любого другого анонимуса по малейшему поводу 2. Не регистрироваться ни за что 3. гнать пургу

Виндузятник

ЗЫ хотя я бы мог наверное создать себе юзера Bundy3amnuk, но ума у меня на это не хватает. Ну или юзера a1234567, но это я тоже делать не буду.

Так что, алиасы, добро пожаловать в вечную склоку на ЛОРе

anonymous
()

Я переведу вам ник Виндузятник - Windowsoid.
Можете смело регистрироваться так.

P.S. А вообще ники должны быть английскими. Это же курам на смех,
когда винда посылает на запрос что за пользователь 'гость' по-русски.

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

2green:
> все дело в том что жксплойт сам себя делает suid root.

Ах он гад, и действительно.... Так значит путей защиты от него
нет, кроме перекомпиляции? Все равно, я считаю, что это баг в
capability. Если CAP_SYS_PTRACE снят, то даже root не должен
иметь возможность делать ptrace. Ведь CAP_SETUID работает против root'a.

anonymous
()

Что-то не понял, что значит нету путей?
У меня SuSE 8.0 (Ядро родное), все ставилось на один раздел под reiserfs.
Пускаю под простым юзером на своей машине.

Эксплоит выдает следующее.

[-] Unable to attach: Operation not permitted
Killed

В чем прикол-то?
Я что-то не так сделал?

если эксплоит запускать под рутом то sh запускается.

Пробовал на нескольких редхатовских серваках, эксплоит работал.

Объясните кто разобрался?

Dead ★★★★
()

Я может что-то не так делаю, но у меня алановский патч
на обычное ядро не встает. Во-первых, какой-то файл не
находит в несуществующем каталоге, во-вторых, после этого
ядро не собирается.

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


> если эксплоит запускать под рутом то sh запускается.

Возможно у тебя файловая система смонтирована без suid.
Мне такое не подходит, так как в домашних каталогах вебсервер
с suexec работает.

anonymous
()

Читаем тред:

The patch breaks /proc/<pid>/cmdline and /proc/<pid>/environ for 'non dumpable'
processes, even for root.

We need to access theses proc files for processes monitoring.

Included is a patch to restore this functionnality for root.

И находим патч к патчу :)


http://marc.theaimsgroup.com/?l=linux-kernel&m=104807368719299&w=2

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

Вот под Owl'ом на 2.4.20+ow0+rsbac.

tma!tma:~/src$ ./a.out attached sh-2.05$ whoami tma sh-2.05$

anonymous
()

свежеустановленный mandrake 8.0,ядро х.з. даже какое,уровень безопасности high - эксплойт не работает(operation not permitted), gentoo-2.4.19-rc10 c grsec(high) тоже не пашет(killed)

anonymous
()

ну у меня самособранное ядро 2.4.18 + owl патч - и нихуя не работает этот эксплоит.

anonymous
()

Поляки рулят!

anonymous
()

4Любители XP и прочих ОС:
Сосут только те, у кого ни owl, ни grsecurity патчей не стоит.
Вы таких людей часто видите? Я нет.
Кстати, сегодня вышел новый патч от grsecurity, в котором они
включили патчи от Алана (тем не менее тот патч, о котором я писал
выше, они не включили).
Я, например, себе ядро пересобрал, хотя ssh-сервер у меня не
поднят, сижу я на компе один и вообще это моя домашняя машинка.
Инет по диалапу.
Эксплоит не работал до пересборки, не работает и сейчас.
А уж профессиональные админы наверняка защищаются лучше, чем я.

jackill ★★★★★
()

Интересно, а как быть людям, занимающимся хостингом?

Серваки то обычно в США, удаленно ядро не сильно таки и обновишь.

А суппорт там , тупее тупого, эт я вам тосчно говорю.

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

Попробовал эксплоит -> работает.

Начальство предупредил.

Так это я просто человек не злобный :)

А мог бы бритвочкой и полоснуть ... (С) (из старого анекдота)

Dead ★★★★
()

Есть мысль, что кто-то полоснул бритвочкой по этому сайту.
Вместо ссылки на форум открывается картинка - пробовал в мозилле
и линкс.
Картинку на кодировку iso перевернуло.
Что-то мне это не нравится.
А мыла максикома у меня нет. :(

jackill ★★★★★
()

Ничего не понимаю - теперь работает.
Только перед этим view-section.jsp предлагала качнуть.
Кто-то ночью что-то делает на сервере?

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