Egy keretrendszer biztonságos illesztőprogramok írására a Linux kernelhez Rust nyelven

Josh Triplett, aki az Intel-nél dolgozik és részt vesz a Crates.io fejlesztését felügyelő bizottságban, beszédében az Open Source Technology Summit konferencián bemutatott egy olyan munkacsoportot említett, amelynek célja a Rust nyelv szintjeinek a C nyelv szintjére emelése a rendszerprogramozás terén.

A létrehozás alatt álló munkacsoportban a Rust fejlesztői együttműködve az Intel mérnökeivel specifikációkat készítenek azokról a funkciókról, amelyeket a Rust-ban meg kell valósítani a rendszerprogramozás érdekében. A rendszerprogramozás gyakran alacsony szintű manipulációt igényel, mint például privilegizált processzor utasítások végrehajtása és a processzor állapotának részletes információinak beszerzése. A Rust számára már fejlesztett hasonló lehetőségek között említést nyer az unnamed structok, union-ok, assember beszúrások (asm! makró) és BFLOAT16 formátumú lebegőpontos számok támogatása.

Josh úgy véli, hogy a jövő a rendszerprogramozásban a Rust nyelvé lesz, míg a C nyelv a modern időkben olyan pozíciót foglal el, amit a korábbi években az Assembly töltött be. A Rust
nemcsak megszünteti az alacsony szintű memória kezeléssel járó C nyelvi problémákat a fejlesztők számára, hanem lehetőséget biztosít a modern programozási paradigmák alkalmazására is.

A vita beszéd során
Josh felvetette azt az ötletet, hogy a Linux kernelhez a Rust nyelven történő illesztőprogram-fejlesztés lehetősége is bekerüljön, ami lehetővé tenné biztonságosabb és jobb minőségű illesztőprogramok létrehozását minimális erőfeszítéssel, megszabadítva őket az olyan problémáktól, mint a már felszabadított memória területek elérése, a nullpointerek dereferálása és a pufferen túllépés.

Greg Kroah-Hartman, aki a Linux kernel stabil ágának támogatásáért felelős, kifejezte hajlandóságát arra, hogy a kernelhez Rust nyelven történő illesztőprogram-fejlesztő keretrendszert adjon hozzá, ha az valódi előnyökkel bír a C-hez képest, például biztonságos kötéseket kínál az API köré. Továbbá Greg ezt a keretrendszert csak lehetőségként vizsgálja, amely alapértelmezés szerint nem aktív, hogy a Rust ne kerüljön a kernel összeszerelési függőségei közé.

Kiderült, hogy több csapat is dolgozik már ezen a területen. Például a «Fish in a Barrel» cég fejlesztői. készítették eszközkészlet a Linux kernelhez készült modulok Rust nyelven történő írásához, a védelem növelése érdekében absztrakt rétegek készletét használva a kernel interfészei és struktúrái felett. A rétegek automatikusan generálódnak a meglévő kernel header fájlok alapján egy segédeszköz segítségével. bindgen. A rétegek összeszereléséhez Clang-ot használnak. Az összeszerelt modulok a réteken kívül staticlib csomagot is használnak.

Paralel Go nyelven fejlődik. még egy projekt is van, amely a beágyazott rendszerek és az internetes dolgok eszközeinek meghajtóinak fejlesztésére összpontosít, és amely szintén a bindgent használja a kernel header fájlok alapján rétegek generálásához. A keretrendszer lehetővé teszi a meghajtók biztonságának növelését anélkül, hogy a kernelbe módosításokat kellene végezni — ahelyett, hogy a kernelben további izolációs szinteket hoznának létre, javasolják a problémák blokkolását a fordítás során, a biztonságosabb Rust nyelv alkalmazásával. Úgy tűnik, hogy ez a megközelítés keresett lehet a gyártók körében, akik vállalatok számára készült, gyorsan írt saját meghajtókat készítenek megfelelő audit nélkül.

A tervezett funkciók nem mindegyike valósult meg eddig, de a keretrendszer már teljesen használható, és egy működő Ethernet-vezérlőhöz, a Raspberry Pi 3 lapon található LAN9512 USB-hez készült meghajtó írásához használták. A Rust-meghajtó írásakor már meglévő smsc95xx meghajtót használták alapként, amely C nyelven íródott. Megjegyzik, hogy a modul mérete és a Rust-ra épülő meghajtó fejlesztésének runtime komponenseinek költsége elhanyagolható, ami lehetővé teszi a keretrendszer alkalmazását korlátozott erőforrású eszközökhöz.

Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster