70 % av säkerhetsproblemen i Chromium orsakas av minnesbuggar

Chromium-projektutvecklare analyseras 912 allvarliga och kritiska sårbarheter har hittats i stabila versioner av Chrome sedan 2015, och 70 % av dem orsakades av minnesosäkerhet (fel vid hantering av pekare i C/C++-kod). Hälften av dessa problem (36.1 %) orsakades av use-after-free.

70 % av säkerhetsproblemen i Chromium orsakas av minnesbuggar

När Chromium designades var det ursprungligen lovade, att fel inte kan uteslutas i koden, så en stor satsning gjordes på att använda sandlådeisolering för att begränsa konsekvenserna av sårbarheter. För närvarande har möjligheterna att använda denna teknik nått gränsen för deras kapacitet och ytterligare fragmentering i processer är opraktisk ur resursförbrukningssynpunkt.

För att upprätthålla säkerheten för sin kodbas använder Google även "tvåregeln", enligt vilken all tillagd kod får uppfylla högst två av tre villkor: att arbeta med otillförlitliga indata, använda ett osäkert programmeringsspråk (C/C++) och köra med förhöjda rättigheter. Det följer av denna regel att kod för bearbetning av externa data antingen måste trimmas ner till minimala rättigheter (isoleras) eller skrivas i ett säkert programmeringsspråk.

För att ytterligare förbättra säkerheten i kodbasen har ett projekt lanserats för att förhindra att minnesfel uppstår i kodbasen. Tre huvudsakliga tillvägagångssätt lyfts fram: att skapa C++-bibliotek med funktioner för säker minneshantering och att utöka garbage collector-funktionens omfattning med hjälp av hårdvaruskyddsmekanismer. MTE (Memory Tagging Extension) och skriva komponenter i språk som ger säkert arbete med minne (Java, Kotlin, JavaScript, Rust, Swift).

Arbetet förväntas fokusera på två områden:

  • En betydande förändring av C++-utvecklingsprocessen, vilket kan ha en negativ inverkan på prestandan (ytterligare gränskontroll och skräpinsamling). Istället för råa pekare föreslås det att använda typen i koden MiraclePtr, vilket gör att utnyttjande fel vid use-after-free kan reduceras till icke-säkerhetshotande krascher, utan märkbar negativ inverkan på prestanda, minnesförbrukning och stabilitet.
  • Använda språk utformade för att utföra minnessäkerhetskontroller under kompilering (detta eliminerar den negativa prestandapåverkan som är inneboende i sådana kontroller under kodkörning, men leder till extra kostnader för att organisera interaktionen mellan kod i det nya språket och kod i C++).

Att använda minnessäkra bibliotek är det enklaste men också det minst effektiva sättet, medan omskrivning av kod i Rust anses vara det mest effektiva men också det dyraste sättet.

70 % av säkerhetsproblemen i Chromium orsakas av minnesbuggar

Källa: opennet.ru

Köp pålitlig hosting för webbplatser med DDoS-skydd, VPS VDS-servrar 🔥 Köp pålitlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster