The OpenNET Project / Index page

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

В OpenBSD для sshd применена перекомпоновка во время загрузки

20.01.2023 17:50

В OpenBSD реализована техника защиты от эксплуатации уязвимостей, основанная на случайной перекомпоновке исполняемого файла sshd при каждой загрузке системы. Ранее подобная техника перекомпоновки применялась в отношении ядра и библиотек libc.so, libcrypto.so и ld.so, а теперь будет применена и для некоторых исполняемых файлов. В ближайшее время метод также планируется реализовать для ntpd и других серверных приложений. Изменение уже включено в состав ветки CURRENT и будет предложено в выпуске OpenBSD 7.3.

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

  1. Главная ссылка к новости (http://undeadly.org/cgi?action...)
  2. OpenNews: Планы по усилению механизма защиты W^X в OpenBSD
  3. OpenNews: В состав OpenBSD-Current добавлен механизм защиты RETGUARD
  4. OpenNews: В OpenBSD добавлена новая защита от атак на основе заимствования кусков кода
  5. OpenNews: Проект grsecurity представил защиту от атак с использованием заимствования кусков кода
  6. OpenNews: Разработчики OpenBSD подготовили для libc механизм защиты anti-ROP
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/58520-openbsd
Ключевые слова: openbsd, sshd
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (50) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 17:54, 20/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Костыли какието
     
  • 1.3, Аноним (3), 17:54, 20/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    Первое, что я делаю на этапе установки, хоть на очень старых компах, хоть на более современных, это rm -r /mnt/usr/share/relink

    Если я буду продолжать так делать, sshd будет работать?

     
     
  • 2.21, Аноним (21), 21:55, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > rm -r /mnt/usr/share/relink

    Но зачем?

     
     
  • 3.43, Аноним (43), 04:27, 21/01/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    на старых системах - потому что инсталляция по оом сдохнет. по новой - мне не надо КАЖДУЮ перезагрузку перекомпилировать ядро, оно жрёт проц и память. Ну и лишнее место занимает.
     
     
  • 4.59, Аноним (21), 16:52, 21/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > мне не надо КАЖДУЮ перезагрузку перекомпилировать ядро, оно жрёт проц и память

    тогда тебе и опенбзд не нужна, раз ты не разделяешь ценностей и целей сообщества (и ничего там не перекомпилируется, изучи вопрос)

     
     
  • 5.62, ob2 (?), 02:00, 22/01/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    хорошо, перелинковывается, какая разница - жрёт и тормозит

    ну да, до 6.1, вроде, этого не было, и тут вдруг появилось, и это сразу стало "ценностью сообщества". установщик нормально поддерживает тот факт, что в процессе установки я грохну /usr/share/relink, поэтому и мне жаловаться не на что. а уж что мне нужно, я сам решу

     
  • 5.65, kusb (?), 16:16, 23/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Они просто дают инструменты, может быть перелинковывать всё при каждой загрузке это много.
    Но ...может можно перелинковывать просто иногда или во время работы системы без блокировки других процессов? А перелинкованное ядро запустится при следующей загрузке.
     
  • 2.26, Аноним (26), 22:38, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    А зачем вам OpenBSD, если не секрет?
     
     
  • 3.44, Аноним (43), 04:28, 21/01/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Она мне удобна.
     
     
  • 4.55, Аноним (55), 15:02, 21/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Тогда зачем сносить relink?
     
     
  • 5.63, ob2 (?), 02:01, 22/01/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    логично, потому что он мне неудобен и нигде не нужен
     

  • 1.5, Аноним (5), 18:00, 20/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    > применена перекомпоновка во время загрузки

    турбирующие обезьяны, сэр!

    Ну можно же релинк сделать однажды после установки, но замедлять систему при каждой загрузке - это шедевр. Да, я знаю, это не только для ссш.

     
     
  • 2.30, Аноним (26), 22:47, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Это компромисс между перекомпоновкой перед каждым запуском бинарника и полным отсутствием таковой в принципе.

    В теории, атакующий может использовать разные уязвимости: одну для считывания кода бинарника, другую — для подстановки своих данных, для собственно перехвата управления. Поэтому в идеале было бы рандомизировать содержимое .text перед каждым запуском программы. Но это слишком большие накладные расходы, такое почти никто не будет использовать.

     
     
  • 3.54, Аноним (54), 14:00, 21/01/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Так жеж нетбзду мало кто использует, особенно на практике. Так что всё верно.
     

  • 1.7, Аноним (7), 18:08, 20/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    А проверку воспроизводимости сборок это не подломает? Так-то куда интереснее знать что в системе изначально стоит не шерето чем защищать костылями заведомо скомпрометированный локалхост
     
     
  • 2.10, Аноним (10), 18:39, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Перелинковываем бинарник на диске? Или все же в памяти?
     
     
  • 3.16, Онанист (?), 20:37, 20/01/2023 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.27, Аноним (26), 22:40, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Не ломает. Верификация происходит до собственно установки. В том и прелесть, что установочные образы — одинаковые, а ключевые системные компоненты, с точки зрения атакающих, — разные.
     

  • 1.17, Аноним (17), 20:51, 20/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    R^X почему то не хотят сделать
     
     
  • 2.28, Аноним (26), 22:41, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Работа идёт. К сожалению, Intel'овские процы изначально это не позволяли...
     
     
  • 3.41, Аноним (41), 01:40, 21/01/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Олё, болезный! x86_64 изначально уже предполагала эту фичу. Это архаичная x86 не поддерживала. Но её уже изжили.
     

  • 1.18, Аноним (18), 21:29, 20/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    https://github.com/runsafesecurity/selfrando
     
     
  • 2.23, анон (?), 22:06, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Сколько же костылей сделано, лишь бы не делать проц с современным контролем сегментов.
     
     
  • 3.37, Аноним (37), 00:54, 21/01/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Дак было же, сегментация 286-го. Дали тебе сегмент - и фиг ты из него вылезешь. Но в эпоху 64-битности её выпилили полностью.
     
     
  • 4.40, Аноним (-), 01:31, 21/01/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    MMU с атрибутами страниц может все то же что сегментация, только гибче и круче. Заодно еще и paging под шумок может, позволяя кастомную обработку исключений. И если что - юзерская программа не имеет прямого доступа к управлению правами страниц. Так что если что-то идет не так, возможно стоит пропатчить кернелы на тему того как они это делают.

    Тео впрочем предпочел вбить фееричный костыль на тему ASLR. Сделать ASLR нормально? А, фиг, давайте лучше линкером бинари на диске корежить будем. Ну, логично, блин, если системных программистов не осталось в системе - тогда вот так.

     
     
  • 5.47, Аноним (47), 09:39, 21/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Сделать ASLR нормально? А, фиг

    Вообще-то в OpenBSD он там есть.

     
  • 5.48, Аноним (48), 10:26, 21/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Тео впрочем предпочел вбить фееричный костыль на тему ASLR. Сделать ASLR нормально?
    > А, фиг, давайте лучше линкером бинари на диске корежить будем. Ну,
    > логично, блин, если системных программистов не осталось в системе - тогда вот так.

    Т.е. в линуксах системных погроммисто не осталось, так и запишем.

     
  • 5.51, Аноним (51), 12:47, 21/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Самое главное что системные программы осталось на опеннет и они готовы рассказать не системным не программистам, как им надо было писать их программы
     
  • 5.58, Аноним (55), 15:21, 21/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    ASLR и описанная технология друг друга не исключают, а дополняют.

    А ASLR в OpenBSD имеется и работает уже десятка два лет как.

     

  • 1.19, Аноним (19), 21:29, 20/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Ох-нно.

    Теперь сисадмин даже не может проверить бинарник на предмет целостности.

    Отличная идея для хакеров, поржал.

     
     
  • 2.20, Аноним (20), 21:53, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    ты вот прям-пряи реально думаешь, что при каждом запуске бинарник сам себя  перезаписыаает на файловой системе, а не в памяти перетасовывает адреса? o_O

    Ты случно не на расте пишешь hello world'ы?

     
     
  • 3.22, ivan_erohin (?), 22:05, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Ты случно не на расте пишешь hello world'ы?

    нет, на /bin/sh

     
  • 3.29, Аноним (26), 22:42, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Бинарник перезаписывается на диске. Но делает это не он сам, а /etc/rc.
     

  • 1.25, Аноним (25), 22:31, 20/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Ну всё, теперь все два локалхоста под управлением OpenBSD в безопасности. Можно больше не волноваться.
     
     
  • 2.31, Аноним (31), 23:03, 20/01/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    И смешно, и правда))
     

  • 1.33, pashev.ru (?), 23:32, 20/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Coreduump в труху?
     
     
  • 2.46, Аноним (46), 07:06, 21/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Тихо, они ещё не до дебага не добрались
     

  • 1.34, Аноним (34), 00:23, 21/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    В последнее время линукс дистроклепатели упариваются в разные методы реализации "консистентности" ОС на конечных ПК пользователей. Я говорю про всякие там федоры, vanilla os (кстати ЕМНИП в deepin концепция A/B разделов была реализована давным давно). А Эти я так полагаю модифицирует бинари на накопителе перед из загрузкой в озу?
     
     
  • 2.36, Аноним (37), 00:50, 21/01/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    мир свернул куда-то не туда в эпоху системд и растов.
     
     
  • 3.66, BorichL (ok), 16:54, 24/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Мир свернул не туда ещё во времена всёвытесняющего замещения тупopылoй интелловской архитектурой.
     
  • 2.50, Аноним (43), 11:54, 21/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > А Эти я так полагаю модифицирует бинари на накопителе перед из загрузкой в озу?

    там просто .o файлы, из которых бинарник линкуется. проверяй .o файлы, кто мешает

     

  • 1.42, Аноним (42), 02:57, 21/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Эй, экспертусы, поясните нибудь, чем это отличается от рандомизации адресного пространства (ASLR). Тут типа ещё офсеты функций и статических данных каждый раз новые внутри секций? Типа процедуры каждый раз по-новому переставляются относительно друг друга и т.д.?
     
     
  • 2.53, www2 (??), 13:12, 21/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Присоединяюсь к вопросу. Чем это отличается от ASLR?

    Вмдимо, всё-таки имеется в виду, что случайные адреса получают секции .text из статически скомпонованных .o-файлов, входящих в состав sshd, а не динамически загружаемые .so-библиотеки, для которых и так есть ASLR.

     
  • 2.56, Аноним (55), 15:08, 21/01/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    ASLR разместит вашу секцию .text при запуске в произвольном месте оперативной памяти. При этом относительно друг друга все функции расположены по одним и тем же смещениям.

    Перекомпоновка же даёт иное содержимое секции кода.

    Так что эти технологии дополняют друг друга. И, да, ASLR в OpenBSD по умолчанию был включён куда раньше, чем в подавляющем большинстве Linux-дистрибутивов.

     
     
  • 3.60, www2 (??), 17:41, 21/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Что-то я сомневаюсь, что компоновщик ещё и внутри каждого .o-файла будет менять адреса функций. Перетасовать .o-файлы - да, а внутри них что-то менять - вряд ли.
     
     
  • 4.61, Аноним (61), 22:47, 21/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    sshd собирается не из одного .o файла
     
  • 3.64, 1 (??), 10:10, 23/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Приятно прочитать технический ответ.
    А не "сам дурак".
     

  • 1.49, Аноним (-), 10:45, 21/01/2023 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +/
     
  • 1.52, Аноним (52), 13:10, 21/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Тео опять что-то придумал в пустоту.
     
     
  • 2.57, Аноним (55), 15:10, 21/01/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Спасибо за ваше ценное аргументированное мнение. Мы обязательно учтём его в следующих релизах OpenBSD.
     

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



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

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