The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Представлена техника обхода SMEP-защиты при эксплуатации уяз..."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Представлена техника обхода SMEP-защиты при эксплуатации уяз..."  +/
Сообщение от opennews on 19-Ноя-12, 19:49 
В ядре Linux 3.0 была представлена поддержка режима SMEP (Supervisor Mode Execution Protection), присутствующего в процессорах Intel на базе архитектуры Ivy Bridge. Использование SMEP не даёт переходить из режима ядра к выполнению кода, находящегося на пользовательском уровне, что позволяет блокировать эксплуатацию многих уязвимостей в ядре Linux (shell-код не будет выполнен, так как он находится в пространстве пользователя). Один из исследователей безопасности опубликовал (http://mainisusuallyafunction.blogspot.ru/2012/11/attacking-...) интересный способ эксплуатации уязвимостей в ядре в обход защиты SMEP.


Метод построен на основе организации
подстановки (http://www.semantiscope.com/research/BHDC2010/BHDC-2010-Pape...) последовательности инструкций в исполняемую область JIT-компилятора (например, подсистемы BPF), генерирующего код на основе входных данных, которые могут контролироваться атакующим. Так как JIT-компилятор контролирует генерацию кода, так просто подставить инструкции не получится. Но можно воспользоваться тем, что входящие данные используются в качестве аргументов генерируемых инструкций. Например, для входных данных "$0xa8XXYYZZ" и "$0xa8PPQQRR" будет сгенерирован код:


<font color="#461b7e">
   b8 ZZ YY XX a8    mov $0xa8XXYYZZ, %eax
   b8 RR QQ PP a8    mov $0xa8PPQQRR, %eax
   b8 ...
</font>


Если пропустить байт с кодом инструкции mov (b8) и передать управление на следующий за ним байт (ZZ) будет выполнен машинный код "ZZ YY XX". При этом переданные в хвосте данные "a8" будут обработаны как ничего не значащая команда test с аргументом из кода команды mov (b8):

<font color="#461b7e">
   ZZ YY XX          (подконтрольные атакующему инструкции)
   a8 b8             test $0xb8, %al
   RR QQ PP          (подконтрольные атакующему инструкции)
   a8 b8             test $0xb8, %al
</font>

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

URL: http://mainisusuallyafunction.blogspot.ru/2012/11/attacking-...
Новость: http://www.opennet.dev/opennews/art.shtml?num=35375

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

Оглавление

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


1. "Представлена техника обхода SMEP-защиты при эксплуатации уяз..."  –2 +/
Сообщение от Имя on 19-Ноя-12, 19:49 
хе-хе, обратная сторона jit

а способы защиты придумают?

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

3. "Представлена техника обхода SMEP-защиты при эксплуатации уяз..."  –1 +/
Сообщение от mihalych email(ok) on 19-Ноя-12, 20:08 
Интересует другое - как запустить код с однобайтовым смещением?
Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

11. "Представлена техника обхода SMEP-защиты при эксплуатации уяз..."  +2 +/
Сообщение от Аноним (??) on 19-Ноя-12, 20:46 
> Интересует другое - как запустить код с однобайтовым смещением?

Через баг в ядре. Если вы его найдете.

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

29. "Представлена техника обхода SMEP-защиты при эксплуатации уяз..."  +/
Сообщение от Аноним (??) on 20-Ноя-12, 00:34 
> Через баг в ядре. Если вы его найдете.

Почему "баг" - в единственном числе? Таких багов же куча. Сотни обнаружили, десятки - еще нет, тысячи - добавят в будущем.

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

32. "Представлена техника обхода SMEP-защиты при эксплуатации уяз..."  +/
Сообщение от Аноним (??) on 20-Ноя-12, 10:21 
> Почему "баг" - в единственном числе?

Потому что для эксплуатации хватит и одного.

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

33. "Представлена техника обхода SMEP-защиты при эксплуатации уяз..."  +/
Сообщение от Аноним (??) on 20-Ноя-12, 13:42 
А я мне больше нравится, когда есть выбор :)
Ответить | Правка | ^ к родителю #32 | Наверх | Cообщить модератору

23. "Представлена техника обхода SMEP-защиты при эксплуатации уяз..."  +/
Сообщение от pavlinux (ok) on 19-Ноя-12, 23:52 
https://github.com/kmcallister/alameda/blob/master/alameda.c
Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

22. "Представлена техника обхода SMEP-защиты при эксплуатации уяз..."  –1 +/
Сообщение от Anonim (??) on 19-Ноя-12, 23:02 
Аппаратная защита за атакующими никогда не будет поспевать. Интел родит следущие процы только через год, а сабжевая технология уже бесполезна как и все предыдущие.
Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

31. "Представлена техника обхода SMEP-защиты при эксплуатации уяз..."  –3 +/
Сообщение от Онаним on 20-Ноя-12, 02:22 
причем тут intel, аппаратная защита, если проблема в jit
Ответить | Правка | ^ к родителю #22 | Наверх | Cообщить модератору

4. "Техника обхода SMEP-защиты при эксплуатации уязвимостей ядра..."  –2 +/
Сообщение от Аноним (??) on 19-Ноя-12, 20:13 
только вот совсем забыли указать, как же осуществить "передачу управления с однобайтовым смещением".
теоретики, такие теоретики
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

7. "Техника обхода SMEP-защиты при эксплуатации уязвимостей ядра..."  +1 +/
Сообщение от Аноним (??) on 19-Ноя-12, 20:29 
> только вот совсем забыли указать, как же осуществить "передачу управления с однобайтовым
> смещением".
> теоретики, такие теоретики

http://mainisusuallyafunction.blogspot.com/2012/11/attacking... из первых уст, с реальными примерами и объяснением.

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

6. "Техника обхода SMEP-защиты при эксплуатации уязвимостей ядра..."  –3 +/
Сообщение от anonymous (??) on 19-Ноя-12, 20:29 
breakin news!
можно бинарные инструкции записать в строку char* и передать их как содержимое сетевого пакета или в функцию sprintf, и тогда если передать управление на смещение этих данных, они будут выполнены!
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

8. "Техника обхода SMEP-защиты при эксплуатации уязвимостей ядра..."  +4 +/
Сообщение от Аноним (??) on 19-Ноя-12, 20:32 
> breakin news!
> можно бинарные инструкции записать в строку char* и передать их как содержимое
> сетевого пакета или в функцию sprintf, и тогда если передать управление
> на смещение этих данных, они будут выполнены!

Вы понимаете что такое execution prevention в кернел спейсе от всего что в юзерспейсе?

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

9. "Техника обхода SMEP-защиты при эксплуатации уязвимостей ядра..."  +4 +/
Сообщение от Аноним (??) on 19-Ноя-12, 20:33 
не будут, так как будут записаны в noexec область c данными.
Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

10. "Техника обхода SMEP-защиты при эксплуатации уязвимостей ядра..."  +1 +/
Сообщение от Аноним (??) on 19-Ноя-12, 20:46 
> При передаче управления c однобайтовым смещением

Epic cheat! Парни из интеля усиленно делят на ноль от такой наглости :)

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

13. "Техника обхода SMEP-защиты при эксплуатации уязвимостей ядра..."  +2 +/
Сообщение от Аноним (??) on 19-Ноя-12, 20:57 
А вас не смущает, что "mov $0xa8XXYYZZ, %eax" занимает 5 байт и следующая инструкция будет с пятибайтовым смещением  или что указатель не обязательно должен быть чётным числом ? :-)
Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

15. "Техника обхода SMEP-защиты при эксплуатации уязвимостей ядра..."  +3 +/
Сообщение от Аноним (??) on 19-Ноя-12, 21:07 
> А вас не смущает, что "mov $0xa8XXYYZZ, %eax" занимает 5 байт и
> следующая инструкция будет с пятибайтовым смещением  или что указатель не
> обязательно должен быть чётным числом ? :-)

Тем не менее, можно вполне годно подогнать данные так чтобы выполнилось нечто осмысленное.

Это вы еще не видели просто прототип кода который запускается на трех напрочь разных архитектурах и выбрасывает в конце концов "свой" процессор на "свой" кусок кода. После того как я увидел это - я уже ничему не удивляюсь.

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

18. "Техника обхода SMEP-защиты при эксплуатации уязвимостей ядра..."  +/
Сообщение от mavriq_ on 19-Ноя-12, 21:37 
> Это вы еще не видели просто прототип кода который запускается на трех напрочь разных архитектурах и выбрасывает в конце концов "свой" процессор на "свой" кусок кода

и у вас пример есть? или хотя-бы ключевые слова по которым гуглить?
все-таки, допустим, arm-овский код довольно сильно отлиачется от x86 или mips
это конечно гипотетически возможно, но сильно слабо верится что есть реализация
Вообще - какие ТРИ разные архитектуры предполагаются

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

24. "Техника обхода SMEP-защиты при эксплуатации уязвимостей ядра..."  +1 +/
Сообщение от pavlinux (ok) on 20-Ноя-12, 00:03 
Древний пример, '84 году, под VAX, PDP и ещё кого-то

short main[] = {
    277, 04735, -4129, 25, 0, 477, 1019, 0xbef, 0, 12800,
    -113, 21119, 0x52d7, -1006, -7151, 0, 0x4bc, 020004,
    14880, 10541, 2056, 04010, 4548, 3044, -6716, 0x9,
    4407, 6, 5568, 1, -30460, 0, 0x9, 5570, 512, -30419,
    0x7e82, 0760, 6, 0, 4, 02400, 15, 0, 4, 1280, 4, 0,
    4, 0, 0, 0, 0x8, 0, 4, 0, ',', 0, 12, 0, 4, 0, '#',
    0, 020, 0, 4, 0, 30, 0, 026, 0, 0x6176, 120, 25712,
    'p', 072163, 'r', 29303, 29801, 'e'
};

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

27. "Техника обхода SMEP-защиты при эксплуатации уязвимостей ядра..."  +1 +/
Сообщение от Аноним (??) on 20-Ноя-12, 00:30 
> Epic cheat! Парни из интеля усиленно делят на ноль от такой наглости :)

Вообще-то, именно от такой наглости они и оборонялись. Но не прокатило.

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

12. "Техника обхода SMEP-защиты при эксплуатации уязвимостей ядра..."  –2 +/
Сообщение от Аноним (??) on 19-Ноя-12, 20:52 
А что в ядре без этого мало кода, который хотелось бы запустить?
Зачем там shell-код? Кто-то запускает shell в ядре? Хотим, например, файл прочитать, а прав нет. Так передаём управление в код read на место после проверки прав. Всё.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

14. "Техника обхода SMEP-защиты при эксплуатации уязвимостей ядра..."  +/
Сообщение от Аноним (??) on 19-Ноя-12, 21:03 
Что всё? Вот у вас /proc/jump, пишете в него адрес - ядро выполняет код по этому адресу, пускай даже SMEP не включен, покажите пример как прочитать файл?

Ну есть у вас адрес sys_read, "передали вы ему управление", аргументы ему пушкин скормит?

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

16. "Техника обхода SMEP-защиты при эксплуатации уязвимостей ядра..."  –1 +/
Сообщение от Аноним (??) on 19-Ноя-12, 21:09 
> Ну есть у вас адрес sys_read, "передали вы ему управление", аргументы ему
> пушкин скормит?

Можно перезаписать код какой-то процедуры своим кодом и сигануть на него :). Но даже и просто jump-ом куда попало можно наделать дел, да.

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

17. "Техника обхода SMEP-защиты при эксплуатации уязвимостей ядра..."  +3 +/
Сообщение от Аноним (??) on 19-Ноя-12, 21:12 
> перезаписать код какой-то процедуры своим кодом и сигануть на него :).

бинго, Ваш перезаписанный код находится ниже 0xbfffffff (читай в юзерспейсе), а тут внезапно SMEP. Что делать?

> просто jump-ом куда попало можно наделать дел

Просто kernel oops нафиг надо, повысить привилегии вот цель


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

19. "Техника обхода SMEP-защиты при эксплуатации уязвимостей ядра..."  –1 +/
Сообщение от Васька (??) on 19-Ноя-12, 22:03 
а я то как дурак думал что все данные выравниваются по границам четверного слова.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

21. "Техника обхода SMEP-защиты при эксплуатации уязвимостей ядра..."  +4 +/
Сообщение от Аноним (??) on 19-Ноя-12, 22:27 
> а я то как дурак думал что все данные выравниваются по границам четверного слова.

данные != исполняемые инструкции. Инструкции не выравниваются.

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

20. "Техника обхода SMEP-защиты при эксплуатации уязвимостей ядра..."  –3 +/
Сообщение от Анонище on 19-Ноя-12, 22:11 
Все эти ваши языки программирования... кто знает ассемблер, тот правит миром.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

25. "Техника обхода SMEP-защиты при эксплуатации уязвимостей ядра..."  +5 +/
Сообщение от Аноним (??) on 20-Ноя-12, 00:07 
Кто знает ассемблер, тот знает ассемблер.
И если уж править, то не миром, а ограниченным одной архитектурой мирком.
Ответить | Правка | ^ к родителю #20 | Наверх | Cообщить модератору

28. "Техника обхода SMEP-защиты при эксплуатации уязвимостей ядра..."  –1 +/
Сообщение от Аноним (??) on 20-Ноя-12, 00:32 
> Кто знает ассемблер, тот знает ассемблер.
> И если уж править, то не миром, а ограниченным одной архитектурой мирком.

Обычное утверждение из серии "кто знает slackware, тот знает linux". Обычно, заявляющие это люди слабо знакомы с предметной областью, и поэтому полагают ее на редкость однообразной и примитивной.

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

26. "Техника обхода SMEP-защиты при эксплуатации уязвимостей ядра..."  +1 +/
Сообщение от pavlinux (ok) on 20-Ноя-12, 00:08 
> Все эти ваши языки программирования... кто знает ассемблер, тот правит миром.

А можно я сразу в опкодах писать буду?

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

30. "Техника обхода SMEP-защиты при эксплуатации уязвимостей ядра..."  +1 +/
Сообщение от Аноним (??) on 20-Ноя-12, 01:42 
55 89 e5 83 ed 04 68 6e 6f 0a 00 bb 01 00 00 00 89 e9 b8 04 00 00 00 89 c2 cd 80 89 e5 5d b8 01 00 00 00 31 db cd 80 c3
Ответить | Правка | ^ к родителю #26 | Наверх | Cообщить модератору

34. "Техника обхода SMEP-защиты при эксплуатации уязвимостей ядра..."  +/
Сообщение от Buy (ok) on 20-Ноя-12, 16:40 
Опять все загублено.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

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

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




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

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