A Google a Safe Coding kezdeményezés eredményeit összegezte az Android-n belül, amely biztos memóriakezelésről gondoskodó programozási nyelvek alkalmazását, statikus elemzők használatát és biztonságos API tervezést tartalmaz. A változásoknak köszönhetően az Android relatív memóriahibákkal kapcsolatos sebezhetőségeinek aránya 76%-ról 2019-ben 24%-ra csökkent 2024-re, ami jelentősen alatta marad az ipari átlag 70%-ának.
A Google mérnökei arra a következtetésre jutottak, hogy a biztonsági problémák fő forrása az új kód, ezért a figyelmet új kód fejlesztési módszereinek modernizálására kell összpontosítani. A meglévő kód az idő múlásával egyre megbízhatóbbá és biztonságosabbá válik (a biztonság exponenciális összefüggése időben), így a meglévő kód újraírásába fektetett befektetések nem annyira jövedelmezőek. Például egy 5 éves kód átlagosan 3,4-szer kevesebb sebezhetőségi sűrűséggel bír, mint az új kód. Az Android és a Chromium projektek esetében a biztonságos memóriakezelési módszerek bevezetése miatt ez a különbség akár 7,4-szeres is lehet.

Ezért, ha megakadályozzuk a memóriahibák megjelenését az új kódban, akkor az idő múlásával a régi kódban egyre ritkábban fognak megjelenni ezek a hibák. Általánosságban a Google azt ajánlja, hogy ne írjuk át a régi kódot, hanem összpontosítsunk új, biztonságosan memóriakezelő nyelveken íródó kódok írására és biztosítsuk az új és a régi kód közötti kompatibilitást.
A sebezhetőségek számának csökkentése mellett a biztonságos programozási módszerek használata növeli a fejlesztési hatékonyságot, magasabb kódminőséget eredményez, és pozitívan befolyásolja a teljesítményt. Például a Chromium QR-kód generálásához szükséges kód Rust nyelvű újraírása 95%-os teljesítménynövekedést eredményezett a szükséges további sandbox-izolációs költségek megszüntetésével.
A fejlesztés sebessége és minősége javul a tesztelés egyszerűsítése és a hibák korai felfedezése révén, amikor a hibák még azelőtt észlelhetők, hogy a fejlesztő elkezdené a kód ellenőrzését. Például a változások visszavonásának mutatói: Rust kódban a váratlan hibák miatt a változások visszavonásának száma kétszer alacsonyabb, mint C++ esetében.
Általánosságban elmondható, hogy a biztonságos programozási módszerek alkalmazása a jelenlegi leghatékonyabb fejlesztési paradigmákként jelenik meg, amelyek felváltották az eddig használt három megközelítést:
- A sebezhetőségek javítása azok felfedezése után. Költséges, gyakori frissítések kiadását és azok gyors eljuttatását igényli a felhasználókhoz.
- Elővigyázatossági védelem, amely a sebezhetőségek kihasználásának nehezítésére összpontosít. Ennek a védelemnek az ára a teljesítmény csökkenése és az állandó macska-egér játék a támadókkal.
- A sebezhetőségek korai felfedezése fuzzing tesztelés és olyan eszközök, mint az AddressSanitizer és a MemorySanitizer alkalmazásával. Ez a módszer csak a tüneteket szüntette meg, nem a probléma okát, és folyamatos munkát igényelt.


Forrás: opennet.ru
