Comments 104
Я думаю, что астро/космонавтам нет необходимости повышать себе привилегии :)
А как же злобные системы искусственного интеллекта и не менее злобные пришельцы?
Не везде оно работает.

user@localhost ~ $ whoami
user
user@localhost ~ $ uname -a
Linux MagOS 3.7.10-nrj-desktop-pae-1rosa.lts #1 SMP PREEMPT Sat Mar 23 20:20:04 MSK 2013 i686 i686 i386 GNU/Linux
user@localhost ~ $ zgrep -i PERF_EVENTS /proc/config.gz
CONFIG_HAVE_PERF_EVENTS=y
CONFIG_PERF_EVENTS=y
CONFIG_HAVE_PERF_EVENTS_NMI=y
user@localhost ~ $ gcc -w test.c -o exploit
user@localhost~ $ ./exploit
exploit: test.c:50: sheep: Assertion `!close(fd)' failed.
Аварийный останов (слепок снят)
user@localhost ~ $ whoami
user
user@localhost ~ $
Аналогично не работает с оригинальным ядром в Ubuntu 12.04 (тут непонятно, вроде все условия соблюдены), а вот в CentOS 6.4 отработало как положено :).
Тролинг дня «а как собрать ядро, что бы запускался експлойт?» © aztec

Думается читать тред надо на первоисточнике…
www.opennet.ru/opennews/art.shtml?num=36933

Ибо работает не всегда и не везде…
image

PS. [root@shurshun ~]# uname -a
Linux shurshun 2.6.32-358.6.1.el6.i686 #1 SMP Tue Apr 23 18:13:20 UTC 2013 i686 i686 i386 GNU/Linux
UFO landed and left these words here
После установки выбрал фиксированный цвет и не менял.
Спасибо, раньше не замечал что это есть, включил.
В новости же написано, что начиная с версии 2.6.37, или вы не читали, а сразу иронизировать?
> Проблема осложняется тем, что в случае с RHEL/CentOS 6 уязвимость была бэкпортирована в ядро 2.6.32
Согласен, о том что у меня на скриншете CentOS общественность могла только догадываться…
Чего-то оно не работает. На арче 3.8.11 (ну понятно, что уже пофикшено, но всё же) Assertion `!close(fd)' failed, на арче 3.8.7 zsh: killed ./semtex.
Archlinux с ядром 3.8.8-2 x86_64, не работает
Ещё, судя по всему, эксплоит должен работать только на x86_64
Работает. В security рассылкe народ подтвердил уже (правда не на pae, а на обычном amd64 и на rt).
ez@NCA-Test:~/sploit$ gcc -O2 semtex.c
ez@NCA-Test:~/sploit$ ./a.out
2.6.37-3.x x86_64
sd@fucksheep.org 2010
root@NCA-Test:~/sploit#
root@NCA-Test:~/sploit# uname -rm
3.2.0-4-amd64 x86_64
Ubuntu 12.04 x86_64 не работает, и что странно при запуске пишет по русски «Убито», права не повышаются.

w@mithra:~/Загрузки/Exploit$ gcc ./semtex.c
w@mithra:~/Загрузки/Exploit$ ls
a.out semtex.c
w@mithra:~/Загрузки/Exploit$ ./a.out
Убито
w@mithra:~/Загрузки/Exploit$ uname -a
Linux mithra 3.2.0-32-generic #51-Ubuntu SMP Wed Sep 26 21:33:09 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
w@mithra:~/Загрузки/Exploit$ id
uid=1000() gid=1000(w) группы=1000(w),4(adm),20(dialout),24(cdrom),27(sudo),30(dip),40(src),46(plugdev),105(fuse),108(lpadmin),109(sambashare),110(bluetooth),114(netdev),119(pulse-access),123(vboxusers)
Та же фигня: Fedora 16, 3.6.11-4.fc16.x86_64 #1 SMP Tue Jan 8 20:57:42 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
Да тоже самое:

w@mithra:~/Загрузки/Exploit$ uname -a
Linux mithra 3.2.0-32-generic #51-Ubuntu SMP Wed Sep 26 21:33:09 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
w@mithra:~/Загрузки/Exploit$ ls
semtex.c
w@mithra:~/Загрузки/Exploit$ gcc -O2 ./semtex.c
w@mithra:~/Загрузки/Exploit$ ls
a.out semtex.c
w@mithra:~/Загрузки/Exploit$ ./a.out
Убито
w@mithra:~/Загрузки/Exploit$ id
uid=1000(w) gid=1000(w) группы=1000(w),4(adm),20(dialout),24(cdrom),27(sudo),30(dip),40(src),46(plugdev),105(fuse),108(lpadmin),109(sambashare),110(bluetooth),114(netdev),119(pulse-access),123(vboxusers)
w@mithra:~/Загрузки/Exploit$
Здравствуйте. Я сомалийский вирус. К сожалению, в силу невысокого уровня развития информациооных тенологий в моей стране, я не могу самостоятельно причинить ущерб вашему компьютеру. Пожалуйста удалите самостоятельно несколько важных файлов и пошлите меня своим друзьям.

Вот только когда-нибудь эта потеха кончится.
Черт, даже моя устаревшая шапка 6.2 не спасла своим доисторическим ядром…
Работает? Хоть у кого-нибудь работает? 3.1.10 openSUSE 12.1 ни в какую.
устаревшая шапка 6.2 (Zoot) выпущена 3 апреля 2000 года и имеет в самом деле доисторическое ядро 2.2.14-5.0 :)
Не, ну не настолько устаревшая… 6.2 я помню ставил дома первый раз в жизни линукс, форматнул случайно папин винт с экселевскеми табличками…
Debian 7 Kernel 3.2.04 (все из коробки) — никак. Все перепробовал. Ошибки в коде и все тут.
На x84_64 с оптимизацией -O2 прекрасно работает на Debian 7 Wheezy с ядром «из коробки»
На exploit-db зафейлили офсеки сплойт. У меня, кстати, не завелся (2.6.32 debian)
Не работает… =(
viking@CrazyAcerViking:~$ ./a.out
a.out: test_0day.c:50: sheep: Assertion `!close(fd)' failed.

P.S.
viking@CrazyAcerViking:~$ uname -a
Linux CrazyAcerViking 3.8.5-vikkivikki #1 SMP Tue Apr 2 15:45:08 FET 2013 i686 GNU/Linux
Интересно как это сработает на андроиде.
Кто может портировать строки на асме на арм?
Android же 32х битный. Можно попробовать сделать cross-compile для Android этого исходника, но что-то мне подсказывает, что этот способ не пройдет. Надо читать описание, адаптировать для Android и писать специальный эксплоит, если это вообще возможно.
А я только недавно обновился до 3.9 в арче. Эх опять не смогу уязвимости под линуксом погонять…
Судя по комментариям, работает это в очень редких случаях.
Судя по комментарием, комментируют в основном те, у кого не работает. Остальные молча патчат ядро.
Fedora 17 — не запускается.

[denis@home exploits]$ uname -a 
Linux home 3.8.4-102.fc17.x86_64 #1 SMP Sun Mar 24 13:09:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
[denis@home exploits]$ gcc -O2 ./linux_2.6.37-3.x.x_x86_64.c 
[denis@home exploits]$ ./a.out 
Killed
 [denis@home exploits]$ ls -Z
-rwxrwxr-x. denis denis unconfined_u:object_r:user_home_t:s0 a.out
-rw-rw-r--. denis denis unconfined_u:object_r:user_home_t:s0 linux_2.6.37-3.x.x_x86_64.c

Как почти любой exploit на linux надо ещё постараться собрать и запустить ,)

P. S. Linux unterwelt 3.9.2-1-ARCH #1 SMP PREEMPT Sat May 11 20:31:08 CEST 2013 x86_64 GNU/Linux — не работает.
Такое ощущение, что все очень рассчитывали, что сработает везде, что глядишь скоро и до вирусов дорастем не требующих gcc, а тут даже с ним :(
Debian 7.0 Wheezy работает гарантированно :(

arcady@asus-k43s:~/Temp$ uname -a
Linux asus-k43s 3.2.0-4-amd64 #1 SMP Debian 3.2.41-2 x86_64 GNU/Linux
arcady@asus-k43s:~/Temp$ gcc -O2 ./semtex.c
arcady@asus-k43s:~/Temp$ ./a.out

root@asus-k43s:~/Temp# id -un
root
root@asus-k43s:~/Temp#
Calculate — работает
ivan@nobody ~ $ whoami 
ivan
ivan@nobody ~ $ uname -a
Linux nobody 3.8.4-calculate #1 SMP PREEMPT Fri Mar 29 12:07:54 VLAT 2013 x86_64 AMD Phenom(tm) II X4 965 Processor AuthenticAMD GNU/Linux
ivan@nobody ~ $ gcc -w explo.c -o explloit -O2
ivan@nobody ~ $ ./explloit 
2.6.37-3.x x86_64
sd@fucksheep.org 2010
nobody ~ # whoami 
root

Что характерно ядро 3.4.5-hardened выполнится эксплойту не дает. убивает его.
Хм… в ubuntu 13.04 странно себя повел, просто намертво повесил систему. Ядро 3.8.0-19-generic.

PS: Правда собирал gcc-4.7 а не 4.6 может версия компилятора не та…
uname -a
Linux noname 3.8.4-calculate #1 SMP PREEMPT Thu Mar 21 02:29:50 UTC 2013 x86_64 Intel(R) Core(TM) i3-2100 CPU @ 3.10GHz GenuineIntel GNU/Linux


Родное бинарное ядро калькулятора

~ $ ./a.out 
2.6.37-3.x x86_64
sd@fucksheep.org 2010
~ # id
uid=0(root) gid=0(root) группы=0(root),...


Версия gcc:

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...


Вердикт — хорошо работает.
[user@host ~]$ gcc exp.c -o givemeroot -O2
[user@host ~]$ ls
givemeroot  exp.c
[user@host ~]$ ./givemeroot
2.6.37-3.x x86_64
sd@fucksheep.org 2010
-sh-4.1#

Печаль… CentOS 6.4 x86
А кто может расписать почему этот эксплоит срабатывает и что неучли в ядре? А то в исходном коде мне пока ничего не понятно(
Лечится каким-то отключением профилирования. Вероятно, в некоторых дистрибутивах оно по умолчанию выключено.
Забавный тренд: все скопом пытаются взломать свои же машины. Представляю аналогию под винду: все пользователи массово пытаются установить вирус на свою локалхост.
Так интересно же, дорос ли Linux до виндовых высот, когда эксплоит нужно просто запустить, а не патчить ядро предварительно :)
Я пытался сломать свою песочницу, чтобы убедиться, что продакшен в сохранности. Кто-то делал это для других целей?
Добавьте в пост. Можно защитить себя, чтобы не попасть под огонь, в ожидании патча.
sysctl -w kernel.perf_event_paranoid = 2
sysctl -w kernel.perf_event_max_sample_rate= -1

// источник тред с опеннета и рассылка ред хат.
В багзилле редхата говорят, что это поможет только от доступного в данный момент эксплоита.
Our testing shows that this is not sufficient to avoid the issue in general, but it is currently sufficient mitigation against the publicly available (unmodified) exploits.
3.7.10-gentoo-r1 — работает

vmlinuz@wd-kv-24549 ~ $ id
uid=1000(vmlinuz) gid=1000(vmlinuz) группы=1000(vmlinuz),0(root),3(sys),4(adm),6(disk),10(wheel),16(cron),18(audio),19(cdrom),27(video),35(games),80(cdrw),85(usb),100(users),105(stb-admin),123(ntp),236(sabayon-admin),237(gdm),238(pulse),239(pulse-access),240(plugdev),241(avahi),244(polkitd),245(messagebus),246(locate),247(crontab)
vmlinuz@wd-kv-24549 ~ $ uname -a
Linux wd-kv-24549 3.7.10-gentoo-r1 #1 SMP Mon Apr 29 10:36:54 EEST 2013 x86_64 Intel(R) Core(TM) i3 CPU M 380 @ 2.53GHz GenuineIntel GNU/Linux
vmlinuz@wd-kv-24549 ~ $ ./a.out 
2.6.37-3.x x86_64
sd@fucksheep.org 2010
wd-kv-24549 ~ # id
uid=0(root) gid=0(root) группы=0(root),3(sys),4(adm),6(disk),10(wheel),16(cron),18(audio),19(cdrom),27(video),35(games),80(cdrw),85(usb),100(users),105(stb-admin),123(ntp),236(sabayon-admin),237(gdm),238(pulse),239(pulse-access),240(plugdev),241(avahi),244(polkitd),245(messagebus),246(locate),247(crontab),1000(vmlinuz)
wd-kv-24549 ~ # 

Интересно. А у меня нет. То же ядро, amd64, SMP.

~ $ uname -a
Linux ___ 3.7.10-gentoo-r1 #3 SMP Mon Apr 22 14:41:09 MSK 2013 x86_64 Intel® Core(TM) i7-3930K CPU @ 3.20GHz GenuineIntel GNU/Linux
~ $ rm a.out
~ $ gcc -O2 semtex.c
~ $ ./a.out
Убито

Вывод лога ядра
May 15 15:00:06 ___ kernel: [ 3388.456881] BUG: unable to handle kernel paging request at 000000178155a9b8
May 15 15:00:06 ___ kernel: [ 3388.456886] IP: [] atomic_dec_and_mutex_lock+0xa/0x47
May 15 15:00:06 ___ kernel: [ 3388.456891] PGD 81a7b4067 PUD 0
May 15 15:00:06 ___ kernel: [ 3388.456894] Oops: 0000 [#4] SMP
May 15 15:00:06 ___ kernel: [ 3388.456895] Modules linked in: w83627ehf hwmon_vid tun nf_conntrack_ipv4 nf_defrag_ipv4 xt_conntrack iptable_filter iptable_mangle ip_tables af_packet dm_crypt nf_conntrack_ftp nf_conntrack hid_logitech_dj hid_a4tech hid_generic btusb bluetooth snd_hda_codec_hdmi snd_hda_codec_realtek raid1 raid0 md_mod usbhid hid arc4 coretemp kvm_intel kvm crc32c_intel ghash_clmulni_intel aesni_intel fglrx(PO) aes_x86_64 ablk_helper cryptd xts lrw ath9k gf128mul ath9k_common ath9k_hw ath evdev mac80211 led_class snd_hda_intel cfg80211 snd_hda_codec rfkill microcode snd_hwdep snd_pcm r8169 i2c_i801 mii snd_page_alloc acpi_cpufreq mperf freq_table snd_timer e1000e snd soundcore processor button usb_storage sr_mod cdrom xhci_hcd dm_mirror dm_region_hash dm_log dm_mod
May 15 15:00:06 ___ kernel: [ 3388.456926] CPU 11
May 15 15:00:06 ___ kernel: [ 3388.456928] Pid: 10115, comm: a.out Tainted: P D O 3.7.10-gentoo-r1 #3 System manufacturer System Product Name/P9X79 DELUXE
May 15 15:00:06 ___ kernel: [ 3388.456930] RIP: 0010:[] [] atomic_dec_and_mutex_lock+0xa/0x47
May 15 15:00:06 ___ kernel: [ 3388.456933] RSP: 0018:ffff88081b2efe28 EFLAGS: 00010246
May 15 15:00:06 ___ kernel: [ 3388.456934] RAX: ffffffff8108ab73 RBX: 000000178155a9b8 RCX: 00000001002f2049
May 15 15:00:06 ___ kernel: [ 3388.456935] RDX: 0000000000000000 RSI: ffffffff814282d0 RDI: 000000178155a9b8
May 15 15:00:06 ___ kernel: [ 3388.456936] RBP: ffffffff814282d0 R08: 0000000000000001 R09: ffff88081a002020
May 15 15:00:06 ___ kernel: [ 3388.456937] R10: 00007fff6afa7750 R11: dead000000200200 R12: 0000000000000000
May 15 15:00:06 ___ kernel: [ 3388.456938] R13: ffff88081bc04840 R14: ffff880812df1180 R15: ffff880819ebde10
May 15 15:00:06 ___ kernel: [ 3388.456940] FS: 00007fb183d0c700(0000) GS:ffff88083fd60000(0000) knlGS:0000000000000000
May 15 15:00:06 ___ kernel: [ 3388.456941] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
May 15 15:00:06 ___ kernel: [ 3388.456942] CR2: 000000178155a9b8 CR3: 00000007bf113000 CR4: 00000000000407e0
May 15 15:00:06 ___ kernel: [ 3388.456943] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
May 15 15:00:06 ___ kernel: [ 3388.456944] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
May 15 15:00:06 ___ kernel: [ 3388.456945] Process a.out (pid: 10115, threadinfo ffff88081b2ee000, task ffff8807c3800d00)
May 15 15:00:06 ___ kernel: [ 3388.456946] Stack:
May 15 15:00:06 ___ kernel: [ 3388.456947] 0000000000000001 000000178155a9b8 0000000000000000 ffffffff81091e9d
May 15 15:00:06 ___ kernel: [ 3388.456949] ffff88081a002000 00000017ffffffe8 ffff880819ebdc10 ffffffff8108abab
May 15 15:00:06 ___ kernel: [ 3388.456950] ffffffff8108ab73 ffff88081a002000 ffff880819ebdc00 ffffffff8108b020
May 15 15:00:06 ___ kernel: [ 3388.456952] Call Trace:
May 15 15:00:06 ___ kernel: [ 3388.456956] []? __static_key_slow_dec+0x19/0x79
May 15 15:00:06 ___ kernel: [ 3388.456958] []? sw_perf_event_destroy+0x38/0x7f
May 15 15:00:06 ___ kernel: [ 3388.456960] []? perf_swevent_init+0x120/0x120
May 15 15:00:06 ___ kernel: [ 3388.456961] []? free_event+0xd2/0xf7
May 15 15:00:06 ___ kernel: [ 3388.456963] []? perf_event_release_kernel+0x7f/0x86
May 15 15:00:06 ___ kernel: [ 3388.456964] []? perf_release+0xd/0x11
May 15 15:00:06 ___ kernel: [ 3388.456967] []? __fput+0xe9/0x1c3
May 15 15:00:06 ___ kernel: [ 3388.456970] []? task_work_run+0x78/0x8c
May 15 15:00:06 ___ kernel: [ 3388.456973] []? do_notify_resume+0x53/0x68
May 15 15:00:06 ___ kernel: [ 3388.456975] []? task_work_add+0x40/0x4b
May 15 15:00:06 ___ kernel: [ 3388.456977] []? int_signal+0x12/0x17
May 15 15:00:06 ___ kernel: [ 3388.456978] Code: 48 8d 47 08 c7 07 01 00 00 00 66 c7 47 04 00 00 48 89 47 08 48 89 47 10 48 c7 47 18 00 00 00 00 c3 55 48 89 f5 53 48 89 fb 41 50 <8b> 17 83 fa 01 74 11 8d 4a ff 89 d0 f0 0f b1 0b 39 d0 74 23 89
May 15 15:00:06 ___ kernel: [ 3388.456994] RIP [] atomic_dec_and_mutex_lock+0xa/0x47
May 15 15:00:06 ___ kernel: [ 3388.456996] RSP May 15 15:00:06 ___ kernel: [ 3388.456997] CR2: 000000178155a9b8
May 15 15:00:06 ___ kernel: [ 3388.457010] ---[ end trace d32d7c69e2044884 ]---

На другом десктопе с

uname -a
Linux unknown-pc 3.7.10-gentoo #1 SMP Mon Mar 4 16:52:27 MSK 2013 x86_64 Intel® Core(TM)2 Quad CPU Q9505 @ 2.83GHz GenuineIntel GNU/Linux

Так же килляется.
# zcat /proc/config.gz | grep PERF
# CONFIG_CGROUP_PERF is not set
CONFIG_HAVE_PERF_EVENTS=y
CONFIG_PERF_EVENTS=y
CONFIG_HAVE_PERF_EVENTS_NMI=y
CONFIG_HAVE_PERF_REGS=y
CONFIG_HAVE_PERF_USER_STACK_DUMP=y
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
# CONFIG_PCIEASPM_PERFORMANCE is not set
В RHEL/Centos6 x86_64 будет работать только в ядрах, в которых произошел бекпорт. То есть, если Вы поставили Centos 6.0, в котором ядро 2.6.32-71 и не обновлялись, то эксплойт не заработает.
UFO landed and left these words here
В Ubuntu 12.04 интересный эффект. Одного
sheep(-49066); //лично у меня так. По oops messages подобрал чтобы адрес записи был близок к idt
хватает чтобы повесить всю систему.
В OpenVZ-ядре для debian-а не воспроизводится:

# uname -a
Linux host-b-01 2.6.32-042stab059.7 #1 SMP Tue Jul 24 19:12:01 MSK 2012 x86_64 x86_64 x86_64 GNU/Linux

zabbix@host-b-01:~$ /tmp/a.out
2.6.37-3.x x86_64
sd@fucksheep.org 2010
a.out: e.c:106: main: Assertion `p = memmem(code, 1024, &needle, 8)' failed.
Aborted
Проблема осложняется тем, что в случае с RHEL/CentOS 6 уязвимость была бэкпортирована в ядро 2.6.32
UFO landed and left these words here
Gentoo hardened-sources-3.8.7 — эксплоит намертво вешает систему, даже SysRQ не работает.
UFO landed and left these words here
Only those users with full accounts are able to leave comments. Log in, please.