Публикувани са резултатите от изследването на времето за откриване и отстраняване на грешки в ядрото на Linux. Данните са получени в резултат на анализа на 125 хиляди грешки, отбелязани в Git репозиторито с етикет "Fixes:", свързващ се с комита, в който е възникнала грешката. Средното време за откриване на грешки в ядрото е 2.1 години. Ако се разглеждат само грешките, поправени през 2025 година, този показател е 2.8 години.
30% от грешките са били поправени от същите разработчици, които са ги въведели. 56.9% от грешките се отстраняват в рамките на една година. 13.5% от грешките остават незабелязани повече от 5 години (ако разгледаме само грешките, поправени през 2025 година — 19.4%). Поради неравномерното разпределение медианното време на съществуване на грешките в кода на ядрото е 8 месеца за извадка от 2005 година и 1 година за грешките, поправени през 2025 година. Най-дълго съществуващата грешка в кода е препълване на буфер в ethtool, отстранена след 20.7 години.

Динамиката на откриването на грешки значително се различава от средната стойност за някои подсистеми, например, в драйвера на шина CAN и стека SCTP, откритията на проблеми в средно отнемат около 4 години, в IPv4 стека — 3.6 години, USB и TTY — 3.5, Netfilter и мрежовия стек — 2.9, VM — 1.8, GPU — 1.4, BPF — 1.1 години.

Времето за откриване корелира с типовете грешки: средното време за откриване на грешки, свързани с условия на състезание, е 5.1 години, целочислено препълване — 3.9, достъп след освобождаване на паметта — 3.2, препълване на буфер и изтичане на памет — 3.1, броене на препратки — 2.8, разименуване на нулев указател и взаимни блокировки — 2.2 години.
В получената статистика също така се проследява влиянието на внедряването на нови инструменти за автоматизирано търсене на грешки, статичен анализ и тестване на код, като Syzkaller, KASAN, KMSAN и KCSAN. Например, през 2010 година не е регистрирано поправяне на грешки, открити в рамките на една година. Докато през 2014 година в рамките на година е открито 31% от грешките, през 2018 година — 54%, а през 2022 година — 69% от грешките.
Събраната статистика е използвана за създаването на модела за машинно обучение VulnBERT, който позволява предсказване на наличието на уязвимости в комитите. При тестване на комитите за 2024 година, точността на откритие на грешки достигна 92.2% с ниво на фалшиви срабатывания от 1.2% (за сравнение, предишно наличният модел CodeBERT откриваше 89.2% проблеми с ниво на фалшиви срабатывания от 48.1%).
Източник: opennet.ru
