70 % af sikkerhedsproblemerne i Chromium skyldes hukommelsesfejl

Udviklere af Chromium-projektet analyseret 912 højrisiko- og kritiske sårbarheder identificeret i stabile udgivelser af Chrome siden 2015 og konkluderede, at 70 % af dem var forårsaget af hukommelsesusikkerhed (fejl ved arbejde med pointere i C/C++-kode). Halvdelen af ​​disse problemer (36.1%) er forårsaget af adgang til bufferen efter frigivelse af den hukommelse, der er knyttet til den (brug-efter-fri).

70 % af sikkerhedsproblemerne i Chromium skyldes hukommelsesfejl

Da Chromium blev designet, var det oprindeligt lagt ned, at der er mulighed for fejl i koden, så der blev lagt stor vægt på brugen af ​​sandbox isolation for at begrænse konsekvenserne af sårbarheder. I øjeblikket har mulighederne for at bruge denne teknologi nået grænsen for deres evner, og yderligere fragmentering i processer er upraktisk ud fra et ressourceforbrugssynspunkt.

For at opretholde kodebasens sikkerhed håndhæver Google også "to-regel", ifølge hvilken enhver tilføjet kode ikke må opfylde mere end to af tre betingelser: arbejde med uvaliderede inputdata, bruge et usikkert programmeringssprog (C/C++) og køre med forhøjede rettigheder. Denne regel indebærer, at koden til behandling af eksterne data enten skal reduceres til minimale privilegier (isoleret) eller skrives i et sikkert programmeringssprog.

For yderligere at øge sikkerheden i kodebasen er der igangsat et projekt for at forhindre hukommelsesfejl i at opstå i kodebasen. Der er tre hovedtilgange: oprettelse af C++-biblioteker med funktioner til sikker drift af hukommelse og udvidelse af omfanget af skraldeopsamleren ved hjælp af hardwarebeskyttelsesmekanismer MTE (Memory Tagging Extension) og skrivekomponenter på sprog, der sikrer sikkert arbejde med hukommelse (Java, Kotlin, JavaScript, Rust, Swift).

Det forventes, at arbejdet vil blive fokuseret på to områder:

  • Betydelig ændring af C++-udviklingsprocessen, som ikke udelukker en negativ indvirkning på ydeevnen (yderligere grænsekontrol og affaldsindsamling). I stedet for rå pointere foreslås det at bruge typen MiraclePtr, som giver dig mulighed for at reducere udnyttelige use-efter-fri fejl til nedbrud, der ikke udgør en sikkerhedstrussel, uden en mærkbar negativ indvirkning på ydeevne, hukommelsesforbrug og stabilitet.
  • Brugen af ​​sprog, der er designet til at udføre hukommelsessikkerhedstjek på kompileringstidspunktet (vil eliminere den negative indvirkning på ydeevnen, der er forbundet med sådanne kontroller under kodeudførelse, men vil føre til yderligere omkostninger til at organisere interaktionen mellem kode på et nyt sprog med kode i C++).

Brug af hukommelsessikre biblioteker er den enkleste, men også mindre effektive måde. Omskrivning af kode i Rust vurderes som den mest effektive, men også meget dyre måde.

70 % af sikkerhedsproblemerne i Chromium skyldes hukommelsesfejl

Kilde: opennet.ru

Tilføj en kommentar