70 % bezpečnostných problémov v prehliadači Chromium je spôsobených chybami pamäte

Vývojári projektu Chromium analyzované 912 vysokorizikových a kritických zraniteľností identifikovaných v stabilných vydaniach prehliadača Chrome od roku 2015 a dospel k záveru, že 70 % z nich bolo spôsobených nedostatočnou bezpečnosťou pamäte (chyby pri práci s ukazovateľmi v kóde C/C++). Polovica týchto problémov (36.1 %) je spôsobená prístupmi do vyrovnávacej pamäte po uvoľnení pamäte s ňou spojenej (use-after-free).

70 % bezpečnostných problémov v prehliadači Chromium je spôsobených chybami pamäte

Pri navrhovaní Chromia to bolo spočiatku stanovenéže je možné, že sa v kóde môžu objaviť chyby, preto sa veľký dôraz kládol na použitie izolácie sandboxu, aby sa obmedzili následky zraniteľností. V súčasnosti sa možnosti využitia tejto technológie dostali na hranicu svojich možností a ďalšia fragmentácia do procesov je z pohľadu spotreby zdrojov nepraktická.

Na udržanie bezpečnosti kódovej základne spoločnosť Google presadzuje aj „pravidlo dvoch“, podľa ktorého akýkoľvek pridaný kód musí spĺňať najviac dve z troch podmienok: práca s nevalidovanými vstupnými údajmi, používanie nezabezpečeného programovacieho jazyka (C/C++) a spustenie so zvýšenými privilégiami. Toto pravidlo znamená, že kód na spracovanie externých údajov musí byť buď zredukovaný na minimálne privilégiá (izolovaný), alebo napísaný v zabezpečenom programovacom jazyku.

Na ďalšie zvýšenie bezpečnosti kódovej základne bol spustený projekt, ktorý má zabrániť výskytu chýb pamäte v kódovej základni. Existujú tri hlavné prístupy: vytváranie knižníc C++ s funkciami pre bezpečnú prevádzku pamäte a rozšírenie rozsahu zberača odpadu pomocou mechanizmov ochrany hardvéru MTE (Memory Tagging Extension) a zapisovacie komponenty v jazykoch, ktoré zaisťujú bezpečnú prácu s pamäťou (Java, Kotlin, JavaScript, Rust, Swift).

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

  • Významná zmena vo vývoji C++, ktorá nevylučuje negatívny vplyv na výkon (dodatočné kontroly hraníc a garbage collection). Namiesto nespracovaných ukazovateľov sa navrhuje použiť typ MiraclePtr, ktorý umožňuje zredukovať zneužiteľné chyby typu use-after-free na pády, ktoré nepredstavujú bezpečnostnú hrozbu, bez citeľného negatívneho vplyvu na výkon, spotrebu pamäte a stabilitu.
  • Používanie jazykov navrhnutých na vykonávanie kontrol bezpečnosti pamäte v čase kompilácie (eliminuje negatívny vplyv na výkon, ktorý je s týmito kontrolami spojený počas vykonávania kódu, ale povedie k dodatočným nákladom na organizáciu interakcie kódu v novom jazyku s kódom v C++).

Používanie pamäťovo bezpečných knižníc je najjednoduchší, ale aj menej efektívny spôsob. Prepísanie kódu v Ruste je hodnotené ako najefektívnejší, ale aj veľmi nákladný spôsob.

70 % bezpečnostných problémov v prehliadači Chromium je spôsobených chybami pamäte

Zdroj: opennet.ru

Pridať komentár