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

Discussion in 'Мировые новости. Обсуждения.' started by Suicide, 9 Nov 2010.

  1. Suicide

    Suicide Super Moderator
    Staff Member

    Joined:
    24 Apr 2009
    Messages:
    2,373
    Likes Received:
    6,619
    Reputations:
    693
    Кис Кук (Kees Cook), главный сисадмин kernel.org и лидер Ubuntu Security Team, предложил в списке рассылки разработчиков Linux-ядра с целью повышения безопасности расширить области использования в ядре страниц памяти, переведенных в режим "только чтение". Данная мера позволит реализовать упреждающую защиту от эксплуатации уязвимостей, связанных с возможностью перезаписи областей памяти ядра, вследствие ошибок.

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

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

    С общим планом переноса в основное Linux-ядро различных улучшений из проектов PaX и grsecurity можно познакомиться на _https://wiki.ubuntu.com/SecurityTeam/Roadmap/KernelHardening#Upstream%20Hardening . Кроме вышеотмеченных функций, можно упомянуть проведение чистки файловой системы /proc на предмет возможной утечки важной для проведения атак информации; добавление возможностей для контроля автозагрузки модулей; поддержка пометки процессов как только 32- или 64-разрядных; ограничение доступа к системным вызовам, связанным с режимом vm86; скрытие служебных символьных таблиц ядра; рандомизация стека ядра и сегментирование памяти (PAX_RANDKSTACK, PAX_MEMORY_UDEREF); поддержка битовой маски для ограничения доступа к определенным классам системных вызовов.

    9.11.2010
    _http://www.opennet.ru/opennews/art.shtml?num=28587

    _http://lkml.org/lkml/2010/11/7/113