Повышение безопасности Linux-ядра через использование доступных только на чтение страниц памяти

Кис Кук (Kees Cook), главный сисадмин kernel.org и лидер Ubuntu Security Team, предложил в списке рассылки разработчиков Linux-ядра с целью повышения безопасности расширить области использования в ядре страниц памяти, переведенных в режим "только чтение". Данная мера позволит реализовать упреждающую защиту от эксплуатации уязвимостей, связанных с возможностью перезаписи областей памяти ядра, вследствие ошибок.

Цель инициативы проста - перевести ядро насколько это возможно на работу с памятью в режиме только для чтения, особенно в местах в которых фигурируют указатели на функции и в точках возможного перехвата управления, которые являются главной мишенью атак злоумышленников, в случае обнаружения ошибок, приводящих к возможности записи в области памяти ядра.

В качестве базиса для реализации данной идеи предложено использовать ранее начатую в рамках проекта PaX работу по реорганизации таблиц указателей на функции в вид с постоянными указателями (перевод указателей в режим только для чтения после их инициализации). Кроме того, предлагается добавить в ядро патч, реализующий механизм повышения безопасности модулей ядра, через реализацию возможности запрещения выполнения кода и операций записи для определенных частей модулей.

С общим планом переноса в основное Linux-ядро различных улучшений из проектов PaX и grsecurity можно познакомиться на данной странице. Кроме вышеотмеченных функций, можно упомянуть проведение чистки файловой системы /proc на предмет возможной утечки важной для проведения атак информации; добавление возможностей для контроля автозагрузки модулей; поддержка пометки процессов как только 32- или 64-разрядных; ограничение доступа к системным вызовам, связанным с режимом vm86; скрытие служебных символьных таблиц ядра; рандомизация стека ядра и сегментирование памяти (PAX_RANDKSTACK, PAX_MEMORY_UDEREF); поддержка битовой маски для ограничения доступа к определенным классам системных вызовов.

©  OpenNet