Miért ragaszkodunk a régi kódhoz?
Részletesebben kifejtve, a mobilszolgáltatók nehezen mozdítható technológiai öröksége óriási kihívás elé állítja még a legnagyobb cégeket is. A több évtizedes fejlesztés során összegyűlt technikai adósság hatalmas, ráadásul a modemeknek valós időben kell működniük, így a villámgyors C/C++ kódot nem könnyű lecserélni. Az elszigetelt, saját operációs rendszert futtató bázissáv – az úgynevezett baseband – lényegében egy fekete doboz, amelynek belső működését sokan üzleti titokként kezelik.
Rust: új remény a biztonságban
Lényeges szempont, hogy a hagyományos, memóriabiztonságos nyelvek – mint a Python vagy a C# – szemétgyűjtést alkalmaznak, ami lelassítaná a modemek működését. A Rust ezzel szemben nem használ ilyen szemétgyűjtést, hanem statikus szabályrendszert alkalmaz: a „borrow checker” már fordításkor ellenőrzi, hogy ne legyen memóriahiba. A szabályokat megszegő kód egyszerűen nem fordul le, vagyis a biztonsági réseket a lehető leghamarabb kiszűri.
A Google megoldása: célzott védelem a DNS-nél
A Google nem vállalta, hogy mindent újraír, inkább arra koncentrált, ahol a legnagyobb veszély fenyeget: a modem szoftver DNS-értelmező részét erősítették meg Rust-komponenssel. Mivel egyre több mobilos szolgáltatás a neten keresztül működik, a DNS-elemzés központi szerepet kapott a támadások felderítésében és megelőzésében. Ezért döntöttek a hickory-proto nevű, széles körben használt Rust DNS-könyvtár mellett – annak ellenére, hogy nem különösebben optimalizált. Az optimalizálás érdekében eltávolították a standard könyvtári függőségeket, így a végeredmény mindössze 371 kB-tal növelte a modem méretét, ami még bőven belefér a Pixel 10-ben.
Biztonságosabb jövőt ígér a Pixel 10
A Rust-komponens beépítésével a rosszindulatú vagy hibás DNS-csomagok megakadnak a Rust „falán”, vagyis a támadók nem tudnak kihasználható memóriakezelési hibákat előidézni. A Pixel 10 az első mobil, ahol a modem ilyen védelemmel kerül a boltokba. A Google ezzel más gyártók számára is példát mutat, sőt, bejelentette: a jövőben további, memóriabiztonságos Rust-modulokat is bevet a bázissávban. Az egyetlen akadály a könyvtárak mérete lehet, főleg az egyszerűbb eszközök esetén, de a modularitás ezen is segíthet.
