Изследователи от френския изследователски център Inria, в сътрудничество с Microsoft са разработили начин за автоматично преобразуване на код, написан на C в сигурен код на Rust в опит да отговорят на нарастващото търсене на безопасност на паметта.
Езикът за програмиране C, създаден през 70-те години на миналия век е в основата на много критични системи, приложения и библиотеки, включително w ядрото на Linux. Въпреки това C, както и логическото му продължение в лицето на C++ не гарантира безопасност на паметта. Ръчното му управление на паметта, макар и гъвкаво и ефективно е податливо на грешки като излизане извън границите или използване след освобождаване.
Тези грешки съставляват значителна част от уязвимостите в софтуера. Например, през 2019 гoдина те съставляват 76% от уязвимостите в Android, но благодарение на използването на Rust и сигурен код тази цифра е спаднала до 24% през 2024 година.
Rust позволява да се пише както сигурен, така и несигурен код, като оставя избора на разработчика. За разлика от него, C и C++ изискват значителни усилия, като статичен анализ и тестване, за да се доближат до безопасността на паметта, но не я осигуряват по своята същност.
През последните години се наблюдава силна подкрепа за преминаване към езици с вградена безопасност на паметта като Rust, Go, Python и Java. Въпреки това част от програмистите продължават да търсят начини да използват C и C++ безопасно, като избягват преминаването към Rust. Google, макар и активно да популяризира Rust също така признава, че C и C++ ще останат широко използвани още дълги години.
Сред опитите за подобряване на сигурността на C се открояват проекти като TrapC и Fil-C. Първият разработва подход към подмножество на езика, а вторият, макар и да осигурява сигурност, намалява производителността и не поддържа пълна съвместимост с двоичния интерфейс на приложението.
Изследване, озаглавено „Компилиране на C в сигурен Rust“ на учените Аймерик Фромерц (Inria) и Джонатан Проценко (Microsoft) предлага алтернативен подход. Те се фокусират върху конвертирането на код, официално тестван за използване в индустрията в безопасен Rust. За тази цел те създават подмножество на езика C, наречено Mini-C, което избягва трудни за конвертиране конструкции като аритметика на указатели и имплицитна модифицируемост.
Като прилагат Mini-C чрез компилатора KaRaMeL, разработчиците постигат автоматично преобразуване на кода в безопасен Rust.
Например, криптографската библиотека HACL, състояща се от 80 000 реда код е конвертирана с минимални промени. А библиотеката за сериализация EverParse, съдържаща 1400 реда код, беше преобразувана без никакви промени. Производителността на получения Rust код остана на нивото на оригиналния C, въпреки добавянето на допълнителни проверки и други подобрения.
Плодовете на работата на изследователите вече се използват в реални приложения, свързани със сигурността. Например, версията на HACL за Rust наскоро беше интегрирана в библиотеките NSS и OpenSSH на Mozilla.
Всичко важно от света на технологиите, директно в пощата ти.
С абонирането приемате нашите Условия и Политика за поверителност. Може да се отпишете с един клик по всяко време.
Коментирайте статията в нашите Форуми. За да научите първи най-важното, харесайте страницата ни във Facebook, и ни последвайте в Google Новини, TikTok, Telegram и Viber или изтеглете приложението на Kaldata.com за Android, iPhone, Huawei, Google Chrome, Microsoft Edge и Opera!