В OpenBSD реализована техника защиты от эксплуатации уязвимостей, основанная на случайной перекомпоновке исполняемого файла sshd при каждой загрузке системы.
Ранее подобная техника перекомпоновки применялась в отношении ядра и библиотек libc.so, libcrypto.so и ld.so, а теперь будет применена и для некоторых исполняемых файлов. В ближайшее время метод также планируется реализовать для ntpd и других серверных приложений. Изменение уже включено в состав ветки CURRENT и будет предложено в выпуске OpenBSD 7.3.
Перекомпоновка позволяет сделать малопредсказуемым смещения функций в библиотеках, что затруднит создание эксплоитов, использующие методы возвратно-ориентированного программирования (ROP - Return-Oriented Programming). При использовании техники ROP атакующий не пытается разместить свой код в памяти, а оперирует уже имеющимися в загруженных библиотеках кусками машинных инструкций, завершающихся инструкцией возврата управления (как правило, это окончания библиотечных функций). Работа эксплоита сводится к построению цепочки вызовов подобных блоков ("гаджетов") для получения нужной функциональности.
// cc-by opennet.ru
// converted with crypt’s opennet autoreposter
>>> Подробности