Rust az Androidon: gyorsan dolgozz, és javítsd a hibákat.
CYBERSECURITY KIEMELT ELEMZÉS

Rust az Androidon: gyorsan dolgozz, és javítsd a hibákat.

SZERZŐ

Edward Fernandez

FORRÁS

Google Online Security Blog

DATE

READ

5 perc olvasás

Egy recent elemzés szerint, az Android biztonsági stratégiája, amely a Rust programozási nyelvet használ, a memória biztonságának biztosításával jelentős javulást mutat. A memória biztonsági hibák az összes hiba közül …

A Jeff Vander Stoep, Android A tavaly publikáltunk arról, hogy egy olyan memóriabiztonsági stratégia, amely a kód újbontatásának sérülékenységi megelőzésére összpontosít, gyorsan és tartós előnyöket eredményez. Ezért most a kérdést vizsgáljuk, hogy ez a megközelítés nemcsak javítja a dolgokat, hanem gyorsít is. A 2025-ös adatok azt mutatják, hogy a memória biztonságának problémái az első alkalommal elmaradnak a teljes sérülékenységi problémák több mint 20%-ától. Az 2025-ös adatok a C, C++, Java, Kotlin és Rust közötti Android platformon található első és harmadik félben található változásokat tartalmazza. Ez a bejegyzés 2025 év végének előtti időpontban publikálódott, de az Android iparági szabványos 90 napos patchációs ablak miatt az eredmények valószínűleg már a végső állapotban vannak. Mi is képesek vagyunk, és szükség esetén gyorsítunk a javításoknál. A Rustot választuk a biztonsága miatt, és 1000-szer kisebb memória biztonsági problémák vannak, mint a C és C++ kódokhoz képest az Androidon. De a legnagyobb meglepetés a Rust hatása a szoftver szállításra volt. A Rust változatai 4-szer kisebb hibajavítási arányt és 25%-kal kevesebb időt igénybe veszik a kódellenőrzést. Ezáltal a biztonságosabb megoldás most is gyorsabb. Ebben a bejegyzésben megvizsgáljuk az ehhez tartozó adatokat, valamint megemeljük: Hogyan bővítjük elérhetőségünket: A célunk, hogy a biztonságos kód legyen alapértelmezett az egész szoftverünkhöz. Tartalmazzuk Rust-ot az elsődleges alkalmazásokban, a Linux-szívben és a firmware-ben. Az első Rust-os memória biztonsági probléma: majdnem: Megvizsgáljuk egy szinte-biztonságos Rust-os memóriabiztonsági hibát: a hibát, a megoldást és a jövőbeli megelőzésre tett intézkedéseket. Ez egy jó lehetőség a kérdés megválaszolására: “Ha a Rust-nak is vannak memória biztonsági problémái, miért is hasznos?” A jobb szoftverek, gyorsabban. Egy operációs rendszer fejlesztése érdekében a C, C++ és Rust, mint az operációs rendszerek nyelvének alacsony szintű kontrollját és előre látható működést igényel. Bár a Java és Kotlin fontosak az Android platform fejlesztéséhez, azok kiegészítő szerepet töltenek be, nem pedig azok helyettesítői. A Rustot az Androidon közvetlen alternatívájaként vezettük be a C és C++-hoz, hasonló szintű kontrollt biztosítva, de számos kockázat nélkül. Az elemzésünkhöz a új és aktívan fejlesztett kódhoz összpontosítunk, mivel az adatok azt mutatják, hogy ez egy hatékony megközelítés. Ha a rendszerszintű nyelvek (a Java és a Kotlin kivételével) fejlesztésére nézzük, akkor két tendencia merül fel: a Rust használatának gyors növekedése, és a C++ új kódjának lassú, de stabil csökkenése. A Rust használatának számát és a C++ új kódjának számát összehasonlítva, a két nyelv hasonló méretű változatai hasonló méretű működésben vannak, bár a Rust egy kicsit nagyobb. Ez a különbség a C++-ot kedvezőbbé teszi, de a összehasonlítás mégis érvényes. A Gerrit változati méretének meghatározását használjuk. Az fejlesztőcsoportok hasonló méretűek: Csak az Android platform fejlesztőinek változásait vizsgáljuk. A legtöbb fejlesztő a Google-ban dolgozik, és nagy a csoportok átfedése, ahol sokan mindkét területen is részt vesz. Az időbeli trendek nyomon követése: A Rust használatának növekedése, hogyan változnak a mutatók, gyorsulnak-e, vagy visszatérnek a középértékhez? A kódellenőrzés egy időigényes és magas késésű fejlesztési folyamat. A kód átalakítása a legfőbb ok, amely miatt ezek a késések bekövetkeznek. Az adatok azt mutatják, hogy a Rust-os kód kevesebb szerkesztési feladatot igényel. Ez a tendencia az 2023-as időpontban következetesen megnyúlt. A Rust változatai, amelyek hasonló méretűek, körülbelül 20%-kal kevesebb szerkesztési feladatot igényelnek, mint a C++-hoz hasonló. Ezenkívül a Rust változatai jelenleg körülbelül 25%-kal kevesebb időt töltenek a kódellenőrzésben, mint a C++. Feltételezzük, hogy a 2023-2024-es időszakban a Rust-ra való nagyobb átállást a Google-on dolgozó fejlesztők nagyobb Rust-os tudása okozta. Bár a kevesebb szerkesztési feladat és a gyorsabb kódellenőrzés csak kisebb termeléssel jár, a legjelentősebb javulások a változások stabilitásában és minőségében vannak. Stabil a változások. A DORA a változások stabilitásának értékelésére használja a visszavonási arányt. A Rust visszavonási aránya nagyon alacsony, és továbbra is csökken, még akkor is, ha az Androidon való használata a C++-ot meghaladja. A közepes és nagy méretű változások esetén a Rust változatai az Androidon körülbelül 4-szer kevesebb visszavonási arányt mutatnak, mint a C++. Ez a alacsony visszavonási arány nem csak a stabilitást jelzi, hanem a fejlesztési átfutást is növeli. A visszavonások nagy mennyiségben disruptívak, szervezeti feszültséget és forrásokat hoznak létre, amelyek sokkal messzebb esnek, mint az a fejlesztő, aki a hibás változást létrehozta. A visszavonások további szerkesztési feladatokat, több kódellenőrzést, és felépítési újra, post mortem, és a csapatok blokádját követelnek. A post mortem általában új biztonsági intézkedéseket hoz, amelyek további fejlesztési overhead-et okoznak. Egy 2022-es önbevallott felmérésによると, a Google-ban dolgozó fejlesztők szerint a Rust könnyebben ellenőrizhető és az is, hogy a Rust-os kód valószínűbb, hogy helyes. Az adatok a visszavonási arányokról és a kódellenőrzési időkről, amelyek vannak, ezt a megállapítást megerősítik. Összefoglalva, a biztonsági javítások korábban egy áldozatot igényelt: a memória biztonságának problémáit kezeléséhez nagy mennyiségű statikus elemzés, futási megakadályozási, sandbox, és reagáló javítás kellett. Ez a megközelítés volt, de az azáltal, hogy gyorsan, majd később javítunk, sokkal gyorsabb megoldást tudunk alkalmazni. Azonban ezek a védelmi mechanizmusok, bár elengedhetetlenek, magas költségekkel járnak a teljesítményben és a fejlesztői termelékenységben, ugyanakkor nem biztosít megfelelő szintű biztonságot. Bár a C és C++ továbbra is létezni fognak, és a szoftver és hardver biztonsági mechanizmusok is elengedhetetlenek a réteg biztonságért, a Rustra való átállás egy másik megközelítés, ahol a biztonságosabb megoldás is gyorsabb. Azáltal, hogy gyorsan javíthatunk, gyorsabb megoldást tudunk alkalmazni. És, amint a kód egyre biztonságosabb, talán még több teljesítményt és termelékenységet visszanyalhatunk, ugyanakkor a biztonságot is fejleszthetjük. Köszönöm a következő személyeknek a hozzájárulásaikért: Ivan Lozano a CVE-2025-48530 részletes postmortem-jának összeállításáért. Chris Ferris a postmortem-ok eredményeinek megerősítése és a Scudo-s ütközéskezelése a Scudo-ban ahelyett, hogy az egy-egy-kódok használata a helyes megoldás, a fejlesztés. Dmytro Hrybenko a Rust-os kódok fejlesztésének vezetőjeként, a tanúsítások és a post-értékelések végrehajtásához. Alex Rebert és Lars Bergstrom értékes javaslataikkal és javaslataikkal. Peter Slatala, Matthew Riley, és Marshall Pierce, ahelyett, hogy azokat a helyes megoldásokat, amelyekre a Rust-nak van szüksége, a helyes megoldást keresik. És végül, a hatalmas köszönet a Android Rust csapatnak, és az Android-nak, hogy elkötelezettek a fejlesztési excellence-ért és a folyamatos fejlesztésért. A C/S/R a DevOps Research and Assessment (DORA) program.