70% sigurnosnih problema u Chromiumu uzrokovani su greškom u radu s memorijom

Razvijači projekta Chromium analizirali Otkriveno je 912 opasnih i kritičnih ranjivosti u stabilnim izdanjima Chromea od 2015. godine, te je zaključeno da je 70% njih uzrokovano nesigurnim radom s memorijom (greške u radu s pokazivačima u C/C++ kodu). Polovica ovih problema (36,1%) uzrokovana je pristupima baferu nakon oslobađanja povezane memorije (use-after-free).

70% sigurnosnih problema u Chromiumu uzrokovani su greškom u radu s memorijom

Prilikom projektiranja Chromiuma prvotno je predviđeno, da kod ne isključuje mogućnost pojave grešaka, stoga je veći naglasak stavljen na primjenu sandbox izolacije kako bi se ograničili posljedici otkrivanja ranjivosti. Trenutno su mogućnosti primjene ove tehnologije dostigle svoj maksimum, a daljnje razdvajanje na procese nije isplativo s obzirom na potrošnju resursa.

Za održavanje sigurnosti osnovnog koda, Google također primjenjuje „pravilo dvojice“, prema kojem svaki dodatni kod mora zadovoljiti najviše dva od tri uvjeta: rad s neprovjerenim ulaznim podacima, korištenje nesigurnog programskog jezika (C/C++) i izvođenje s povećanim privilegijama. Iz ovog pravila slijedi da kod za obradu vanjskih podataka treba ili imati minimalne privilegije (biti izoliran), ili biti napisan na sigurnom programskom jeziku.

Za daljnje jačanje sigurnosti osnovnog koda pokrenut je projekt za sprječavanje grešaka u radu s memorijom u osnovnom kodu. Ističu se tri osnovna pristupa: kreiranje C++ biblioteka s funkcijama za sigurni rad s memorijom i proširenje područja primjene sakupljača smeća, primjena hardverskih mehanizama zaštite MTE (Memory Tagging Extension) i pisanje komponenti na jezicima koji osiguravaju siguran rad s memorijom (Java, Kotlin, JavaScript, Rust, Swift).

Očekuje se da će rad biti usredotočen na dva smjera:

  • Značajnu promjenu procesa razvoja u C++, koja potencijalno može negativno utjecati na performanse (dodatne provjere granica i sakupljenje smeća). Umjesto raw pokazivača preporučuje se korištenje tipa MiraclePtr, koji smanjuje iskorištene greške klase use-after-free na sigurnosno bezopasne rupe, bez značajnog negativnog utjecaja na performanse, potrošnju memorije i stabilnost.
  • Korištenje jezika koji su dizajnirani za provjeru sigurnog rada s memorijom tijekom kompilacije (omogućuje isključivanje negativnog utjecaja na performanse, što je karakteristično za takve provjere tijekom izvođenja koda, ali će donijeti dodatne troškove u organizaciji interakcije koda na novom jeziku s kodom na C++).

Korištenje biblioteka za sigurni rad s memorijom predstavlja najjednostavniji, ali manje učinkovit način. Prepisivanje koda na Rust smatra se najučinkovitijim, ali i vrlo skupim putem.

70% sigurnosnih problema u Chromiumu uzrokovani su greškom u radu s memorijom

Izvor: opennet.ru

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster