A biztonságos web: Böngészők, amelyek nem felejtenek
A memóriabiztonságos web: böngészőépítés nullára redukált sebezhetőséggel
A memóriavédelmi hibák évtizedek óta éjjel-nappal gyötrik a szoftverfejlesztőket. A puffer-túlcsordulások, a use-after-free jellegű hibák és a null pointer dereferenciák rendszeresen a legkihasználtabb biztonsági részek közé tartoznak a kritikus rendszerekben. De mi lenne, ha egyenesen ki tudnánk őket fordítani a létezésből?
Egy fejlesztő pontosan ezen dolgozik – és az eredmények egészen meglepőek.
Bizalom építése fordítási időben
A projekt lényege, hogy egy teljes webböngésző stacket fordítanak le a Fil-C segítségével, ami egy memóriabiztonságos C fordító. Nem csak a böngészőről van szó – hanem az egész alatta működő ökoszisztémáról. A WebKit MiniBrowser, a GTK4, a Weston (Wayland kompozitor) és a Linux userland is ugyanazzal a memóriabiztonságos eszközlánccal lett lefordítva.
A Linux kernel nemrég került a hírekbe, amikor elkezdett átállni a memóriabiztonságos nyelvekre. Ez a projekt viszont más utat választ: megtartja a C-t, miközben bizonyíthatóan biztonságossá teszi fordítási időben. Nem kell tehát milliós nagyságrendű kódsort újraírni Rust-ban – a fejlesztők meglévő C kódbázisokra húzhatják rá a memóriavédelmet.
Miért fontos ez az infrastruktúra szempontjából?
A startupok és az éles rendszereket építő fejlesztők számára a memóriabiztonság nem elméleti kérdés – ez operatív kockázat. A CVE-adatbázisokban rendszeresen bukkannak fel memóriavédelmi hibák a kritikus infrastruktúra-szoftverekben. Minden puffer-túlcsordulás egy széles körben használt könyvtárban potenciális belépési pont a támadóknak.
A GLM-5.3-flash projekt egy ambiciózus kísérlet egy memóriabiztonságos glibc alternatíva létrehozására, amelyet jelenleg újabb verziók támogatásához igazítanak. Ez különösen azért lényeges, mert a standard C könyvtárak gyakorlatilag mindenhez alapot adnak a Linux ökoszisztémában.
Merre haladunk?
Ez a projekt azt mutatja, hogy a memóriabiztonság nem feltételezi a meglévő kódbázisok eldobását vagy minden újraírását egy új nyelven. Formális verifikációs technikák és típusbiztos fordítási stratégiák segítségével a fejlesztők megőrizhetik a meglévő rendszerekkel való kompatibilitást, miközben teljes sebezhetőségi kategóriákat törölnek.
Az infrastruktúra-döntéseket mérlegelő csapatok számára ez azt jelzi, hogy a memóriabiztonságos fordítás gyorsan érik. Akár nyelvmigrációról, akár formális verifikációról, akár memóriabiztonságos C eszközláncokról van szó, az iparág egy olyan jövő felé konvergál, ahol a memória-bizonytalanság lesz a kivétel, nem a szabály.
A böngésző lehet csak a kezdet. Ha ezek a technikák más kritikus szoftverekre is skálázódnak, alapvető változást láthatunk majd abban, ahogy a szoftverbiztonságra gondolunk – a sebezhetőségek javítgatásától a fordítási időben történő teljes megelőzésig.