- Сообщения
- 7,981
- Реакции
- 6,756
Проект OpenBSD перешёл на обязательное применение механизма защиты памяти W^X (Write XOR Execute), суть которого в том, что страницы памяти процесса не могут быть одновременно доступны на запись и исполнение.
Таким образом, код может быть исполнен только после запрещения записи, а запись в страницу памяти возможна только после запрета исполнения. Механизм W^X помогает защитить приложения в пространстве пользователя от типовых атак, осуществляемых через переполнение буфера, в том числе от переполнений стека (записанный за пределы буфер код не может быть исполнен), сообщает opennet.ru.
Традиционно в Unix при маппинге памяти допускается модель "W|X", позволяющая одновременно осуществлять и запись, и исполнение, что является порочной практикой с позиции обеспечения безопасности. В OpenBSD отныне такая модель переведена в категорию недопустимых (при попытке использования будет выведена ошибка) и обязательно требуется использование только механизма "W^X".
Обход запрета "W^X" может быть осуществлён только через монтирование ФС (ffs/nfs) со специальным флагом "wxallowed", который рекомендуется использовать для монтирования /usr/local, так как некоторые сторонние программы пока не адаптированы для нормальной поддержки "W^X". Многие порты уже адаптированы для нормальной работы в режиме "W^X" или поддерживают его из коробки (например, Firefox), но с рядом крупных пакетов пока наблюдаются проблемы, это касается JDK, GCC, Mono и Chromium.
Источник