Проект по продвижению в ядро Linux новых технологий активной защиты
6 ноября 2015 года
Кес Кук (Kees Cook), бывший главный сисадмин kernel.org и лидер Ubuntu Security Team, ныне работающий в компании Google над обеспечением защиты ChromeOS, объявил о создании проекта Kernel Self Protection Project, в рамках которого планируется сформировать сообщество для развития и продвижения в основное ядро Linux технологий активной защиты, большинство из которых уже подготовлены в рамках проектов PaX и Grsecurity. Финансирование и ресурсы для проведения работ будут предоставлены организацией Linux Foundation и участниками программы Core Infrastructure Initiative.
Создание нового проекта поможет обойти проблемы с неэффективным процессом координации устранения уязвимостей в ядре, которые исправляются наряду с обычными ошибками без уделения им дополнительного внимания и не приводя к формированию внеплановых релизов. В частности, в сообществе разработчиков ядра отсутствует системный механизм выявления и устранения проблем на ранних стадиях, до момента когда злоумышленники получат доступ к информации о потенциальной уязвимости. Кроме того, не назначен ответственный за безопасность ядра.
Позиция Линуса Торвальдса сводится к тому, что уязвимости исправляются в рамках обычного цикла принятия исправлений, без дополнительного приоритета и привлечения внимания. Задача по оперативной доставке исправлений уязвимостей и выделению потенциальных проблем с безопасностью из общего потока правок ложится на команды, занимающиеся поддержкой пакетов с ядром для дистрибутивов Linux. Таким образом, информация об исправлениях, которые могут быть связаны с уязвимостями становится доступна одновременно и для злоумышленников и для команд по обеспечению безопасности дистрибутивов.
Более того, жизненный цикл уязвимостей в ядре достаточно велик и проблемы могут всплывать лишь спустя годы после своего появления. Используя методы статического анализа и fuzzing-тестирования злоумышленники имеют возможность выявлять проблемы до их обнаружения и исправления разработчиками ядра.
В таких условиях привычная работа по обеспечению безопасности через оперативное исправление уязвимостей становится неэффективной. Уязвимость в ядре может свести на нет все механизмы контроля доступа и средства защиты, работающие на уровне пользователя. Включение в ядро активных механизмов защиты позволит затруднить проведение новых атак и блокировать эксплуатацию ещё неисправленных уязвимостей. Вместо противодействия конкретным уязвимостям гораздо выгоднее блокировать целые классы проблем, такие как переполнения стека, целочисленные переполнения, переполнения кучи, проблемы с форматированием строк, утечка указателей в ядре и неинициализированные переменные.
Среди возможностей активной защиты, которые рассматриваются для добавления в первую очередь, отмечаются использование gcc-плагинов и патчей PAX_SIZE_OVERFLOW, PAX_REFCOUNT, PAX_USERCOPY, GRKERNSEC_KSTACKOVERFLOW, PAX_MEMORY_STACKLEA, PAX_CONSTIFY_PLUGIN, GRKERNSEC_HIDESYM, PAX_KERNEXEC и PAX_MEMORY_UDEREF. Из желательных для блокирования методов эксплуатации выделяются определение размещения ядра в памяти, перезапись текста, перезапись указателей на функции, вклинивание в цепочку выполнения, инициирование из ядра выполнения кода в пространстве пользователя и доступа к данным в пространстве пользователя.
Источники
правитьЛюбой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.