Проблема AI-фаззинга в Linux
Интерфейс bind/unbind через sysfs позволяет привязывать произвольные устройства к драйверам ядра на основе их шины. Хотя у этого механизма есть легитимные сценарии использования, инструменты фаззинга, такие как syzbot, начали злоупотреблять им. AI-агенты и боты массово пытались привязать случайные драйверы к случайным типам устройств, что приводило к генерации тысяч бесполезных отчетов об ошибках и патчей.
Это создавало значительную нагрузку на разработчиков ядра, которые вынуждены были разбирать нерелевантные баги, вызванные заведомо некорректными комбинациями оборудования и ПО.
Решение: TAINT_FORCED_BIND в Linux 7.4
Для борьбы с этим явлением в ветку Linux 7.4, в рамках pull-реквеста обновления драйверного ядра (driver core), был добавлен новый флаг TAINT_FORCED_BIND. Этот флаг помечает ядро как «загрязненное» (tainted), если интерфейс sysfs используется для принудительной привязки устройств к драйверам.
Это дает четкий индикатор для тех, кто анализирует отчеты об ошибках: если ядро имеет тег TAINT_FORCED_BIND, то ошибка, скорее всего, вызвана искусственным фаззингом, а не реальной проблемой в коде драйвера или железе.
Позиция разработчиков
Грег Кроа-Хартман (Greg KH), комментируя добавление нового флага, отметил, что мотивацией стало именно «масштабное фаззинг-атака» со стороны инструментов вроде syzbot. По его словам, это позволяет снизить количество ненужных ошибок и бессмысленных патчей, генерируемых неподготовленными новыми разработчиками, которые реагируют на эти ложные срабатывания.
Дополнительные изменения
Помимо борьбы с AI-шумом, тот же pull-реквест включает ряд новых добавлений на языке Rust для драйверов Linux, что продолжает курс на расширение использования этого языка в ядре для повышения безопасности и надежности кода.
| Параметр | Значение / Описание |
|---|---|
| Версия ядра | Linux 7.4 |
| Новый флаг | TAINT_FORCED_BIND |
| Основная причина внедрения | Массовый фаззинг через syzbot/AI-ботов |
| Механизм действия | Пометка ядра при принудительной привязке через sysfs |
| Доп. изменения | Новые модули на Rust для драйверов |
Источник: Phoronix ↗
