70 % av säkerhetsproblemen i Chromium orsakas av minnesbuggar

Utvecklare av Chromium-projektet analyseras 912 högrisk- och kritiska sårbarheter identifierade i stabila versioner av Chrome sedan 2015, och drog slutsatsen att 70 % av dem orsakades av minnesosäkerhet (fel vid arbete med pekare i C/C++-kod). Hälften av dessa problem (36.1%) orsakas av åtkomst till bufferten efter frigöring av minnet som är associerat med den (use-after-free).

70 % av säkerhetsproblemen i Chromium orsakas av minnesbuggar

När man designade Chromium var det ursprungligen ligg ner, att det är möjligt att fel uppstår i koden, så stor vikt lades vid användningen av 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 sin förmåga och ytterligare fragmentering i processer är opraktisk ur resursförbrukningssynpunkt.

För att upprätthålla kodbasens säkerhet upprätthåller Google också "tvåregel", enligt vilken all tillagd kod inte får uppfylla mer än två av tre villkor: arbeta med ovaliderad indata, använda ett osäkert programmeringsspråk (C/C++) och köra med förhöjda privilegier. Denna regel innebär att koden för bearbetning av extern data antingen måste reduceras till minimala privilegier (isolerade) eller skrivas på ett säkert programmeringsspråk.

För att ytterligare förbättra säkerheten för kodbasen har ett projekt startats för att förhindra att minnesfel uppstår i kodbasen. Det finns tre huvudsakliga tillvägagångssätt: skapa C++-bibliotek med funktioner för säker drift av minnet och utöka omfattningen av sophämtaren med hjälp av hårdvaruskyddsmekanismer MTE (Memory Tagging Extension) och skrivkomponenter på språk som säkerställer säkert arbete med minnet (Java, Kotlin, JavaScript, Rust, Swift).

Det förväntas att arbetet kommer att fokuseras på två områden:

  • Betydande förändring av C++-utvecklingsprocessen, vilket inte utesluter en negativ inverkan på prestanda (ytterligare gränskontroller och sophämtning). Istället för råpekare föreslås att typen används MiraclePtr, som låter dig reducera exploateringsbara användningsfria fel till krascher som inte utgör ett säkerhetshot, utan en märkbar negativ inverkan på prestanda, minnesförbrukning och stabilitet.
  • Användningen av språk som är utformade för att utföra minnessäkerhetskontroller vid kompilering (kommer att eliminera den negativa inverkan på prestanda som är inneboende i sådana kontroller under kodexekvering, men kommer att leda till extra kostnader för att organisera interaktionen av kod på ett nytt språk med kod i C++).

Att använda minnessäkra bibliotek är det enklaste, men också mindre effektiva sättet. Att skriva om kod i Rust bedöms som det mest effektiva, men också mycket dyrbara sättet.

70 % av säkerhetsproblemen i Chromium orsakas av minnesbuggar

Källa: opennet.ru

Lägg en kommentar