The OpenNET Project / Index page

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

21.08.2017 12:25  Проект OpenBSD представил технику защиты RETGUARD

Тео де Раадт (Theo de Raadt) представил предварительную реализацию техники защиты RETGUARD, которую планируется интегрировать в OpenBSD для усложнения выполнения эксплоитов, построенных с использованием заимствования кусков кода и приёмов возвратно-ориентированного программирования (ROP, Return-Oriented Programming).

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

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

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

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

  1. Главная ссылка к новости (http://undeadly.org/cgi?action...)
  2. OpenNews: В OpenBSD добавлена новая защита от атак на основе заимствования кусков кода
  3. OpenNews: Проект grsecurity представил защиту от атак с использованием заимствования кусков кода
  4. OpenNews: Разработчики OpenBSD подготовили для libc механизм защиты anti-ROP
  5. OpenNews: Проект grsecurity опубликовал реализацию механизма защиты RAP для ядра Linux
  6. OpenNews: Для OpenBSD представлена новая техника рандомизации адресного пространства ядра
Лицензия: CC-BY
Тип: Программы
Ключевые слова: openbsd, exploit
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Линейный вид | Ajax | Показать все | RSS
 
  • 1.7, бедный буратино, 14:08, 21/08/2017 [ответить] [смотреть все]
  • –1 +/
    короче, 6.2 будет суперзащищённой, но половина портов работать не будет :)

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

     
  • 1.9, Аноним, 15:13, 21/08/2017 [ответить] [смотреть все]
  • +4 +/
    Здесь какой-то берд написан XORL - 32-битная инструкция, она не может применять... весь текст скрыт [показать]
     
     
  • 2.10, Аноним, 15:18, 21/08/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • –1 +/
    Аффтар, ты бы хоть патч посмотрел https marc info l openbsd-tech m 150317547... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.36, pavlinux, 17:44, 23/08/2017 [^] [ответить] [смотреть все]  
  • +3 +/
    Сам-то смотрел code ifdef _KERNEL 32 bit define RETGUARD_CFI cfi_... весь текст скрыт [показать]
     
     
  • 4.42, pavlinux, 01:14, 24/08/2017 [^] [ответить] [смотреть все]  
  • +/
    code code Ну чаво, хацкеры, кто ответит, чо занах 32-бита и rsp ... весь текст скрыт [показать]
     
     
  • 5.45, pavlinux, 04:17, 26/08/2017 [^] [ответить] [смотреть все]  
  • +/
    Панятно Кароч это кусок для 32-битных бинарников работающих в 64-битной ОСи ... весь текст скрыт [показать]
     
  • 1.11, Аноним, 15:27, 21/08/2017 [ответить] [смотреть все]  
  • +/
    Да сделайте уже отдельный стек для данных и отдельный - для адресов возврата!
     
     
  • 2.13, Аноним, 16:29, 21/08/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +2 +/
    Т е предлагаете сменить архитектуру процессора За чей счёт этот банкет Кто о... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.14, Аноним, 16:36, 21/08/2017 [^] [ответить] [смотреть все]  
  • +/
    Системные администраторы скинутся :)
     
     
  • 4.15, мимо крокодил, 16:44, 21/08/2017 [^] [ответить] [смотреть все]  
  • +1 +/
    ну, кстати, да. Куда заносить?
     
     
  • 5.19, Аноним, 18:41, 21/08/2017 [^] [ответить] [смотреть все]  
  • +2 +/
    Сюда: http://www.openbsd.org/donations.html
     
     
  • 6.20, A.Stahl, 18:49, 21/08/2017 [^] [ответить] [смотреть все]  
  • +1 +/
    Не несите туда деньги Они будут потрачены на БСД А может и на что ещё похуже ... весь текст скрыт [показать]
     
     
  • 7.30, Аноним, 09:45, 22/08/2017 [^] [ответить] [смотреть все]  
  • –2 +/
    На БДСМ
     
     
  • 8.34, Аноним, 14:15, 22/08/2017 [^] [ответить] [смотреть все]  
  • –1 +/
    > На БДСМ

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


     
  • 2.38, pavlinux, 18:11, 23/08/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +2 +/
    И зашифровать ... весь текст скрыт [показать] [показать ветку]
     
  • 2.41, alex53, 22:16, 23/08/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +/

    У есть, называется Intel MPX.
     
  • 1.16, Kodir, 17:16, 21/08/2017 [ответить] [смотреть все]  
  • –3 +/
    Ф у фло, а не защита Это далеко не самая проблемная часть кода Первый эшелон -... весь текст скрыт [показать]
     
     
  • 2.17, Аноним, 17:50, 21/08/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    Разгроми, напиши. Посмотрим, что получится.
     
  • 2.18, Аноним123, 18:04, 21/08/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +4 +/
    Денис, это ты?
     
     
  • 3.47, Аноним, 06:58, 29/08/2017 [^] [ответить] [смотреть все]  
  • +/
    Написано Кирилл Муковников Приятно когда ламеры подписываются чтобы все знали... весь текст скрыт [показать]
     
  • 2.21, ZloySergant, 20:20, 21/08/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +3 +/
    Первый эшелон - это острое высказывание в рамках несодержательного комментария,... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.37, pavlinux, 18:02, 23/08/2017 [^] [ответить] [смотреть все]  
  • +2 +/
    Да он сам-то не понимает, скопипастил то, что в интернетах начитался ... весь текст скрыт [показать]
     
  • 2.25, z, 21:41, 21/08/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Gharik, это ты?
     
     
  • 3.26, Панин, 21:52, 21/08/2017 [^] [ответить] [смотреть все]  
  • +/
    Ану иди сюда!
     
  • 1.22, Аноним, 20:36, 21/08/2017 [ответить] [смотреть все]  
  • –1 +/
    Лучше бы криптозащиту от Дэна ввиди MAC для адресов возврата допилили до продакш... весь текст скрыт [показать]
     
     
  • 2.23, A.Stahl, 20:39, 21/08/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +3 +/
    >ввиди

    :)

     
     
  • 3.43, pavlinux, 01:17, 24/08/2017 [^] [ответить] [смотреть все]  
  • +1 +/
    >>ввиди
    > :)

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

     
  • 2.35, Аноним, 00:58, 23/08/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Control Flow Guard про другое, он не защищает от ROP 8212 а retguard именно п... весь текст скрыт [показать] [показать ветку]
     
  • 1.24, Baz, 21:03, 21/08/2017 [ответить] [смотреть все]  
  • +2 +/
    на взлом защиты "Ретгард" надо первый эксплоит назвать "Данмер", "Аргонианин"...
     
     
  • 2.31, Старый одмин, 10:10, 22/08/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • –1 +/
    Там был Редгард.
     
  • 1.27, Аноним, 04:11, 22/08/2017 [ответить] [смотреть все]  
  • –1 +/
    А что меняет сплойту инвертировать самостоятельно?
     
     
  • 2.28, Аноним, 08:36, 22/08/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +3 +/
    Если эксплоит может выполнить любой код, то ему вся это свистопляска с гаджетами... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.29, Аноним, 09:43, 22/08/2017 [^] [ответить] [смотреть все]  
  • –1 +/
    Что мешает найти в коде инстукции pop... xor ... ret?
     
     
  • 4.32, Аноним, 14:07, 22/08/2017 [^] [ответить] [смотреть все]  
  • –1 +/
    Ничего не мешает, ищи.
     
  • 4.33, Аноним84701, 14:12, 22/08/2017 [^] [ответить] [смотреть все]  
  • +1 +/
    Зачем их искать Их теперь встраивать будут Искать, как и раньше, можно нужна... весь текст скрыт [показать]
     
     
  • 5.48, Аноним, 07:03, 29/08/2017 [^] [ответить] [смотреть все]  
  • +/
    Такая конструация обычно будет перед ret Гаджет который сделает только ret - ма... весь текст скрыт [показать]
     
  • 4.39, pavlinux, 18:13, 23/08/2017 [^] [ответить] [смотреть все]  
  • +3 +/
    Точка старта не известна Cдвиг на 1 бит превратит xor в скажем в mul ... весь текст скрыт [показать]
     
     
  • 5.40, АБВ, 20:25, 23/08/2017 [^] [ответить] [смотреть все]  
  • –2 +/
    молодец, выделился.
     
  • 5.46, xor, 19:47, 27/08/2017 [^] [ответить] [смотреть все]  
  • –1 +/
    Но если посмотреть патч - там не очень много вариантов инструкций получается. Если только получится реализовать базовую булевую операцию...
     
  • 5.49, Аноним, 07:04, 29/08/2017 [^] [ответить] [смотреть все]  
  • +/
    Один _бит_ Как эксплойт позиционировать в памяти побитово, для начала ... весь текст скрыт [показать]
     
  • 1.44, Аноним, 14:21, 24/08/2017 [ответить] [смотреть все]  
  • +/
    RETARD :)
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor