The OpenNET Project / Index page

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



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

"Проект OpenBSD представил технику защиты RETGUARD"  +/
Сообщение от opennews (ok) on 21-Авг-17, 12:55 
Тео де Раадт (Theo de Raadt) представил (https://marc.info/?l=openbsd-tech&m=150317547021396&w=2) предварительную реализацию техники защиты RETGUARD, которую планируется интегрировать в OpenBSD для усложнения выполнения эксплоитов, построенных с использованием заимствования кусков кода (https://ru.wikipedia.org/wiki/%D0%92%D0%...) и приёмов возвратно-ориентированного программирования (ROP, Return-Oriented Programming).

Суть метода защиты RETGUARD заключается в искажении адреса возврата обработчиков типовых функций системных библиотек и ядра - перед началом обработчика и  перед командой возврата управления (ret) добавляется вызов "xorl %rsp,(%rsp)" для x86_64 или "xorl %esp,(%rsp)" для 32-разрядных систем x86. При штатном ходе выполнения первый xor инвертирует адрес возврата, а второй инвертирует второй раз, приведя его к изначальному виду. При выполнении эксплоита осуществляется  
переход на составляющий эксплоит блок заимствованных машинных инструкций (гаджет), точка входа в который как правило не совпадает с началом функции. Так как управление передано не на начало, а в определённую часть тела функции, первый "xor" будет пропущен и "xor" перед выходом исказит переданный эксплоитом адрес возврата.


Метод реализован в виде патча к компилятору clang, который на этапе компиляции производит автоматическую подстановка кода инвертирования адреса возврата во все функции. Для функций системной библиотеки и ядра, написанных на языке ассемблер, подготовлены отдельные патчи, в которых команды "xor" добавлены вручную. Для активации нового метода защиты в приложениях не требуется отдельных действий, достаточно наложить патч, после чего пересобрать gnu/usr.bin/clang и затем этим clang пересобрать систему.


Код пока оценивается как экспериментальный и предлагается для тестирования перед включением в основной состав OpenBSD. При этом работа базовой системы и большинства портов с предложенным патчем отмечается как не вызывающая нареканий. Тем не менее пока имеются отдельные проблемы при сборке  нескольких крупных портов, в коде которых используются прямые манипуляции с адресами возврата.После отладки и интеграции защиты адресов возврата планируется реализовать похожую технику для усложнения использования гаджетов, в которых возврат управления обеспечен через подстановку адреса для команды jmp (pop/jmp или JOP).


Напомним, что техника заимствования кусков кода  используется для эксплуатации переполнений буфера в условиях, когда в страницах памяти стека и буфера установлен запрет на исполнение кода. Для организации выполнения кода атакующего в таких условиях логика выполнения shell-кода формируется с использованием методов возвратно-ориентированного программирования (ROP) -  атакующий не пытается разместить свой код в памяти, а оперирует уже имеющимися в загруженных библиотеках кусками машинных инструкций, завершающихся инструкцией возврата управления (как правило, это окончания библиотечных функций).  Работа эксплоита сводится к построению цепочки вызовов подобных блоков ("гаджетов") для получения нужной функциональности. Для автоматизации выявления гаджетов применяются специальные инструменты (https://github.com/JonathanSalwan/ROPgadget/). Используя готовые блоки  машинных инструкций (гаджеты) можно организовать достаточно сложные операции, в том числе организовать работу условных операторов и циклов.


URL: http://undeadly.org/cgi?action=article&sid=20170819230157
Новость: http://www.opennet.dev/opennews/art.shtml?num=47060

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

Оглавление

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


7. "Проект OpenBSD представил технику защиты RETGUARD"  –1 +/
Сообщение от бедный буратино (ok) on 21-Авг-17, 14:08 
короче, 6.2 будет суперзащищённой, но половина портов работать не будет :)

ещё после перехода на clang не все порты работоспособны, а тут ещё и это.

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

9. "Проект OpenBSD представил технику защиты RETGUARD"  +5 +/
Сообщение от Аноним (??) on 21-Авг-17, 15:13 
> "xorl %rsp,(%rsp)" для x86_64 или "xorl %esp,(%rsp)" для 32-разрядных систем x8

Здесь какой-то берд написан. XORL - 32-битная инструкция, она не может применяться к %rsp. Адресация с ипользование 64-битного %rsp на 32-битных системах тоже сомнительна.

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

10. "Проект OpenBSD представил технику защиты RETGUARD"  –1 +/
Сообщение от Аноним (??) on 21-Авг-17, 15:18 
Аффтар, ты бы хоть патч посмотрел: https://marc.info/?l=openbsd-tech&m=150317547021396&w=2

Пеши исчо!

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

36. "Проект OpenBSD представил технику защиты RETGUARD"  +3 +/
Сообщение от pavlinux (ok) on 23-Авг-17, 17:44 
Сам-то смотрел?


+#ifdef _KERNEL    /* 32 bit */
+#define RETGUARD_CFI    .cfi_escape 0x16, 0x10, 0x0d, 0x09, 0xf8, 0x22, 0x12, \
+            0x06, 0x16, 0x0c, 0xff, 0xff, 0xff, 0xff, 0x1a, 0x27
+#define    RETGUARD_START    RETGUARD_CFI; xorl %esp,(%rsp)
+#define    RETGUARD_END    xorl %esp,(%rsp)
+#else
+#define RETGUARD_CFI    .cfi_escape 0x16, 0x10, 0x06, 0x09, 0xf8, 0x22, 0x12, \
+            0x06, 0x27
+#define    RETGUARD_START    RETGUARD_CFI; xorq %rsp,(%rsp)
+#define    RETGUARD_END    xorq %rsp,(%rsp)
+#endif

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

42. "Проект OpenBSD представил технику защиты RETGUARD"  +/
Сообщение от pavlinux (ok) on 24-Авг-17, 01:14 
 
> +#ifdef _KERNEL /* 32 bit */
> +#define RETGUARD_START RETGUARD_CFI; xorl %esp,(%rsp)
> +#define RETGUARD_END xorl %esp,(%rsp)

Ну чаво, хацкеры, кто ответит, чо занах 32-бита и rsp ?


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

45. "Проект OpenBSD представил технику защиты RETGUARD"  +/
Сообщение от pavlinux (ok) on 26-Авг-17, 04:17 
>
 
>> +#ifdef _KERNEL /* 32 bit */
>> +#define RETGUARD_START RETGUARD_CFI; xorl %esp,(%rsp)
>> +#define RETGUARD_END xorl %esp,(%rsp)
>

> Ну чаво, хацкеры, кто ответит, чо занах 32-бита и rsp ?

Панятно.
Кароч это кусок для 32-битных бинарников работающих в 64-битной ОСи.

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

11. "Проект OpenBSD представил технику защиты RETGUARD"  +/
Сообщение от Аноним (??) on 21-Авг-17, 15:27 
Да сделайте уже отдельный стек для данных и отдельный - для адресов возврата!
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

13. "Проект OpenBSD представил технику защиты RETGUARD"  +2 +/
Сообщение от Аноним (??) on 21-Авг-17, 16:29 
> Да сделайте уже отдельный стек для данных и отдельный - для адресов возврата!

Т.е. предлагаете сменить архитектуру процессора? "За чей счёт этот банкет? Кто оплачивать будет?" (С)

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

14. "Проект OpenBSD представил технику защиты RETGUARD"  +/
Сообщение от Аноним (??) on 21-Авг-17, 16:36 
Системные администраторы скинутся :)
Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

15. "Проект OpenBSD представил технику защиты RETGUARD"  +1 +/
Сообщение от мимо крокодил on 21-Авг-17, 16:44 
ну, кстати, да. Куда заносить?
Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

19. "Проект OpenBSD представил технику защиты RETGUARD"  +2 +/
Сообщение от Аноним (??) on 21-Авг-17, 18:41 
Сюда: http://www.openbsd.org/donations.html
Ответить | Правка | ^ к родителю #15 | Наверх | Cообщить модератору

20. "Проект OpenBSD представил технику защиты RETGUARD"  +/
Сообщение от A.Stahl (ok) on 21-Авг-17, 18:49 
Не несите туда деньги! Они будут потрачены на БСД! А может и на что ещё похуже...
Ответить | Правка | ^ к родителю #19 | Наверх | Cообщить модератору

30. "Проект OpenBSD представил технику защиты RETGUARD"  –2 +/
Сообщение от Аноним (??) on 22-Авг-17, 09:45 
На БДСМ
Ответить | Правка | ^ к родителю #20 | Наверх | Cообщить модератору

34. "Проект OpenBSD представил технику защиты RETGUARD"  –1 +/
Сообщение от Аноним (??) on 22-Авг-17, 14:15 
> На БДСМ

Он разве собрался нести деньги платиновому партнеру лапчатых?


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

38. "Проект OpenBSD представил технику защиты RETGUARD"  +2 +/
Сообщение от pavlinux (ok) on 23-Авг-17, 18:11 
> Да сделайте уже отдельный стек для данных и отдельный - для адресов возврата!

И зашифровать.


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

41. "Проект OpenBSD представил технику защиты RETGUARD"  +/
Сообщение от alex53 (ok) on 23-Авг-17, 22:16 

У есть, называется Intel MPX.
Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

16. "Проект OpenBSD представил технику защиты RETGUARD"  –4 +/
Сообщение от Kodir (ok) on 21-Авг-17, 17:16 
Ф*у*фло, а не защита. Это далеко не самая проблемная часть кода! Первый эшелон - это бестолковейшие функции приёма данных (scanf, recv, etc) - там вся жесть, переполнения, переходы на код и т.п. Потом идут крuв@рукие системные функции, которые как кисейные барышни - верят любой ш*н%яге, которую ей передают и не проверяют. ВОТ ЭТО всё надо категорически разгромить (через написание новой ОС), а потом уже играть в "угадай, кто тебя вызвал".
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

17. "Проект OpenBSD представил технику защиты RETGUARD"  +1 +/
Сообщение от Аноним (??) on 21-Авг-17, 17:50 
Разгроми, напиши. Посмотрим, что получится.
Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

18. "Проект OpenBSD представил технику защиты RETGUARD"  +4 +/
Сообщение от Аноним123 on 21-Авг-17, 18:04 
Денис, это ты?
Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

47. "Проект OpenBSD представил технику защиты RETGUARD"  +/
Сообщение от Аноним (??) on 29-Авг-17, 06:58 
> Денис, это ты?

Написано "Кирилл Муковников". Приятно когда ламеры подписываются чтобы все знали кто это.

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

21. "Проект OpenBSD представил технику защиты RETGUARD"  +3 +/
Сообщение от ZloySergant (ok) on 21-Авг-17, 20:20 
>Первый эшелон - это бестолковейшие функции приёма данных (scanf, recv, etc) - там вся жесть, переполнения, переходы на код и т.п.

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

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

37. "Проект OpenBSD представил технику защиты RETGUARD"  +2 +/
Сообщение от pavlinux (ok) on 23-Авг-17, 18:02 
>>Первый эшелон - это бестолковейшие функции приёма данных (scanf, recv, etc) - там вся жесть, переполнения, переходы на код и т.п.
> Первый эшелон - это "острое высказывание в рамках несодержательного комментария, проявляющее
> неуважение к собеседнику и его коллегам, не умеющим пользоваться низкоуровневыми функциями"

Да он сам-то не понимает, скопипастил то, что в интернетах начитался.  


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

25. "Проект OpenBSD представил технику защиты RETGUARD"  +/
Сообщение от z (??) on 21-Авг-17, 21:41 
Gharik, это ты?
Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

26. "Проект OpenBSD представил технику защиты RETGUARD"  +/
Сообщение от Панин on 21-Авг-17, 21:52 
Ану иди сюда!
Ответить | Правка | ^ к родителю #25 | Наверх | Cообщить модератору

22. "Проект OpenBSD представил технику защиты RETGUARD"  –1 +/
Сообщение от Аноним (??) on 21-Авг-17, 20:36 
Лучше бы криптозащиту от Дэна ввиди MAC для адресов возврата допилили до продакшна. Да и вообще не нужно, у интела есть технология control flow guard.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

23. "Проект OpenBSD представил технику защиты RETGUARD"  +3 +/
Сообщение от A.Stahl (ok) on 21-Авг-17, 20:39 
>ввиди

:)

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

43. "Проект OpenBSD представил технику защиты RETGUARD"  +1 +/
Сообщение от pavlinux (ok) on 24-Авг-17, 01:17 
>>ввиди
> :)

пака ление айфон падрастает.  

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

35. "Проект OpenBSD представил технику защиты RETGUARD"  +/
Сообщение от Аноним (??) on 23-Авг-17, 00:58 
> Лучше бы криптозащиту от Дэна ввиди MAC для адресов возврата допилили до
> продакшна. Да и вообще не нужно, у интела есть технология control
> flow guard.

Control Flow Guard про другое, он не защищает от ROP — а retguard именно про это.

MAC для адресов возврата, если не ошибаюсь, дороговато выходит в плане потребления CPU...

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

24. "Проект OpenBSD представил технику защиты RETGUARD"  +2 +/
Сообщение от Baz on 21-Авг-17, 21:03 
на взлом защиты "Ретгард" надо первый эксплоит назвать "Данмер", "Аргонианин"...
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

31. "Проект OpenBSD представил технику защиты RETGUARD"  –1 +/
Сообщение от Старый одмин on 22-Авг-17, 10:10 
Там был Редгард.
Ответить | Правка | ^ к родителю #24 | Наверх | Cообщить модератору

27. "Проект OpenBSD представил технику защиты RETGUARD"  –1 +/
Сообщение от Аноним (??) on 22-Авг-17, 04:11 
А что меняет сплойту инвертировать самостоятельно?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

28. "Проект OpenBSD представил технику защиты RETGUARD"  +3 +/
Сообщение от Аноним (??) on 22-Авг-17, 08:36 
Если эксплоит может выполнить любой код, то ему вся это свистопляска с гаджетами и вызовом чужого кода не нужна. Но обычно он имеет возможность только поменять указать для переброса управления, т.е. может выстроить цепочку вызовов, но не может произвольно выполнить определённые инструкции из-за noexec на стеке.
Ответить | Правка | ^ к родителю #27 | Наверх | Cообщить модератору

29. "Проект OpenBSD представил технику защиты RETGUARD"  –1 +/
Сообщение от Аноним (??) on 22-Авг-17, 09:43 
Что мешает найти в коде инстукции pop... xor ... ret?
Ответить | Правка | ^ к родителю #28 | Наверх | Cообщить модератору

32. "Проект OpenBSD представил технику защиты RETGUARD"  –1 +/
Сообщение от Аноним (??) on 22-Авг-17, 14:07 
Ничего не мешает, ищи.
Ответить | Правка | ^ к родителю #29 | Наверх | Cообщить модератору

33. "Проект OpenBSD представил технику защиты RETGUARD"  +1 +/
Сообщение от Аноним84701 (ok) on 22-Авг-17, 14:12 
> Что мешает найти в коде инстукции pop... xor ... ret?

Зачем их искать? Их теперь встраивать будут.
Искать, как и раньше, можно <нужная инструкция/и, подготовка retaddr, ret>  

А тут задумка, как я понимаю, как раз в том чтобы усложнить использование "штатных" ret (со всеми "гаджетами"), генерированных компилятором.

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

48. "Проект OpenBSD представил технику защиты RETGUARD"  +/
Сообщение от Аноним (??) on 29-Авг-17, 07:03 
> Искать, как и раньше, можно <нужная инструкция/и, подготовка retaddr, ret>

Такая конструация обычно будет перед ret. Гаджет который сделает только ret - малополезен. В диком виде такое сочетание команд встречается не часто. Так что любителям гаджетов добавится долботни.

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

39. "Проект OpenBSD представил технику защиты RETGUARD"  +3 +/
Сообщение от pavlinux (ok) on 23-Авг-17, 18:13 
> Что мешает найти в коде инстукции pop... xor ... ret?

Точка старта не известна. Cдвиг на 1 бит превратит xor в скажем в mul  

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

40. "Проект OpenBSD представил технику защиты RETGUARD"  –2 +/
Сообщение от АБВ on 23-Авг-17, 20:25 
молодец, выделился.
Ответить | Правка | ^ к родителю #39 | Наверх | Cообщить модератору

46. "Проект OpenBSD представил технику защиты RETGUARD"  –1 +/
Сообщение от xor (??) on 27-Авг-17, 19:47 
Но если посмотреть патч - там не очень много вариантов инструкций получается. Если только получится реализовать базовую булевую операцию...
Ответить | Правка | ^ к родителю #39 | Наверх | Cообщить модератору

49. "Проект OpenBSD представил технику защиты RETGUARD"  +/
Сообщение от Аноним (??) on 29-Авг-17, 07:04 
> Точка старта не известна. Cдвиг на 1 бит превратит xor в скажем в mul

Один _бит_? Как эксплойт позиционировать в памяти побитово, для начала?

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

44. "Проект OpenBSD представил технику защиты RETGUARD"  +/
Сообщение от Аноним (??) on 24-Авг-17, 14:21 
RETARD :)
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

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

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




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

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