Група разработчици от Китай развива ядрото Asterinas, написано на езика Rust и предназначено за използване в операционни системи с общо предназначение. За облекчаване на интеграцията с вече разработени системни компоненти, ядрото предоставя ABI (Application Binary Interface), съвместимо с ядрото на Linux и способно да се използва вместо него. Кодът на проекта се разпространява под лиценза MPL (Mozilla Public License).
Проектът се развива от есента на 2022 година и има намерение още тази година да постигне ниво, подходящо за широко използване в виртуални машини с архитектура x86-64. Започвайки от следващата година, основното внимание ще бъде насочено към реализиране на поддръжка на оборудване и други архитектури на CPU. Приоритетни области на приложение са системи, завързани на Linux ABI, но изискващи по-високо ниво на защита. Например, Asterinas се предлага да се използва за създаване на системна среда за защитени на виртуални машини, за изолиране на които се използват технологии като ARM CCA, AMD SEV и Intel TDX, а също и отстрана на хост-системата, осигуряваща стартирането на контейнери.
За намаляване на вероятността от възникване на грешки при работа с паметта, които са основният източник на най-опасните уязвимости, при написването на Asterinas е използван езикът Rust и тактиката за ограничено използване на unsafe-блокове. Ядрото е изградена с използване на архитектурата framekernel, в която разработчиците се опитват да съчетаят възможностите за изолация на микроядра с ефективността на монолитни ядри.
Компонентите на ядрото в Asterinas се разполагат в общо адресно пространство, а сигурността се постига на ниво логично разделение между безопасен код и код, при който не е изключена вероятността за възникване на проблеми със сигурността. Ядрото е разделено на две части, написани на Rust: OS Framework и OS Services. В OS Services е забранено използването на unsafe-блокове, а всички нискоуровневи операции, изискващи изпълнение на код в блокове unsafe, са изнесени в OS Framework и са достъпни само чрез високоуровневи API. Всички системни извиквания, файлови системи и драйвери се реализират на ниво OS Services и не могат да включват unsafe-блокове.
При разработката на системни услуги и модули на ядрото се предлага да се използва инструментариумът OSDK (Комплект за разработка на операционна система), който предоставя утилита cargo-osdk за създаване, компилиране, тестване и стартиране на компоненти на операционната система. За разработчиците е подготвен комплект библиотеки OSTD (Стандартна библиотека на операционната система), представляваща редакция на стандартните библиотеки на Rust (crate std), адаптирана за използване в компонентите на операционната система.
Източник: opennet.ru
