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

Проект 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.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.