Исследование истории разработки ядра Linux за последние 20 лет показало, что значительное количество программных ошибок годами остается незамеченным. В то время как внедрение языка Rust помогает снизить число уязвимостей, огромное количество унаследованного кода на Си по-прежнему содержит скрытые дефекты. Согласно отчету исследователя Дженни Гуанни Цюй из Pebblebed, среднее время обнаружения бага в ядре составляет более двух лет, а некоторые критические проблемы не находят десятилетиями.
Методология анализа истории коммитов
Для получения точных статистических данных исследователь изучила 125 183 ошибки, зафиксированные в истории Git с 2005 года по январь 2026 года. В основу работы лег анализ тега «Fixes:», который разработчики используют при исправлении дефектов. Данный тег указывает на конкретный коммит, внесший сообщение об ошибке в кодовую базу.
С помощью специально разработанного инструмента были сопоставлены даты внесения дефектного кода и даты его исправления. Массив данных охватил период до версии Linux 6.19-rc3. Исследование показало, что из почти 120 тысяч уникальных исправляющих коммитов, созданных 9 159 авторами, только 158 ошибок имели официально присвоенные идентификаторы CVE. Это подтверждает, что подавляющее большинство исправляемых проблем безопасности или стабильности проходит мимо систем публичного учета уязвимостей.
Статистика долгоживущих ошибок и различия по подсистемам

Средний срок жизни ошибки в ядре Linux составляет 2,1 года. Однако наиболее резонансным случаем стал баг, связанный с переполнением буфера в сетевом коде, который оставался незамеченным на протяжении 20,7 лет. Анализ также выявил серьезные расхождения в скорости обнаружения проблем в зависимости от конкретного раздела ядра:
-
Драйверы шины CAN: ошибки находят в среднем через 4,2 года.
-
Сетевой протокол SCTP: дефекты скрываются около 4 лет.
-
Графические процессоры (GPU): баги исправляются быстрее всего - в среднем за 1,4 года.
-
Подсистема BPF: ошибки обнаруживаются в течение 1,1 года.
Высокая скорость поиска проблем в GPU и BPF объясняется активным использованием этих компонентов и пристальным вниманием со стороны сообщества исследователей безопасности.
Проблема неполных исправлений и роль искусственного интеллекта
Одной из критических проблем процесса разработки остается выпуск неполных исправлений. Часто разработчики устраняют лишь внешние проявления неопределенного поведения, не решая коренную причину бага. В качестве примера приводится исправление проверки полей в netfilter, выпущенное в 2024 году. Спустя год сторонний исследователь безопасности обнаружил способ обхода данной защиты, что потребовало повторного вмешательства.
Для автоматизации процесса поиска потенциально опасных изменений была разработана модель искусственного интеллекта VulnBERT. Данная система анализирует коммиты и прогнозирует вероятность внесения уязвимости в код. Технические характеристики работы модели и подробные выкладки анализа истории ядра опубликованы в блоге Pebblebed, предоставляя сообществу инструменты для более качественного аудита кода в будущем.
Linux: обзоры и обновления
• loss32: реализация рабочего стола Win32 на Linux как альтернатива проекту ReactOS
• SteamOS 3.7.20 Beta получила драйвер ntsync для повышения производительности некоторых игр
• Исследование безопасности Linux: 20% ошибок в коде ядра скрываются более пяти лет
• Сравнение производительности ядер Linux 6.18 LTS и Liquorix на AMD Ryzen Threadripper
• Canonical прекращает поддержку Ubuntu 25.04: пользователям рекомендуется обновиться
• SteamOS 3.7.19 – стабильное обновление с исправлениями ошибок и повышением стабильности