The OpenNET Project / Index page

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

Разработчики OpenBSD подготовили для libc механизм защиты anti-ROP

27.04.2016 09:32

В списке рассылки разработчиков OpenBSD опубликован набор патчей с реализацией новой техники защиты anti-ROP, основанной на случайном перестроении порядка расположения экспортируемых символов в системной библиотеке libc.so, выполняемом при каждой загрузке системы. Перестроение приводит к увеличению времени загрузки на несколько секунд.

Метод заключается в сохранении всех образующих libc объектных файлов в отдельном архиве с компоновкой нового файла libc.so при каждой загрузке, каждый раз комбинируя составные части libc.so в случайном порядке. Предложенная техника затрудняет создание ROP-эксплоитов, так как составляющие эксплоит "гаджеты" меняют свои смещения при каждой загрузке и затруднено их согласование с содержимым регистров, используемых для передачи аргументов, что требует создания индивидуального эксплоита для текущего состояния системы.

  1. Главная ссылка к новости (http://undeadly.org/cgi?action...)
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/44320-openbsd
Ключевые слова: openbsd
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (53) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, A.Stahl (ok), 09:45, 27/04/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –9 +/
    >основанной на случайном перестроении порядка расположения экспортируемых символов в системной библиотеке

    Звучит нелепо. Нужно бороться с возможностью злоумышленника играться со стеком вызовов, а не делать "мелкие подлости" ценой довольно странных манипуляций с библиотеками.

     
     
  • 2.3, Аноним (-), 10:09, 27/04/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Шнайера забыли спросить
     
  • 2.5, u (?), 10:11, 27/04/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Вы бы предложили ещё с фоннеймановской архитектуры переползти на что-нибудь другое ("гарвард" etc). Безопасно, чо!
     
     
  • 3.28, dq0s4y71 (??), 14:07, 27/04/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Вы будете удивлены, но большинство современных процессоров построено как раз на Гарвардской архитектуре, правда "модифицированной". Например, ARM или x86 выполняют инструкции в кэше чисто "по-гарвардски", а манипулируют данными "по-фоннеймановски".
     
     
  • 4.44, u (?), 15:48, 28/04/2016 [^] [^^] [^^^] [ответить]  
  • +/
    proof or GTFO. И как эти "модификации под гарварда" делают их "ближе к гарварду"?
    Видимо, из-за умелых "модификаций" существуют разного рода, успешности, удобства hardened* проекты.
     
     
  • 5.46, dq0s4y71 (??), 17:19, 28/04/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    "A modified Harvard architecture machine is very much like a Harvard architecture machine, but it relaxes the strict separation between instruction and data while still letting the CPU concurrently access two (or more) memory buses. The most common modification includes separate instruction and data caches backed by a common address space. While the CPU executes from cache, it acts as a pure Harvard machine. When accessing backing memory, it acts like a von Neumann machine (where code can be moved around like data, which is a powerful technique). This modification is widespread in modern processors, such as the ARM architecture and x86 processors. It is sometimes loosely called a Harvard architecture, overlooking the fact that it is actually "modified"." (https://en.wikipedia.org/wiki/Harvard_architecture)
     
     
  • 6.49, u (?), 18:44, 28/04/2016 [^] [^^] [^^^] [ответить]  
  • +/
    NX-bit и название "Modified Harvard architecture". Однако ж принцип остался тот же - процу абсолютно наплевать что вы ему суёте, код или данные, он в любом случае их попытается выполнить (за исключением областей, помеченных NX).

    Если серьёзно, то современные процы мало относятся и к той и к этой архитектурам. Сами архитектуры - "сферические кони в вакууме", в реальной жизни сложно разделить мир на белое и чёрное, на "гарвард" и "фон нейман". Возвращаясь именно к процессорам - им присущи как отдельные преимущества, так и недостатки обоих архитектур. За счёт программно-аппаратного разделения памяти на области кода и данных, x86, x86_64, ARM являются процессорами на базе "модифицированной гарвардской архитектуры", но только при условии если наличиствует поддержка со стороны ОС. Воткнём DOS'Ъ и новенький Intel/AMD станет привычной "фоннеймановской" машиной (реализация, конечно, будет отличаться от классической теории). Грань тонка, а железка, сама по себе, код и данные не разделяет.

    Интересно посмотреть на живые экземпляры "классического" гарварда и как организована их "кухня".

     
     
  • 7.54, dq0s4y71 (??), 15:16, 29/04/2016 [^] [^^] [^^^] [ответить]  
  • +/
    >[оверквотинг удален]
    > этой архитектурам. Сами архитектуры - "сферические кони в вакууме", в реальной
    > жизни сложно разделить мир на белое и чёрное, на "гарвард" и
    > "фон нейман". Возвращаясь именно к процессорам - им присущи как отдельные
    > преимущества, так и недостатки обоих архитектур. За счёт программно-аппаратного разделения
    > памяти на области кода и данных, x86, x86_64, ARM являются процессорами
    > на базе "модифицированной гарвардской архитектуры", но только при условии если наличиствует
    > поддержка со стороны ОС. Воткнём DOS'Ъ и новенький Intel/AMD станет привычной
    > "фоннеймановской" машиной (реализация, конечно, будет отличаться от классической теории).
    > Грань тонка, а железка, сама по себе, код и данные не
    > разделяет.

    Вот с этим, пожалуй, соглашусь.

    > Интересно посмотреть на живые экземпляры "классического" гарварда и как организована их
    > "кухня".

    AVR. Там для обращения к данным в пространстве кода есть специальная инструкция, и в сишной библиотеке присутствует дополнительный набор функций, например, для сравнения строк в пространстве кода - strcmp_P, и т.п.

     
  • 2.20, Аноним (-), 11:52, 27/04/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    "мелкие подлости" в опёнке называются хаки, запишинезабудь
     
  • 2.31, Коля (?), 15:08, 27/04/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Это как? Провести аудит всего софта запускаемого на опенбзд? Ооок
     
     
  • 3.38, Вареник (?), 04:51, 28/04/2016 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Силами полутора разработчиков OpenBSD, которых в этом мире реально беспокоит безопасность :)
     
  • 3.57, Аноним (-), 03:20, 30/04/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Это как? Провести аудит всего софта запускаемого на опенбзд? Ооок

    В OpenBSD аудит всей системы по тому или иному поводу — обычное дело.

     
  • 2.35, Анинимим (?), 21:10, 27/04/2016 [^] [^^] [^^^] [ответить]  
  • +/
    defense in depth
     
  • 2.36, Ordu (ok), 21:21, 27/04/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Если у вас есть способ позволяющий побороть возможность злоумышленника играться со стеком вызовов, и если этот ваш способ работает на 100%, то есть он реально позволяет избавится от этих проблем, то я не понимаю, почему этот способ до сих пор существует только в вашем воображении, и почему ROP-атаки до сих пор актуальны.
    Если же такого способа у вас нет, если ваш способ работает в 90% случаев, то он замечательно может быть дополнен мелкими пакостями, которые сработают в 90% случаев. И суммарный способ будет работать в 99% случаев.
     
  • 2.37, maximnik0 (?), 23:05, 27/04/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Звучит нелепо. Нужно бороться с возможностью злоумышленника играться со стеком вызовов,
    > а не делать "мелкие подлости" ценой довольно странных манипуляций с библиотеками.

    Затрудняющие атаку падчи есть и давно ,для параноиков даже дистрибутивы выпускают .
    Например PaX,Stack-Smashing Protector,StackGuard .
    С возможностью выбора падчей и включением ролевых и других систем безопасности развивается ответвление от генты -Hardened Gentoo .Наиболее универсальный набор с интегрированными  падчами у них называется grsecurity.Это софтовые методы .Но развиваются и аппаратные методы .
    В 2015 году Интел добавила аппаратную защиту для стека, но к сожалению софт нужно переписывать для безопасных вызовов .В свежих Спарках появился аппаратный контроль памяти и стека ,там сетуация с софтом полегче ,т.к с самого начала на страницы и стек можно было выставлять атрибуты защиты .Печально знаменитый наш Эльбрус ,тоже есть возможность выставлять аппаратные атрибуты защиты на стэк и память ,с контекстной системой защиты .


     
     
  • 3.47, Аноним (-), 17:53, 28/04/2016 [^] [^^] [^^^] [ответить]  
  • +/
    >> Звучит нелепо. Нужно бороться с возможностью злоумышленника играться со стеком вызовов,
    >> а не делать "мелкие подлости" ценой довольно странных манипуляций с библиотеками.
    > Затрудняющие атаку падчи есть и давно ,для параноиков даже дистрибутивы выпускают .
    > Например PaX,Stack-Smashing Protector,StackGuard .

    За пределами Linux тоже есть жизнь. Да-да!

     

  • 1.4, зщуфр (?), 10:10, 27/04/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +14 +/
    Полиморфные операционные системы, дожили.
     
     
  • 2.13, Аноним (-), 11:29, 27/04/2016 [^] [^^] [^^^] [ответить]  
  • +9 +/
    Ждем стеганографию, когда ОС будет прятаться среди прона пользователя.
     
     
  • 3.19, Andrey Mitrofanov (?), 11:50, 27/04/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Ждем стеганографию, когда ОС будет прятаться среди прона пользователя.

    Вызовы API ядра по скану паспорта, заверенному gpg ключом пользователя и нотариуса!  ...и шифрованные-подписанные адреса возврата в стеке  -- обязательно.

     
     
  • 4.25, Аноним (-), 13:33, 27/04/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ежели паспорта, то подписанное при помощи домен-к и никак иначе.
     
     
  • 5.39, Вареник (?), 04:55, 28/04/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Ежели паспорта, то подписанное при помощи домен-к и никак иначе.

    С мастер-подписью первого отдела, либо заменяющих уполномоченных кураторов - заведующей школы, востпитательницы детсада и т.д.

     
     
  • 6.59, Аноним (-), 15:23, 30/04/2016 [^] [^^] [^^^] [ответить]  
  • +/
    >> Ежели паспорта, то подписанное при помощи домен-к и никак иначе.
    > С мастер-подписью первого отдела, либо заменяющих уполномоченных кураторов - заведующей
    > школы, востпитательницы детсада и т.д.

    Первого или всё же второго?

     
  • 2.18, Andrey Mitrofanov (?), 11:46, 27/04/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Полиморфные операционные системы, дожили.

    Несимметричный ответ GNU https://www.gnu.org/software/guix/manual/html_node/Application-Setup.html#Loca Guix-а патчетелям бинарных libc.so: _пользователь_ может каждому приложению поставить (и собрать:)) по отдельной версии GNU libc. _Каждый_ пользователь в системе  -- каждое приложение со своей отдельной glibc!  Смерть крацкерам.

     
     
  • 3.48, Аноним (-), 17:56, 28/04/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >> Полиморфные операционные системы, дожили.
    > Несимметричный ответ GNU https://www.gnu.org/software/guix/manual/html_node/Application-Setup.html#Loca
    > Guix-а патчетелям бинарных libc.so: _пользователь_ может каждому приложению поставить
    > (и собрать:)) по отдельной версии GNU libc. _Каждый_ пользователь в системе
    >  -- каждое приложение со своей отдельной glibc!  Смерть крацкерам.

    Раньше такое называлось^Wделалось статической линковкой... Такая идея тоже рассматривалась, но Тео относится к ней скептически.

     

  • 1.6, Аноним (-), 10:19, 27/04/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Эволюция на планете зародилась в следствии многократного сталкивания и перестраивания случайных элементов...
    >каждый раз комбинируя составные части libc.so в случайном порядке

    skynet близко, покайтесь!

     
  • 1.7, Аноним (-), 10:46, 27/04/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Судя по коментам, теоретики и практики - вещи не совместимые.
     
     
  • 2.40, Вареник (?), 04:57, 28/04/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Судя по коментам, теоретики и практики - вещи не совместимые.

    Это как конфликт ученых с инженерами. Разные социальные группы, мыслят по-разному.

     

  • 1.8, IZh. (?), 10:47, 27/04/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Интересно, это потом на отладке никак не скажется? Типа, приложение упало в корку. Что оно вызвало из glibc на предыдущей загрузке системы? А фиг его знает...

    В корку же код библиотек, вроде, не дампается?

     
     
  • 2.10, Аноним (-), 11:14, 27/04/2016 [^] [^^] [^^^] [ответить]  
  • +/
    glibc != libc.

    или у вас GNU головного мозга ?

     
     
  • 3.14, омномномнимус (?), 11:29, 27/04/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    а что, бздешная либси не поддается отладке?
     
     
  • 4.33, Аноним (-), 16:33, 27/04/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    бздешная либси не вызывает ничего из glibc
     
  • 2.41, Вареник (?), 04:59, 28/04/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Интересно, это потом на отладке никак не скажется? Типа, приложение упало в
    > корку. Что оно вызвало из glibc на предыдущей загрузке системы? А
    > фиг его знает...
    > В корку же код библиотек, вроде, не дампается?

    Как минимум пока не перегрузился - можно работать с дампом. Uptime на подобной системе может быть очень длительным.

     

  • 1.9, Аноним (-), 11:08, 27/04/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Если сервер перегружали 1 раз за 10 лет не каких там трудностей.
     
     
  • 2.11, имя (?), 11:14, 27/04/2016 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Только ты забываешь о массовом эксплуатировании, которое становится труднее потому, что рандомизация на всех машинах разная. Многолетние аптаймы какой-то погоды тут не делают.
     
  • 2.17, Ivan_83 (ok), 11:35, 27/04/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    И все 10 лет придётся отгадывать где искать нужные функции в этой конкретной libc.
    Смысл в том, что оно получается уникальным и одноразовым, а атакующий полагается на то, что заранее знает где какие кусочки кода в памяти есть.
     
     
  • 3.27, burik666 (?), 13:40, 27/04/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну тогда можно это делать 1 раз при установке ОС.
     
     
  • 4.32, Ivan_83 (ok), 16:28, 27/04/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    После загрузки - это минимально доступное время между рандомизациями в BSD.
    Если бы Тэо мог, он бы сделал раз в хх минут.

    Чем чаще оно рандомизируется - тем ниже вероятность что успеет утечь.

     
     
  • 5.58, Аноним (-), 03:24, 30/04/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > После загрузки - это минимально доступное время между рандомизациями в BSD.
    > Если бы Тэо мог, он бы сделал раз в хх минут.

    Сделать-то можно. Только тогда в каждой программе может получиться своя libc. Если даже отбросить производительность — как вы будете отлаживаться?

     
  • 4.43, ig0r (??), 15:36, 28/04/2016 [^] [^^] [^^^] [ответить]  
  • +/
    1 раз предполагает хранение стейта между загрузками на диске
     

  • 1.21, chinarulezzz (ok), 12:30, 27/04/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Даже на дэсктопах, где опёнок не распространён, ось перегружают всё меньше и меньше. А на серверах тем более. Странная фича.
     
  • 1.22, бедный буратино (ok), 12:48, 27/04/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    йоу! кто ты, что ты сделал для антиропа в свои годы! йоу-йоу.

    не "вызовет увеличение времени загрузки примерно на секунду", а на "самой медленной машине, какую смогли найти, это заняло секунду при загрузке"

     
  • 1.24, gresolio (ok), 13:01, 27/04/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Sony очень обрадуется таким наработкам, сразу утащат в свой Orbis OS не глядя :)
    https://cturt.github.io/ps4.html
     
  • 1.26, Аноним (-), 13:35, 27/04/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >Перестроение приводит к увеличению времени загрузки примерно на секунду.

    виндусодети с системдоса корчат рожи и хихикают

     
     
  • 2.42, Вареник (?), 05:01, 28/04/2016 [^] [^^] [^^^] [ответить]  
  • +/
    >>Перестроение приводит к увеличению времени загрузки примерно на секунду.
    > виндусодети с системдоса корчат рожи и хихикают

    Им это неактуально - проприетарный блоб для проца и видюхи обнулит все танцы безопасности с libc.

     
     
  • 3.45, Аноним (-), 16:02, 28/04/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Им это неактуально - проприетарный блоб для проца и видюхи обнулит все
    > танцы безопасности с libc.

    Management Engine с неустранимым блобом есть с 2010 года во всех системах с процессорами Intel. Всех, Карл!

     

  • 1.29, Нанобот (ok), 14:08, 27/04/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    по-моему ASLR будет проще и быстрее. при где-то таком-же уровне защиты там не нужно ничего писать на диск при каждой загрузке
     
     
  • 2.34, Нимано_ (?), 16:52, 27/04/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > по-моему ASLR будет проще и быстрее. при где-то таком-же уровне защиты там
    > не нужно ничего писать на диск при каждой загрузке

    Ну дык, это же дополнение – ASLR всю либу целиком перемещает и, чисто теоретически, если удасться узнать один адрес, то можно будет посчитать остальные, а сабж вроде как усложнит.

    Как по мне, то немного отдает паранойей … *пожимает плечами* но, никто ведь принудительно пользоваться не заставляет! А там, после/во время обкатки может быть еще пара идей появится – и глядишь, что-нибудь для более "широкой публики" выйдет.

     

  • 1.50, Аноним (-), 12:50, 29/04/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    https://grsecurity.net/rap_announce.php - тихо и незаметно...
     
     
  • 2.51, Аноним (-), 13:11, 29/04/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > https://grsecurity.net/rap_announce.php - тихо и незаметно...

    The demo version will evolve over time, but is currently tailored for x64 kernel use only and does not support C++, link-time optimization, compile time static analysis, and probabilistic return address protection. In addition, the demo's GPLv2 license excludes userland applications due to the GCC library runtime exception for GCC plugins.

     
  • 2.52, Andrey Mitrofanov (?), 13:25, 29/04/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > https://grsecurity.net/rap_announce.php

    [CODE]History
    StackGuard 1999 (XOR canary)
    [...]
    Response
    : encrypt/decrypt return address by a random key[/CODE]

    Надо завязывать http://www.opennet.dev/openforum/vsluhforumID3/107700.html#19 с шуточками.
    ...и шифрованные-подписанные адреса возврата в стеке  -- обязательно.
    Не смешно и уже нцать лет как продаётся -- вот и коллегами по форуму.

    > - тихо и незаметно...

     

  • 1.53, Аноним (-), 14:11, 29/04/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    https://pax.grsecurity.net/docs/PaXTeam-H2HC15-RAP-RIP-ROP.pdf - для ознакомления. Также помогает при высоких уровнях ЧСВ головного мозга.
     
     
  • 2.55, Andrey Mitrofanov (?), 15:59, 29/04/2016 [^] [^^] [^^^] [ответить]  
  • +/
    >/PaXTeam-H2HC15-RAP-RIP-ROP.pdf - для ознакомления.
    > Также помогает при высоких уровнях ЧСВ головного мозга.

    Вам помогло? -- запостить pdf-ку, ссылка на которую есть суть предыдущей ссылки в посте выше?

    Вы оказываете гуманитарную помощь специалистам по безопасности. прокачивающих чсв, и не владеющих ссылко-тынцаньем?  Человечище!

     
     
  • 3.56, Аноним (-), 16:44, 29/04/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Просто у меня сложилось впечатление, что вы, господин специалист по безопасности, в первый раз по диагонали прочли, пропустив все незнакомые слова. Тут не грех и дважды повторить. Ведь защита адресов возврата - лишь один из механизмов (не самый сложный и не самый сильный), который в текущую общедоступную версию grsec-патча даже и не включен из коммерческих соображений.
     

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



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

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