LINUX.ORG.RU

Обнаружена уязвимость в ядре Linux от 2.6.37 до 3.8.10

 , ,


3

4

Вчера в сети появился рабочий эксплоит для всех версий ядра Linux от 2.6.37 до 3.8.10, позволяющий локальному пользователю получить права root. Эксплоит работает лишь на платформе amd64. В RHEL/CentOS 6 данная уязвимость была бэкпортирована в ядро 2.6.32. Таким образом, уязвимыми оказались все основные выпуски наиболее популярных серверных дистрибутивов: Debian 7.0, RHEL/CentOS 6, Ubuntu 12.04. О выходе обновлений, закрывающих уязвимость, пока ничего не сообщается.

>>> Исходники и краткая информация

Это модуль для скайпа и гугль хрома? ;)

pacify ★★★★★ ()

semtex.c

Ubuntu 12.04.2:

lu@OPTIMA:~$ uname -a
Linux OPTIMA 3.5.0-28-generic #48~precise1-Ubuntu SMP Wed Apr 24 21:42:24 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

lu@OPTIMA:~/dl$ gcc semtex.c

lu@OPTIMA:~/dl$ ./a.out
Убито

pacify ★★★★★ ()

Gentoo Hardened не работает ещё умудряется сегфолиться, лол.

sb0y@fabian ~ $ uname -a
Linux fabian 3.8.3-hardened #1 SMP Fri Apr 26 04:05:24 MSK 2013 x86_64 Intel(R) Xeon(R) CPU X3450 @ 2.67GHz GenuineIntel GNU/Linux

sb0y@fabian ~ $ gcc -O2 -o ex ex.c

sb0y@fabian ~ $ ./ex 
2.6.37-3.x x86_64
sd@fucksheep.org 2010
Ошибка сегментирования

sb0y@fabian ~ $ whoami
sb0y

sb0y@fabian ~ $ ./ex 
2.6.37-3.x x86_64

sd@fucksheep.org 2010
ex: ex.c:86: main: Assertion `!setuid(0)' failed.
Аварийный останов

sb0y@fabian ~ $ ./ex 
2.6.37-3.x x86_64
sd@fucksheep.org 2010
ex: ex.c:86: main: Assertion `!setuid(0)' failed.
Аварийный останов

sb0y@fabian ~ $ ./ex 
2.6.37-3.x x86_64
sd@fucksheep.org 2010
ex: ex.c:86: main: Assertion `!setuid(0)' failed.
Аварийный останов

sb0y@fabian ~ $ whoami
sb0y
Sb0y ()
Ответ на: комментарий от xtraeft

Linux wk 3.8.0-19-generic #30-Ubuntu SMP Wed May 1 16:35:23 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
Не работает

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

уже третий эскплоит за год, который не компилируется

гопники имени тоже не спрашивают

frame ★★★ ()

Debian Wheezy-прилетело security обновление. А я-то думал, чей-то спустя 3 недели после релиза они чего-то с ядром химичат, а оно вот что...

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

Я почти уверен, что до фикса об этой уязвимости никто не знал. Ну а опубликование PoC уязвимости является отличным стимулятором для обновления с уязвимых ядер.

cruxish ★★★★ ()

Debian 7.0

так я и знал, проблемы только у пионеров.

раньше 7.0.3 об обновлении думать рано.

muon ★★★ ()

Странно, от оптимизации зависит.

$ gcc-4.6.3 exp.c -o ./exploit -O0 $ ./exploit 2.6.37-3.x x86_64 sd@fucksheep.org 2010 exploit: exp.c:81: main: Assertion `p = memmem(code, 1024, &needle, 8)' failed. Аварийный останов $ gcc-4.6.3 exp.c -o ./exploit -O1 $ ./exploit 2.6.37-3.x x86_64 sd@fucksheep.org 2010 exploit: exp.c:81: main: Assertion `p = memmem(code, 1024, &needle, 8)' failed. Аварийный останов $ gcc-4.6.3 exp.c -o ./exploit -O2 ./exploit 2.6.37-3.x x86_64 sd@fucksheep.org 2010 # logout $ gcc-4.6.3 exp.c -o ./exploit -O3 $ ./exploit 2.6.37-3.x x86_64 sd@fucksheep.org 2010 # logout $

mittorn ★★★★★ ()

Debian 7.0

Не воспроизводится.

Gotf ★★★ ()
Ответ на: на debian 7 работает от disee

Debian Wheezy обновился

Linux fermi 3.2.0-4-amd64 #1 SMP Debian 3.2.41-2+deb7u2 x86_64 GNU/Linux
Эксплоит больше не работает
$ ./a.out 
a.out: semtex.c:51: sheep: Assertion `!close(fd)' failed.
Аварийный останов

Jurik_Phys ★★★★★ ()

хорошо. у меня сегодня обновилось до 3.8.12 и 3.9.2 (я глупость сказал ;)

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

//говорят и на дебиане работает

олдстейбл ведро не попадает, МКС в безопасности :)

pihter ★★★ ()

Патчи для эксплоита будут?

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

Лол :)

А может мы просто к кому то в гости идти собираемся :)

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

Я почти уверен, что до фикса об этой уязвимости никто не знал.

продолжай утешать себя

xtraeft ★★☆☆ ()
Ответ на: В gentoo работает от MinimumLaw

Эксплоит сосёт

У меня код собрался без проблем и даже замечаний.

$ uname -a
Linux host 3.7.8-hardened #3 SMP Sun Mar 24 16:10:35 KRAT 2013 x86_64 Genuine Intel(R) CPU 2160 @ 1.80GHz GenuineIntel GNU/Linux
$ gcc -v
Используются внутренние спецификации.
COLLECT_GCC=/usr/x86_64-pc-linux-gnu/gcc-bin/4.6.3/gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-pc-linux-gnu/4.6.3/lto-wrapper
Целевая архитектура: x86_64-pc-linux-gnu
Параметры конфигурации: /var/tmp/portage/sys-devel/gcc-4.6.3/work/gcc-4.6.3/configure --prefix=/usr --bindir=/usr/x86_64-pc-linux-gnu/gcc-bin/4.6.3 --includedir=/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.3/include --datadir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.6.3 --mandir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.6.3/man --infodir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.6.3/info --with-gxx-include-dir=/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.3/include/g++-v4 --host=x86_64-pc-linux-gnu --build=x86_64-pc-linux-gnu --disable-altivec --disable-fixed-point --without-ppl --without-cloog --enable-lto --enable-nls --without-included-gettext --with-system-zlib --enable-obsolete --disable-werror --enable-secureplt --enable-multilib --enable-libmudflap --disable-libssp --enable-esp --enable-libgomp --with-python-dir=/share/gcc-data/x86_64-pc-linux-gnu/4.6.3/python --enable-checking=release --disable-libgcj --enable-libstdcxx-time --enable-languages=c,c++,fortran --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu --enable-targets=all --with-bugurl=http://bugs.gentoo.org/ --with-pkgversion='Gentoo Hardened 4.6.3 p1.11, pie-0.5.2'
Модель многопоточности: posix
gcc версия 4.6.3 (Gentoo Hardened 4.6.3 p1.11, pie-0.5.2)
Вот запустить чужеродный бинарник оказалось уже проблемно:
$ ./semtex 2.6.37-3.x x86_64
bash: ./semtex: Отказано в доступе
$ su 
# cat /proc/sys/kernel/grsecurity/romount_protect
0
# mount -o remount,exec /home/
# exit
$ ./semtex 2.6.37-3.x x86_64
bash: ./semtex: Отказано в доступе
$ su
# cat /proc/sys/kernel/grsecurity/tpe
1
# cat /proc/sys/kernel/grsecurity/grsec_lock
1
# cp /home/user/semtex /bin/
cp: нeвoзмoжнo coздaть oбычный фaйл «/root/semtex»: Фaйлoвaя cиcтeмa дocтyπнa тoльĸo для чтeния
# mount -wo remount /
# cp /home/user/semtex /bin/
# exit
$ semtex 2.6.37-3.x x86_64
УРА! Эксплоит удалось запустить и он чё-то сделал. Результат: приглашение входа в систему! Пробуем зайти под этим злым пользователем и система его уже не пускает. Входим под рутом опять и смотрим логи ядра:
[ 3812.265852] PAX: please report this to pageexec@freemail.hu
[ 3812.265866] BUG: unable to handle kernel paging request at 000000038212d06c
[ 3812.265893] IP: [<ffffffff81092595>] sw_perf_event_destroy+0x28/0x85
[ 3812.265912] PGD 64552000 
[ 3812.265919] Thread overran stack, or stack corrupted
[ 3812.265927] Oops: 0002 [#1] SMP 
[ 3812.265937] Modules linked in: bsd_comp xt_LOG iptable_filter ppp_synctty ppp_async crc_ccitt ppp_generic slhc vhost_net tun macvtap macvlan joydev radeon lpc_ich parport_pc i2c_i801 floppy acpi_cpufreq mperf thermal fan processor pcspkr dm_zero dm_round_robin dm_multipath dm_bufio xts gf128mul aes_x86_64 fuse jfs btrfs multipath linear raid10 raid456 async_pq async_xor xor async_memcpy async_raid6_recov raid6_pq async_tx dm_snapshot dm_crypt dm_mirror dm_region_hash dm_log hid_sunplus hid_sony hid_samsung hid_pl hid_petalynx hid_monterey hid_microsoft hid_logitech hid_gyration hid_ezkey hid_cypress hid_chicony hid_cherry hid_belkin hid_apple hid_a4tech sl811_hcd ohci_hcd usb_storage mpt2sas raid_class aic94xx libsas qla2xxx megaraid_sas megaraid_mbox megaraid_mm megaraid aacraid sx8 DAC960 hpsa cciss 3w_9xxx 3w_xxxx mptsas scsi_transport_sas mptfc scsi_transport_fc scsi_tgt mptspi mptscsih mptbase atp870u dc395x qla1280 dmx3191d sym53c8xx gdth advansys initio BusLogic arcmsr aic7xxx aic79xx scsi_transport_spi sg pdc_adma sata_inic162x sata_mv ata_piix ahci libahci sata_qstor sata_vsc sata_uli sata_sis sata_sx4 sata_nv sata_via sata_svw sata_sil24 sata_sil sata_promise pata_sl82c105 pata_cs5530 pata_cs5520 pata_via pata_jmicron pata_marvell pata_sis pata_netcell pata_sc1200 pata_pdc202xx_old pata_triflex pata_atiixp pata_opti pata_amd pata_ali pata_it8213 pata_pcmcia pcmcia pcmcia_core pata_ns87415 pata_ns87410 pata_serverworks pata_platform pata_artop pata_it821x pata_optidma pata_hpt3x2n pata_hpt3x3 pata_hpt37x pata_hpt366 pata_cmd64x pata_efar pata_rz1000 pata_sil680 pata_radisys pata_pdc2027x
[ 3812.266412] CPU 0 
[ 3812.266420] Pid: 18610, comm: semtex Not tainted 3.7.8-hardened #3 OEM OEM/945 7AD Series
[ 3812.266432] RIP: 0010:[<ffffffff81092595>]  [<ffffffff81092595>] sw_perf_event_destroy+0x28/0x85
[ 3812.266447] RSP: 0018:ffff880064c51dd8  EFLAGS: 00010246
[ 3812.266456] RAX: ffffffff8109256d RBX: ffff880067c00400 RCX: ffff8800660efc80
[ 3812.266467] RDX: ffffffff8109256d RSI: ffff8800660efc80 RDI: ffff880067c00400
[ 3812.266476] RBP: 00000000ffffffff R08: 0000000000000000 R09: 0000000000000246
[ 3812.266487] R10: 00000000ffffff02 R11: 0000000000000246 R12: ffff8800660efc8c
[ 3812.266496] R13: ffff8800bc001480 R14: ffff88006d4b36c0 R15: ffff88008b06c8d0
[ 3812.266507] FS:  0000029cb21b2700(0000) GS:ffff8800bfc00000(0000) knlGS:0000000000000000
[ 3812.266517] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 3812.266526] CR2: 000000038212d06c CR3: 0000000001875000 CR4: 00000000000007f0
[ 3812.266536] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[ 3812.266545] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
[ 3812.266556] Process semtex (pid: 18610, threadinfo ffff88006e999368, task ffff88006e998f40)
[ 3812.266565] Stack:
[ 3812.266570]  ffffffff8109256d ffff880067c00400 ffff8800660efc90 ffffffff8109379d
[ 3812.266586]  ffff880067c00400 ffffffff8109384c ffff88008b06c8c0 0000000000000008
[ 3812.266603]  ffff8800bc001480 ffffffff81093f11 ffff88008b06c8c0 ffffffff810d5d75
[ 3812.266620] Call Trace:
[ 3812.266629]  [<ffffffff8109256d>] ? swevent_hlist_put_cpu.isra.49+0x5d/0x5d
[ 3812.266640]  [<ffffffff8109379d>] ? free_event+0x113/0x138
[ 3812.266650]  [<ffffffff8109384c>] ? perf_event_release_kernel+0x8a/0x97
[ 3812.266661]  [<ffffffff81093f11>] ? perf_release+0x10/0x1a
[ 3812.266673]  [<ffffffff810d5d75>] ? __fput+0x103/0x1e8
[ 3812.266684]  [<ffffffff8104df96>] ? task_work_run+0x99/0xb7
[ 3812.266695]  [<ffffffff81002534>] ? do_notify_resume+0x4a/0x61
[ 3812.266707]  [<ffffffff81866248>] ? int_signal+0x12/0x17
[ 3812.266715] Code: 06 7d 00 55 53 48 89 fb 50 48 83 bb 00 02 00 00 00 48 8b ab a8 00 00 00 74 11 be c2 14 00 00 48 c7 c7 ea 68 b8 81 e8 1a f9 f9 ff <f0> ff 0c ad 70 d0 12 82 71 0a f0 ff 04 ad 70 d0 12 82 cd 04 8b 
[ 3812.266868] RIP  [<ffffffff81092595>] sw_perf_event_destroy+0x28/0x85
[ 3812.266880]  RSP <ffff880064c51dd8>
[ 3812.266887] CR2: 000000038212d06c
[ 3812.268339] ---[ end trace 97861ce40cd62802 ]---
[ 3812.268343] grsec: banning user with uid 1002 until system restart for suspicious kernel crash
Ядру GNU/Linux пользователь не понравился и оно убило все его процессы и запретило вход в систему. Остальные пользователи сие даже не почувствовали.

Итог:

1 эксплоит удалось запустить только установив его с правами рута

2 ядро справилось с эксплоитом и все другие работающие пользователи и процессы не почувствовали крека.

А вы ещё до сих пор собираете ядро без поддержки CONFIG_PAX_KERNEXEC=y ;) ?!!

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

Патчи для эксплоита будут?

Пересобери любое ядро с

CONFIG_PAX_KERNEXEC=y
CONFIG_GRKERNSEC_KERN_LOCKOUT=y

http://en.wikibooks.org/wiki/Grsecurity/Appendix/Grsecurity_and_PaX_Configura...

Для Ъ

Active kernel exploit response

Configuration option: CONFIG_GRKERNSEC_KERN_LOCKOUT
If you say Y here, when a PaX alert is triggered due to suspicious activity in the kernel (from KERNEXEC/UDEREF/USERCOPY) or an OOPs occurs due to bad memory accesses, instead of just terminating the offending process (and potentially allowing a subsequent exploit from the same user), we will take one of two actions:

    If the user was root, we will panic the system
    If the user was non-root, we will log the attempt, terminate all processes owned by the user, then prevent them from creating any new processes until the system is restarted

This deters repeated kernel exploitation/bruteforcing attempts and is useful for later forensics.
multihead ()
Ответ на: комментарий от multihead

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

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

Если используешь пионерский дистр типа редхеда, сузи, бубунты, даже простого деба (не харденед), то ССЗБ.

В нормальных дистрах Linux всё уже скомпилили правильно и ничего перекомпилять не надо.

Если его ещё админ не пионер ставил, а хотя бы комсомолец, то все вери только сосут.

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

продолжай утешать себя

Так а мне-то что, я админ локалхоста, мой домашний арчик чересчур свеж для этого.

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

Всё, ухожу на венду, там достаточно просто по порнухе пройтись без антивиря и файрволла.

Что то вы усложняете. Просто запустите exe-ник из почтовика и всё.

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

Хех. Вся проблема в том, что нативными почтовыми клиентами среди виндузятников в наше время мало кто пользуется. А вот по голым жопам до сих пор жмакают. Кстати, можно вирус прямиком через Жабу подцепить, просто попав на заражённый сайт, ничего не жмакаю.

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

надо весь трафик через цепочку проксей пропускать:

inet - privoxy - (havp + clamav) - (squid + squidguard + blacklist) - юзверь

squidguard + blacklist - забанит явно вредоносные сайты, но при условии хорошего списка и настройки.

havp + clamav - просканит всё на вирусы

privoxy - удалит личную, приватную информацию и срежет рекламу.

Сложность с SSL трафиком, для гарантии что через фифрованные тунели ничего не пройдёт, надо весь трафик перед privoxy разшифровывать, а чтобы клиент ничего не заметил после squid зашифровывать назад. Всё что не разшифровалось банить!

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

Кстати, можно вирус прямиком через Жабу подцепить, просто попав на заражённый сайт, ничего не жмакаю.

Можно конечно, причем без относительно OS.

Поэтому во первых java не нужна, во вторых нефиг шариться по помойкам

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

надо весь трафик через цепочку проксей пропускать:

А еще нужно обновляться. Постоянно и не только базы к антивирусу

TEX ★★ ()
$ uname -r
3.7.10-gentoo

C -O2 взлетело сразу, без оного вот:

$ ./semtex
2.6.37-3.x x86_64
sd@fucksheep.org 2010
semtex: semtex.c:81: main: Assertion `p = memmem(code, 1024, &needle, 8)' failed.
Аварийный останов
Хорошо, что сегодня обновиться решил и ЛОР от нефиг делать почитал :)

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