Analiza błędów w jądrze Linux - średnio błędy są zauważane po 2 latach

Opublikowano wyniki badania czasu wykrywania i usuwania błędów w kodzie jądra Linux. Dane uzyskano w wyniku analizy 125 tysięcy błędów oznaczonych w repozytorium Git tagiem „Fixes:”, odnoszącym się do commita, w którym wystąpił błąd. Średni czas wykrywania błędów w jądrze wyniósł 2,1 roku. Jeśli weźmiemy pod uwagę tylko błędy naprawione w 2025 roku, wskaźnik ten wyniósł 2,8 roku.

30% błędów zostało naprawionych przez tych samych programistów, którzy je wprowadzili. 56,9% błędów jest eliminowanych w ciągu roku. 13,5% błędów pozostawało niezauważonych przez ponad 5 lat (jeśli uwzględnimy tylko błędy, które zostały naprawione w 2025 roku — 19,4%). Z powodu nierównomiernego rozkładu, medianowy czas istnienia błędu w kodzie jądra wyniósł 8 miesięcy dla próby z 2005 roku i 1 rok dla błędów naprawionych w 2025 roku. Najdłużej utrzymującym się błędem w kodzie było przepełnienie bufora w ethtool, usunięte po 20,7 latach.

Analiza naprawy błędów w jądrze Linux - w średnim czasie błędy są zauważane po 2 latach.

Dynamika wykrywania błędów znacząco różni się od średniej dla niektórych podsystemów, na przykład w sterowniku magistrali CAN oraz w stosie SCTP wykrywanie problemów średnio zajmuje około 4 lat, w stosie IPv4 — 3,6 lat, USB i TTY — 3,5, Netfilter i stos sieciowy — 2,9, VM — 1,8, GPU — 1,4, BPF — 1,1 roku.

Analiza naprawy błędów w jądrze Linux - w średnim czasie błędy są zauważane po 2 latach.

Czas wykrywania koreluje z typami błędów: średni czas wykrywania błędów związanych ze stanami wyścigu wyniósł 5,1 lat, przepełnieniem całkowitym — 3,9, odniesieniem po zwolnieniu pamięci — 3,2, przepełnieniem bufora i wyciekiem pamięci — 3,1, liczeniem referencji — 2,8, dereferencją wskaźnika zerowego oraz blokadami wzajemnymi — 2,2 roku.

W uzyskanej statystyce widoczny jest również wpływ wprowadzenia nowych narzędzi do automatycznego wykrywania błędów, analizy statycznej i testowania kodu, takich jak Syzkaller, KASAN, KMSAN i KCSAN. Na przykład w 2010 roku nie zarejestrowano poprawek błędów znalezionych w ciągu roku. Z kolei w 2014 roku wykrywano 31% błędów, w 2018 roku — 54%, a w 2022 roku — 69% błędów.

Uzyskane statystyki zostały wykorzystane do stworzenia modelu uczenia maszynowego VulnBERT, który pozwala przewidywać obecność podatności w commitach. Podczas testowania na commitach z 2024 roku dokładność wykrywania błędów wyniosła 92,2% przy poziomie fałszywych alarmów na poziomie 1,2% (dla porównania, wcześniej dostępny model CodeBERT wykrywał 89,2% problemów przy poziomie fałszywych alarmów wynoszącym 48,1%).

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster