Стабильный выпуск HardenedBSD 12
Подготовлен первый стабильный выпуск HardenedBSD 12, форка операционной системы FreeBSD 12, в который интегрированы дополнительные механизмы защиты. Установочные iso-образы и сборки для виртуальных машин сформированы для архитектуры AMD64. По мере готовности развиваемые проектом HardenedBSD возможности переносятся в основные ветки FreeBSD.
Из входящих в HardenedBSD улучшений, можно отметить реализации ASLR (Address Space Layout Randomization), SEGVGUARD (защита от обхода ASLR), более защищенные варианты mprotect, procfs/linprocfs и sysctl, усиление защиты на стадии загрузки, запрет маппинга страниц памяти одновременно в режиме исполнения и записи (W^X), добавление рандомизации идентификаторов IP и временных адресов IPv6 в сетевом стеке, защита от атак SROP, изоляция на уровне доступа к системным вызовам большей части исполняемых файлов базовой системы, возможность запуска программ только из разрешенных каталогов,
Исполняемые файлы базовой системы и портов собраны в режиме PIE (Position-Independent Executables) с защитой от переполнения стека (SafeStack), механизмом проверки целостности выполнения программы CFI (Control Flow Integrity), защитой от эксплуатации уязвимостей Spectre (патчи retpoline) и включением опций RELRO и BIND_NOW. Для применения к приложениям дополнительных техник защиты предлагается утилита secadm.
По сравнению с HardenedBSD 11 в новой ветке реализованы следующие улучшения:
- При сборке приложений задействован механизм проверки целостности выполнения программ Non-Cross-DSO CFI (Control Flow Integrity), нацеленный на выявление некоторых форм неопределенного поведения, которые потенциально могут привести к нарушению нормального потока управления (проброс на произвольное место в памяти) в результате атаки на приложение. Для ядра CFI пока не применяется;
- Дополнительная изоляция гипервизора bhyve;
- Возможность включения режима отладки непривилегированных процессов (sysctl security.bsd.unprivileged_process_debug) для отдельных jail-окружений;
- Применение метода защиты retpoline для блокирования уязвимости Spectre v2 на этапе сборки приложений из портов и базовой системы;
- Отключение по умолчанию технологии одновременной многопоточности (SMT или Hyper-Threading). Для включения следует установить переменную machdep.hyperthreading_allowed=1 в loader.conf;
- Перевод связанных с компилятором утилит ar, nm и objdump на реализации от проекта LLVM (llvm-ar, llvm-nm, and llvm-objdump);
- Сборка приложений с включением оптимизации на этапе связывания (LTO, Link-Time Optimization).