>> Не обязательно именно на аппаратный бит. Суть именно в принципе «либо запись, либо исполнение», конкретные реализации на разных платформах могут отличаться.
> В смысле тот, который nX(AMD)/Xd(INTEL). Как его не назови, а суть одна.Существует как минимум две альтернативных, архитектурно-зависимых реализаций W^X - на базе сегментации в x86 (как в PaX/SEGMEXEC) и на базе разделения памяти на исполняемый и неисполняемый регионы с помощью MTRR (как в OpenBSD для x86, если мне склероз не изменяет).
> Без его использования ничего с защитой не получится. Так что это
> был не вопрос, а констатация факта. Что же до его использования,
Констатация не удалась. :)
> то запретить исполнение можно не указывая PROT_EXEC - что и делается
> в malloc функции неяно. Запретить записывать по месту кода - это
Я бы даже больше сказал: чтобы запретить исполнение, _нужно_ не указывать PROT_EXEC. :))
> уже делается явно. Получается, что из W^X только одна часть выполняется
> неявно, а другая - как технология здравого смысла. Получается, что если
Не понял, что вы здесь имели ввиду.
> в коде не встречается записи W^X, то это не значит, что
> эта технология никак не используется в той или иной ОС. Названия
Если где-то в памяти процесса (например, на стеке, в .data или тем более в .txt) есть исполняемые страницы, то и говорить не о чем. А уязвимости к повреждению динамической памяти одним запретом на исполнение кучи не изведёшь. Кстати, во FreeBSD один из самых уязвимых аллокаторов - это же так практично, всюду гнаться за скоростью...
Впрочем, если во FreeBSD действительно взялись за реализацию W^X (и доведут до ума), лично я буду только рад.
> порой удобно размещать в тексте учебников и рекламных буклетах. Но даже
> где заявленная технология есть, то это еще не значит, что кто-то
> специально ксорит биты W и X для страниц памяти, поскольку это
> мешает переносимости кода.
Вы о чём? Сдаётся мне, во FreeBSD их именно что xor'ят - едва ли осилили альтернативы. Хотя на сегодня эти альтернативы редко актуальны.
>> ...в реальности паразитная нагрузка ниже, так как относится только к контексту выполнения приложения...
> Всецело согласен. Штука включена в последние FreeBSD (не вспомню, с какой версии),
> что действительно не дает использовать некоторые из уязвимостей. В связи с
> его введением перестали работать некоторые старые программы. Но я все равно
> - просто щаслив, шо я теперь в полной безопасности! [BigHo тут
> немного юродствует вслух для поднятия своего настроения]
А вот у меня всё работает, потому что в PaX реализовано избирательное включение/отключение отдельных механизмов защиты для отдельного экзешника через простую утилиту paxctl, и для отладки мне не надо пересобирать что-либо без W^X, в отличие от той же OpenBSD. И сдаётся мне, что теперь и в отличие от FreeBSD. ;)
> последние детские илюзии! Тьфу на вас!" :)
Ваши слова всё сложнее воспринимать всерьёз.