Грег Кроа-Хартман разказа как Rust може да помогне в борбата с грешките в ядрото на Linux

Грег Кроа-Хартман (Greg Kroah-Hartman), отговорящ за поддръжката на стабилните и "staging" клонове на ядрото Linux и заемащ поста на основен поддържащ в 16 подсистеми, направи презентация на конференцията Rust Week 2026, в която разказа как езикът Rust може да помогне за предотвратяване на уязвимости в ядрото, произтичащи от общи грешки на разработчиците при работата с паметта, блокировките, обработката на грешки и работата с ненадеждни данни. Основното предимство на Rust е възможността за откриване на подобни грешки по време на изграждането, а не при рецензиране на кода от хора. Въпреки това, Rust не се разглежда като панацея, способна да реши всички проблеми, и никой не планира да пренапише ядрото на Rust: очаква се постепенно интегриране на Rust чрез неговото използване за нови драйвери и подсистеми.

Като пример за грешки в ядрото, които биха могли да бъдат избегнати при използване на Rust, бе спомената грешка в подсистемата Bluetooth, която остава незабелязана в продължение на 15 години, и проблема в хипервизора Xen. В първия случай разработчикът е извършил разименяване на указател без проверка, а във втория е забравил да свали блокировката в кода за обработка на грешки.
Според Грег, повечето грешки в ядрото са причинени от подобни малки детайли, които с времето се натрупват и избухват като уязвимости. В Rust много от подобни проблеми се предотвратяват от компилятора, например, абстракциите на Rust за блокировки в ядрото позволяват достъп до вътрешни указатели на структури само след получаване на съответната блокировка, която се освобождава автоматично. Без захващане на блокировката достъпът до указателите на структури на Rust не е възможен.

Грег счита, че подобни възможности на Rust биха предотвратили появата на 60% от грешките, открити в ядрото, а проверките, извършвани от компилятора, биха освободили поддържащите от времето, прекарано в обсъждане с авторите на коректността на обработката на грешки и обосноваността на поставянето на блокировки на правилното място. Освен това, внедряването на поддръжка за Rust вече е оказало благотворно влияние и на C-кода в ядрото благодарение на организирането на C-кода и интерфейсите, както и на заимстването на някои техники на разработка (например, бяха реализирани блокировки с ограничена видимост).

Благодарение на системата от типове, която гарантира спазването на зададените правила, и прилагането на системи за непрекъсната интеграция, проверяващи кода в етапа на компилация, рецензентите на промените в Rust могат да се фокусират върху проверката на логиката на работа, а не върху проследяването на манипулациите с ресурсите. Прилагането на Rust също така позволява по-внимателно отношение към данните, получавани от оборудване или от външни системи. Това се постига благодарение на ясното разграничаване на заслужаващите и незаслужаващите доверие данни на ниво типова система: разработчикът просто трябва да извърши анализ при преминаване от недоверително в доверително състояние.

В последно време екипът, отговорен за сигурността в ядрото, публикува около 13 отчета за уязвимости всеки ден, което на фона на предишната динамика на откритията на уязвимости изглежда като някакво безумие (например, вчера бяха публикувани 277 отчета за уязвимости в ядрото). Според Грег, използването на Rust е един от реалните начини за намаляване на броя на грешките в ядрото, причинени от традиционните пропуски при обработката на грешки и управлението на ресурсите. В ядрото подкрепата за Rust вече излезе извън рамките на експеримента и в края на миналата година беше призната за стандартна възможност на ядрото.

Пуснете видеото


Източник: opennet.ru
Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster