Разработчики OpenBSD развивают новый метод защиты стека
12 марта 2018 года
Тео де Раадт (Theo de Raadt) представил новый метод защиты стека Stack-register, в рамках которого традиционные типы разрешения доступа к памяти (например, возможность чтения, записи и выполнения кода) расширены новым полномочием - MAP_STACK, которое реализуется программно на уровне ядра ОС. Суть предложенного метода в том, что когда память используется как стек, она обязательно должна быть отражена через mmap с использованием флага MAP_STACK.
При выделении областей под стек для процессов флаг MAP_STACK автоматически выставляется ядром во время запуска процесса, поэтому модификация кода приложений не требуется. При совершении системного вызова осуществляется проверка регистра с указателем на стек. Если регистр указывает на область памяти, помеченную MAP_STACK, то выполнение продолжается в штатном режиме. Если нет, то считается, что указатель стека вышел за выделенную под стек область и процесс принудительно завершается.
Новая система защиты пока имеет экспериментальный характер и проходит тестирование в свежих снапшотах OpenBSD. В тестовом режиме вместо фактического завершения процесса осуществляется вывод предупреждений в лог. За несколько дней тестировния уже выявлены и устранены проблемы, проявляющиеся при сборке портов go и SBCL, а также при выполнении двух тестов из набора src/regress. Тестирование портов продолжается и если не возникнет новых проблемных моментов, новый метод защиты может быть включен в состав OpenBSD 6.3.
Кроме того, сообщается о расширении применения системы syspatch для обновления OpenBSD через бинарные патчи. Отныне через syspatch будут поддерживаться не только обновления для текущего релиза, но и для прошлого выпуска, поддержание которого в актуальном виде теперь возможно без пересборки из исходных текстов. Например, помимо обновлений для OpenBSD 6.2 теперь через бинарные патчи можно обновлять и прошлую ветку OpenBSD 6.1. После выхода OpenBSD 6.3 аналогично будет продолжена поддержка для ветки OpenBSD 6.2. Для старых релизов бинарные патчи будут формироваться только для архитектур amd64 и i386.
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.