70 % problémov s bezpečnosťou v Chromiu je spôsobených chybami pri práci s pamäťou

Vývojári projektu Chromium analyzovali 912 nebezpečných a kritických zraniteľností zistených v stabilných vydaniach Chrome od roku 2015, a dospeli k záveru, že 70% z nich bolo spôsobených nebezpečným zaobchádzaním s pamäťou (chybami pri práci s ukazovateľmi v kóde C/C++). Polovica týchto problémov (36,1%) bola spôsobená prístupmi k vyrovnávacej pamäti po uvoľnení súvisiacej pamäte (use-after-free).

70 % problémov s bezpečnosťou v Chromiu je spôsobených chybami pri práci s pamäťou

Pri navrhovaní Chromium bolo pôvodne založené, že v kóde nie je vylúčené vznikanie chýb, preto sa veľká dôvera kládla na aplikáciu sandbox izolácie na obmedzenie následkov prejavu zraniteľností. V súčasnosti možnosti aplikácie tejto technológie dosiahli svoje limity a ďalšie delenie na procesy nie je efektívne z hľadiska spotreby zdrojov.

Na udržanie bezpečnosti kódovej základne Google taktiež aplikuje „pravidlo dvoch“, podľa ktorého akýkoľvek pridávaný kód nesmie spĺňať viac ako dve z troch podmienok: práca s nepodloženými vstupmi, používanie nebezpečného programovacieho jazyka (C/C++) a vykonávanie s vyššími oprávneniami. Z tohto pravidla vyplýva, že kód na spracovanie externých dát by mal byť buď obmedzený na minimálne oprávnenia (izolovaný), alebo napísaný v bezpečnom programovacom jazyku.

Na ďalšie posilnenie bezpečnosti kódovej základne bol spustený projekt na prevenciu vzniku chýb zaobchádzania s pamäťou v kódovej základni. Vynárajú sa tri hlavné prístupy: vytváranie knižníc C++ s funkciami pre bezpečné zaobchádzanie s pamäťou a rozšírenie oblasti pôsobenia garbage collectora, použitie hardvérových ochranných mechanizmov MTE (Memory Tagging Extension) a písanie komponentov v jazykoch, ktoré zabezpečujú bezpečné zaobchádzanie s pamäťou (Java, Kotlin, JavaScript, Rust, Swift).

Očakáva sa, že práca bude zameraná na dve oblasti:

  • Významná zmena v procese vývoja v C++, ktorá nevyhnutne prinesie negatívny dopad na výkon (dodatočné kontroly hraníc a garbage collector). Namiesto raw ukazovateľov sa navrhuje v kóde používať typ MiraclePtr, ktorý umožňuje minimalizovať zraniteľnosti typu use-after-free na nehrozivé pády bez významného negatívneho vplyvu na výkon, spotrebu pamäte a stabilitu.
  • Použitie jazykov navrhnutých na vykonávanie bezpečnostných kontrol pri práci s pamäťou počas kompilácie (to vylúči negatívny dopad na výkon typický pre takéto kontroly vykonávané za behu kódu, ale prinesie dodatočné náklady na organizáciu interakcie kódu v novom jazyku s kódom v C++).

Použitie knižníc na bezpečnú prácu s pamäťou je najjednoduchší, ale menej efektívny spôsob. Prepisovanie kódu do jazyka Rust sa hodnotí ako najefektívnejšia, ale aj veľmi nákladná cesta.

70 % problémov s bezpečnosťou v Chromiu je spôsobených chybami pri práci s pamäťou

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster