>> Во-первых, "W^X part two" не соответствует букве стандарта.
> Зато соответствует модели угроз с учётом реальных техник эксплуатации и настраивается отдельно для каждого исполняемого файла. SELinux позволяет наложить аналогичные ограничения. Если лично для вас какие-то стандарты важнее, то это лишь ваши критерии. При чём тут мои критерии? Приложения (хромиум, java) перестанут работать. Лично ты (или я - не суть) можешь настраивать свою инсталляцию ОС как тебе угодно, если ты выпускаешь ОС общего назначения и предполагаешь, что пользователь сможет использовать общеупотребимое ПО, то следить за тем, чтобы приложения были сломаны _необходимо_.
> Про OpenBSD можно сказать, что в отличие от PaX и даже SELinux она не даёт пользователю _выбора_: следовать стандартам или отклониться от него для решения поставленных задач.
OpenBSD не нарушает стандарт, а дополняет его. В позиксе нет pledge, но иметь свои сисколы - можно! Это ничем принципиально не отличается от какого-нибудь линукс-специфичного epoll, я не знаю.
>> Во-вторых, что куда хуже, оно ломает приложения.
> Не ломает приложения, а лишь требует настройки. Как и большинство более сложных мер безопасности, вроде MAC.
Использовать MAC для того, "чтобы браузер не мог вылезти за пределы ~/Downloads" - это забивать гвозди микроскопом. Хотя MAC MAC'у рознь, по разному бывает, наверное. В любом случае, в случае с pledge, _пользователю_ не придётся ничего настраивать.
И pledge не отменяет MAC. Конкретно в OpenBSD MAC нет, но ничто не мешает сделать, при нужде.
В моём понимании, все эти селинуксы (и важнее, что оно реализует RBAC), это история больше не про "защиту браузера", а про разграничение доступа между сотрудниками отделов с разными уровнями допуска в организациях типа АНБ. Ну да, "W^X part two" оно тоже умеет, но это скорее посмеяться, имхо.
>> Наконец, в третьих, OpenBSD предлагает решать проблему с "W^X part two" внутри самого приложения, при помощи pledge.
> Отказываться от пакетов поставщика дистрибутива ОС
> патчить исходники и собирать свои бинарники
Именно. И протаскивать патчи в апстрим ПО (типа если платформа = опенбсд, то pledge(...)).
Чтобы потом другим пользователям не нужно было патчить самим.
> прикручивать pledge через инъекцию библиотеки посредством LD_PRELOAD
lol
> это нелепость и действительно неудобно.
Неудобно и, главное, небезопасно, ставить ручками флаги paxctl'ем или запускать костыледемон paxd. pledge() предполагает, что будет использоваться автором программы, а не пользователем; его добавление требует понимания логики работы программы, или хотя бы умения понять, какие сисколлы использует ПО. Да, конкретно prot_exec очень часто можно безопасно отрывать, но использовать pledge только ради этого - идиотизм. Не нужно пытаться делать из openbsd pax и повторять все его недостатки и/или особенности. Pledge не заточен конкретно на "W^X part two", это только часть возможностей.