Rust a Windows kernelben
A Check Point Research szerint a Windows új, Rust-ban megírt grafikus kernel-komponensében olyan sérülékenységre bukkantak a metafájlokra irányuló fuzzing-kampány során, amely rendszerösszeomlást (BugCheck) idézett elő — a hibát a kutatók jelentették, és a Microsoft május 28-i, OS Build 26100.4202-t tartalmazó frissítésében kezdte el javítani.
A vizsgálat különlegessége, hogy a fuzzer maga okozta a „Denial of Fuzzing” állapotot: a gyakori mutációk után a tesztrendszer összeomlott és újraindult, így a reprodukció és a hibakeresés eleinte nagyon nehéz volt, ezért a kutatók speciális memóriakép-kinyerési és forenzikai módszereket alkalmaztak a problémás minták megtalálásához.
Annak érdekében, hogy megbízhatóan újraállítsák a hiba kiváltását, a csapat kiegészítette a fuzzing-harszest úgy, hogy minden mutációt egy távoli szerverre továbbítson; így sikerült rövid időn belül reprodukálni az összeomlást — a végső kiváltó mutációk előállítása több százezer próbálkozást igényelt.
A konkrét összeomlás a Rust alapú kernel-driver hívása környezetében jelentkezett, és a stack trace-ben olyan funkciók tűntek fel, amelyek a Rust-ból eredő ellenőrzési és panic-kezelési viselkedésre utalnak — ez rámutat arra, hogy a Rust bevezetése a kernelben új típusú hibamódokat és fuzzing-kihívásokat hozhat magával.
A Rust alkalmazása kernel-szinten nem varázsigézi el a biztonságot — a nyelvi előnyök mellett a runtime-specifikus viselkedések (például bounds check és panic) új támadási felületet teremthetnek és a fuzzing-infrastruktúrákat és a memóriakép-forenzikát érdemes úgy tervezni, hogy ellenálljanak a „Denial of Fuzzing” jellegű hatásoknak, például gyors mintakinyeréssel, izolált környezettel és automatizált dump-gyűjtéssel lehet csak hatékonyan dolgozni.