Домой Статьи и аналитика Модель угроз и особенности оценки уязвимостей в ядре Linux

Модель угроз и особенности оценки уязвимостей в ядре Linux

Линус Торвальдс утвердил свод правил обработки угроз, классификации уязвимостей и работы с отчетами от нейросетей в ядре Linux.

Символика Linux и безопасность ядра
Обработка уязвимостей и угроз в ядре Linux Источник: linux.org.ru

15 мая Линус Торвальдс официально утвердил документ, регламентирующий процесс обработки угроз безопасности в ядре Linux. Новые правила четко определяют модель угроз, критерии классификации уязвимостей и порядок работы с багами, выявленными с помощью искусственного интеллекта. Автором инициативы выступил Вилли Тарро (Willy Tarreau) — создатель HAProxy и опытный разработчик ядра, курирующий стабильные ветки. Основой для документа стали недавние дискуссии вокруг критических уязвимостей, которые были обнародованы до выхода официальных патчей, причем злоумышленники оперативно создали рабочие эксплоиты с привлечением ИИ.

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

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

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

Основные требования к отчетам, сформированным с участием искусственного интеллекта:

  • Максимальная краткость, отсутствие лишней информации и выжимка сути в самом начале текста.
  • Использование исключительно чистого текста без разметки Markdown и декоративных элементов.
  • Опора на реальную модель угроз и проверяемые факты (например, четкое указание: «ошибка дает возможность любому пользователю получить CAP_NET_ADMIN»), а не на абстрактные рассуждения о возможных последствиях.
  • Обязательное предварительное тестирование эксплойта, созданного ИИ, с целью подтвердить его реальную работоспособность и воспроизводимость.
  • Привлечение искусственного интеллекта непосредственно для написания и тестирования патчей, устраняющих найденную проблему.

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

  • Изоляция учетных записей пользователей: строгий доступ к файлам только для владельцев, недоступность памяти сторонних процессов, запрет ptrace для чужих задач, а также изоляция сетевого взаимодействия и межпроцессорного обмена (IPC).
  • Защита на основе capabilities: операции без флага CAP_SYS_ADMIN не позволяют менять конфигурацию ядра, системное состояние или память; без CAP_NET_ADMIN запрещено перенастраивать сеть и перехватывать трафик; без CAP_SYS_PTRACE нельзя мониторить чужие процессы.
  • Пространство имён пользовательских идентификаторов (CONFIG_USER_NS), которое дает непривилегированным пользователям возможность создавать изолированные среды без прямого влияния на глобальные пространства имён (например, запрещено менять системные часы, монтировать блочные устройства или загружать модули).
  • Специальные отладочные интерфейсы вроде /proc/kmsg, perf и debugfs, предоставляющие конфиденциальные данные исключительно после явного разрешения администратора.

В то же время целый ряд ситуаций и архитектурных особенностей намеренно исключен из числа уязвимостей:

  • Эксплуатация давно устаревших и неподдерживаемых веток ядра.
  • Применение конфигураций сборки с намеренно сниженным уровнем безопасности или предназначенных исключительно для разработчиков (например, CONFIG_NOMMU).
  • Небезопасные пользовательские настройки sysctl, параметров командной строки, прав файловой системы, capabilities или открытие доступа к привилегированным интерфейсам для обычных юзеров (включая запись в procfs и debugfs).
  • Сбои в чисто отладочных подсистемах вроде KASAN, LOCKDEP и FAULT_INJECTION, которые никоим образом не рассчитаны на активацию в продакшн-окружении.
  • Проблемы в драйверах и модулях, находящихся в экспериментальном каталоге STAGING или имеющих статус небезопасных и нестабильных.
  • Применение сторонних модулей сторонних разработчиков или неофициальных неоригинальных форков ядра.
  • Ситуации, требующие избыточных прав доступа, таких как изначально имеющиеся привилегии root или владение capabilities вроде CAP_SYS_ADMIN, CAP_NET_ADMIN, CAP_SYS_RAWIO и CAP_SYS_MODULE.
  • Теоретические векторы атак, выполнимые исключительно в лабораторных условиях, требующие миллиардов попыток, эмуляции железа, модификации оборудования либо несоразмерных вычислительных затрат в нереалистичных конфигурациях (к примеру, на системах с десятками тысяч ядер процессора).
  • Обход защитных механизмов вроде ASLR без демонстрации работающего эксплойта, а также отсутствие проверок возвращаемых ошибок и аргументов, не влекущее за собой критических последствий.
  • Случайные утечки данных, не подконтрольные злоумышленникам (включая остаточную информацию в системных логах и логах ошибок или утечки указателей памяти ядра без возможности их прямой эксплуатации).
  • Ошибки при попытках смонтировать поврежденные образы дисков, если конкретный драйвер изначально не позиционировался как безопасный для работы с недоверенными носителями (подобные проблемы решаются запуском стандартной утилиты fsck).
  • Физические атаки на аппаратную часть, требующие прямого доступа к машине, смены компонентов или подключения специализированных устройств (вроде логических анализаторов и плат для атак на DMA), если в системе изначально не задействована защита IOMMU.
  • Регрессии производительности или функционала, которые устраняются корректной настройкой лимитов и прав доступа.
Источник: https://www.linux.org.ru