Исследователь и разработчик Linux заявляет: «В вашем ядре сейчас есть ошибки, которые не будут найдены годами. Я знаю это, потому что проанализировал 125 183 из них».

Linux – это фантастическая операционная система. Созданная на полностью открытом исходном коде, она породила бесчисленное количество дистрибутивов – вероятно, более десяти квинтиллионов – которые дают пользователям полный контроль и возможность настройки своего программного обеспечения. Недавние дополнения, такие как SteamOS, Bazzite и Nobara, даже сделали Linux отличным выбором для геймеров. Однако эта открытость также может означать столкновение с случайными, давними ошибками.

Дженни Ку, исследователь и разработчик, недавно проанализировала исправления ошибок в ядре Linux и обнаружила, что многие остаются нерешенными в течение длительного времени. Как человек, который часто соблазняется Linux, но быстро возвращается к Windows из-за разочаровывающих (и иногда серьезных) ошибок, эта новость не особенно ободрила. Если вы разделяете этот опыт, вам может быть эта информация близка.

Qu разработал инструмент для анализа изменений в ядре Linux, конкретно изучая каждую исправленную ошибку с 2005 года. После шести часов инструмент идентифицировал 125 183 записи об уязвимостях. Анализируя эти исправления, Qu обнаружил, что ошибка обычно существовала около 2,1 года, прежде чем была устранена, в течение 20-летнего периода. Примечательно, что 13% этих ошибок оставались неисправленными в течение пяти лет или более.

Глядя только на ошибки, исправленные в 2025 году, около 20% существовали пять и более лет. Однако эта цифра немного вводит в заблуждение, поскольку она основана на ограниченном периоде времени. Как объясняет Qu, ошибки, появившиеся более недавно, обычно исправляются гораздо быстрее.

Исследование Ку подчеркивает важность тщательного статистического анализа. Они указывают на то, что легко неправильно интерпретировать данные – например, изначально кажется, что обнаружение ошибок значительно улучшилось, сократившись с 10 лет до всего 5 месяцев. Однако этот вывод ошибочен, поскольку данные неполны. Ошибки, внесенные недавно, не имели достаточно времени, чтобы оставаться необнаруженными в течение полных 10 лет, поэтому текущие средние значения вводят в заблуждение и, вероятно, изменятся со временем и по мере обнаружения большего количества ошибок.

Когда мы смотрим на наиболее важные метрики, мы добиваемся прогресса: мы быстро находим и исправляем новые проблемы, одновременно постепенно решая около 5400 старых ошибок, которые существуют более пяти лет.

Исправления ошибок происходят не с одинаковой скоростью для всего. Как правило, сетевые проблемы занимают больше времени на решение, в то время как проблемы с графическими процессорами (GPU) обычно исправляются быстрее. Некоторые ошибки от природы сложнее найти и исправить – например, «гонки данных», которые сложны, потому что не всегда возникают и могут произойти лишь изредка, возможно, только раз на миллион попыток.

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

Если взглянуть на общую картину, то эти проблемы часто являются незначительными ошибками, возникающими в необычных ситуациях. Qu упоминает старую сетевую ошибку, которая оставалась незамеченной в течение 19 лет. Она оставалась неисправленной так долго, потому что проявлялась только при выполнении очень конкретного теста в течение определенной продолжительности, и никто на самом деле не запускал этот тест в течение двадцати лет.

Эта информация подчёркивает преимущества VulnBERT, AI-модели, разработанной для выявления потенциально уязвимых изменений в коде. Модель чрезвычайно эффективна, обнаруживая 92,2% всех коммитов, которые фактически вносят ошибки.

Окей, для тех, кто углубляется в исходный код ядра Linux, это, вероятно, просто потрясающе. Но честно говоря, как обычному геймеру, это скорее добавляет к моей нерешительности насчет перехода. Я знаю, что наши читатели Linux, вероятно, расскажут мне обо всех недостатках ошибок Windows, и я понимаю, но это просто немного нервирует меня, когда думаю о том, чтобы покинуть корабль!

Смотрите также

2026-01-09 13:03