C programnyelv biztonságos Rust kóddá alakítása

Editors' Pick

A Francia Nemzeti Informatikai és Automatizálási Kutatóintézet (Inria) és a Microsoft kutatói kifejlesztettek egy módszert, amely lehetővé teszi a C programozási nyelv egy részhalmazának automatikus átalakítását biztonságos Rust kóddá, válaszul a memória-biztonság iránti növekvő igényre.

A C nyelv az 1970-es évek elején jött létre, és számos kritikus rendszer, alkalmazás és könyvtár alapját képezi. Azonban a C és a C++ nem nyújt alapértelmezett memória-biztonsági garanciákat, mivel manuális memória-kezelést alkalmaznak, ami hajlamosabbá teszi őket a memóriahibákra, például a határon túli olvasásokra és írásokra, valamint a felszabadítás utáni használatra. Ezek a hibák a szoftveres sebezhetőségek jelentős részét teszik ki.

A kutatók létrehozták a Mini-C nevű C nyelvi részhalmazt, amely kizárja azokat a C mintákat és funkciókat, mint például a pointer aritmetika és az implicit változtathatóság, amelyek nem fordíthatók közvetlenül biztonságos Rust kóddá. A KaRaMeL fordítókeretrendszer segítségével a Mini-C kód automatikusan átalakítható biztonságos Rust kóddá, minimális forráskód módosítással.

A módszert tesztelték a HACL (High-Assurance Crypto Library) nevű, 80 000 soros, formálisan verifikált kriptográfiai könyvtáron, valamint az EverParse nevű, 1 400 soros formátum- és szerializáló könyvtáron. A HACL esetében minimális kódmódosításra volt szükség, míg az EverParse átalakítása forrásváltoztatás nélkül sikerült. Az átalakított Rust kód teljesítménye megegyezett az eredeti C kódéval, annak ellenére, hogy bővített mutatókat és futásidejű határellenőrzéseket alkalmaztak.

Ez a megközelítés lehetőséget nyújt a meglévő C kódok biztonságos Rust kóddá alakítására, elősegítve a memória-biztonság növelését a szoftverfejlesztésben, miközben megőrzi a teljesítményt és a funkcionalitást.

FORRÁS