The OpenNET Project / Index page

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

Проект OpenBSD перешёл на обязательное использование механизма защиты W^X

28.05.2016 09:35

Проект OpenBSD перешёл на обязательное применение механизма защиты памяти W^X (Write XOR Execute), суть которого в том, что страницы памяти процесса не могут быть одновременно доступны на запись и исполнение. Таким образом, код может быть исполнен только после запрещения записи, а запись в страницу памяти возможна только после запрета исполнения. Механизм W^X помогает защитить приложения в пространстве пользователя от типовых атак, осуществляемых через переполнение буфера, в том числе от переполнений стека (записанный за пределы буфера код не может быть исполнен).

Традиционно в Unix при маппинге памяти допускается модель "W|X", позволяющая одновременно осуществлять и запись, и исполнение, что является порочной практикой с позиции обеспечения безопасности. В OpenBSD отныне такая модель переведена в категорию недопустимых (при попытке использования будет выведена ошибка) и обязательно требуется использование только механизма "W^X".

Обход запрета "W^X" может быть осуществлён только через монтирование ФС (ffs/nfs) со специальным флагом "wxallowed", который рекомендуется использовать для монтирования /usr/local, так как некоторые сторонние программы пока не адаптированы для нормальной поддержки "W^X". Многие порты уже адаптированы для нормальной работы в режиме "W^X" или поддерживают его из коробки (например, Firefox), но с рядом крупных пакетов пока наблюдаются проблемы, это касается JDK, GCC, Mono и Chromium.

  1. Главная ссылка к новости (http://undeadly.org/cgi?action...)
  2. OpenNews: Проект grsecurity представил защиту от атак с использованием заимствования кусков кода
  3. OpenNews: Разработчики OpenBSD подготовили для libc механизм защиты anti-ROP
  4. OpenNews: Досрочно выпущен OpenBSD 5.9
  5. OpenNews: Проект по продвижению в ядро Linux новых технологий активной защиты
  6. OpenNews: Стабильный выпуск HardenedBSD 10-STABLE и 11-CURRENT v40.1
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/44506-openbsd
Ключевые слова: openbsd
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (35) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, anonymous (??), 10:57, 28/05/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Молодцы!
     
  • 1.2, Sunderland93 (ok), 11:03, 28/05/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Самая безопасная ОС стала ещё безопаснее! Вот бы для Линукса такое запилили
     
     
  • 2.3, Аноним (-), 11:18, 28/05/2016 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Защищённый вариант mprotect уже лет 15 как PaX-ом запилен, но в ядро добавлять его никто не спешит и тем более переходить на его обязательное использование.
     
     
  • 3.21, Аноним (-), 20:10, 29/05/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Защищённый вариант mprotect уже лет 15 как PaX-ом запилен, но в ядро
    > добавлять его никто не спешит и тем более переходить на его
    > обязательное использование.

    Вы, часом, не путаете ядро и всю ОС, вместе со всем базовым софтом?

     
  • 2.4, angra (ok), 11:22, 28/05/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Добавить в линукс связь флагов страниц памяти с флагами монтирования файловой системы? Спасибо, не надо. Такое нужно лишь тем, кто хочет поддерживать миф о "только две remote дырки за все время", а значит вынужден отделять "надежные" пакеты базовой ОС от всего остального, что обычно ставят для нормальной работы.
     
     
  • 3.5, Ананимас (ok), 14:09, 28/05/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >вынужден отделять "надежные" пакеты базовой ОС от всего остального, что обычно ставят для нормальной работы.

    как traceroute в linux?

     
  • 3.9, grsec (ok), 17:12, 28/05/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Какие проблемы?
     
  • 3.29, Аноним (-), 16:06, 30/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Добавить в линукс связь флагов страниц памяти с флагами монтирования файловой системы? Спасибо, не надо.

    В Линуксе выставляют опции защиты памяти для каждого отдельного файла. Причём можно это сделать двумя способами:

    1. Метить ELF заглавия файлов CONFIG_PAX_PT_PAX_FLAGS = y

    2. Создавать дополнительные атрибуты в файловой системе CONFIG_PAX_XATTR_PAX_FLAGS = y (удобно для кривых проприетарных прог с подписаными бинарями)

    Метят файлы утилитой paxctl-ng

     
  • 2.6, Аноним (-), 14:50, 28/05/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >  Вот бы для Линукса такое запилили

    Больщинство дистров давно уже это используют.

     
     
  • 3.7, Аноним (-), 15:02, 28/05/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А поподробнее.
     
     
  • 4.8, Аноним (-), 16:47, 28/05/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    man PaX
    Заодно и GRSECURITY.
     
     
  • 5.11, Нанобот (ok), 19:55, 28/05/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    пожалуйста, ознакомьтесь со значение слова "большинство" (http://ru.wiktionary.org/wiki/%D0%B1%D0%BE%D0%B), после чего попробуйте ответить на тот же вопрос ещё раз
     
  • 3.14, Аноним (-), 02:39, 29/05/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    В большинстве дистров это возможно. Но почти никто не использует by-default.
     

  • 1.10, Аноним (-), 19:06, 28/05/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –5 +/
    Можно загрузить другую ОС с флешки и дампнуть память.
     
     
  • 2.22, Аноним (-), 23:16, 29/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Можно загрузить другую ОС с флешки и дампнуть память.

    А в огороде бузина …
    Или к чему это?


     

  • 1.12, НяшМяш (ok), 20:07, 28/05/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    > JDK, GCC, Mono и Chromium

    Большинство понятно, что говнище, но вот от GCC не ожидал. Интересно, у Clanga те же проблемы?

     
     
  • 2.13, Аноним (-), 21:56, 28/05/2016 [^] [^^] [^^^] [ответить]  
  • +4 +/
    jdk, mono, chromium это из за jit. Туда придется добавлять уменьшающие производительность костыли чтоб это работало.
     
     
  • 3.18, Аноним (-), 14:39, 29/05/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    CONFIG_PAX_NOEXEC=y
    CONFIG_PAX_PAGEEXEC=y
    CONFIG_PAX_MPROTECT=y

    # USE="-jit -orc -schroedinger pic pie" emerge -uDN world

     

  • 1.15, AnotherReality (ok), 03:26, 29/05/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Не знаю аудиторию  OpenBsd. Но технология выглядит интересной, в частности для  выявления  такой  не правильной практики как в "JDK, GCC, Mono и Chromium"
    Да и не плохо бы в ядрышко линукса добавить похожую фичу, но подключаемую
     
     
  • 2.17, Аноним (-), 07:05, 29/05/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Такая практика называется JIT.
     

  • 1.16, lib ru (?), 06:37, 29/05/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    одобряю, если линукс растащат на куски то валить во фряху, а после фряхи опэнбст следующий норм кандидат (параноидальная защита, но оно начинает мне нравится)
     
     
  • 2.19, Аноним (-), 14:41, 29/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Зачем по всем граблям бегать? Можно сразу на DragonFlyBSD!


     
     
  • 3.20, chinarulezzz (ok), 16:36, 29/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    только x86_64? :(
     
     
  • 4.31, _ (??), 16:43, 30/05/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Он имел в виду - зачем собитать грабли с кайдой бсд-эшки, если можно собрать все грабли сразу на стрекозе :)
     
     
  • 5.35, count0krsk (ok), 17:40, 31/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Тонко, спасибо )))
     
  • 2.24, Нанобот (ok), 09:37, 30/05/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    тут ещё вендекапец не наступил, а ты уже к линуксокапцу готовишься
     
  • 2.25, Клыкастый (ok), 10:17, 30/05/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    FreeBSD/DragonflyBSD вполне
    но линукс "не растащат". в том смысле, что будет какой-то островок стабильности, может несколько, со схожей идеологией. да, пилить его будет не 100 корпораций, но и при переходе на DFBSD вы же не питаете иллюзий - её пилят относительно немного народу. И Диллон конечно монстр и всё такое, но нужна толковая смена, нужно стабильное, ещё лучше растущее, комьюнити.

    //trolling=ON
    //offtop=ON

    вот заря будущего, вот вендекапец и всё такое:
    http://www.techrepublic.com/article/os2-resurrected-blue-lion-becomes-arcaos-

     
     
  • 3.32, _ (??), 16:45, 30/05/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Да брось Клыкастый, не взлетит оно.
     
     
  • 4.33, Клыкастый (ok), 17:02, 30/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Да брось Клыкастый, не взлетит оно.

    ну блин ещё и шутки юмора объяснять...

     

  • 1.23, бедный буратино (ok), 03:15, 30/05/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    у меня /usr/local не отдельным разделом.

    теперь, что - у меня в следующем обновлении сломается gcc (кстати, только пакетный? штатный gcc 4.2 работать будет?) и другие пакеты?

     
     
  • 2.26, 1 (??), 11:27, 30/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    монтируй корень тогда
     

  • 1.27, Аноним (-), 11:50, 30/05/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Почему бы интелу с амд не поднапрячься и не сделать аппаратную защиту стека (а то и второй бы запилить, только для данных, неплохо было бы)? Вызываем функцию, говорим на каком адресе начинается адрес возврата. В процессоре - небольшая память этих адресов-точек (выходим из функцию - убираем ее точку), при записи в которые, в пределах размерности указателя - говорим "кирдык".
     
     
  • 2.34, fi (ok), 00:39, 31/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    она называется x86_64 :)))
     

  • 1.28, Аноним (-), 14:28, 30/05/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    >> аппаратную защиту стека

    В смысле  NX/XD ?

     
     
  • 2.30, Аноним (-), 16:32, 30/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Нет, nx не помогает против перезаписи адреса возврата указателем на нужную функцию (понятно что подобрать сложно, может даже невозможно, но теоретическая возможность есть). Просто сравнивать адреса при записи в сегмент стека с адресами где точно хранятся адреса возврата (небольшой массив на 8-32 адреса вполне хватит для почти 100% защиты).
     
     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



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

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