70 % problémů se zabezpečením v Chromiu způsobují chyby při práci s pamětí

Vývojáři projektu Chromium analyzovali Bylo identifikováno 912 nebezpečných a kritických zranitelností ve stabilních verzích Chrome od roku 2015 a bylo zjištěno, že 70 % z nich bylo způsobeno nebezpečným zacházením s pamětí (chybami při práci s ukazateli v kódu v C/C++). Polovina z těchto problémů (36,1 %) byla způsobena přístupy k bufferu po uvolnění související paměti (use-after-free).

70 % problémů se zabezpečením v Chromiu způsobují chyby při práci s pamětí

Při navrhování Chromium bylo původně založeno, že v kódu se mohou vyskytnout chyby, proto se kladl velký důraz na aplikaci sandboxové izolace pro omezení následků projevování zranitelností. V současnosti dosáhly možnosti používání této technologie svých limitů a další rozdělení na procesy není z pohledu spotřeby zdrojů opodstatněné.

Pro udržení bezpečnosti kódové základny Google také uplatňuje „pravidlo dvou“, podle kterého jakýkoli přidávaný kód musí splňovat maximálně dvě z tří podmínek: práce s neověřenými vstupy, použití nebezpečného programovacího jazyka (C/C++) a provádění s zvýšenými privilegii. Z tohoto pravidla vyplývá, že kód pro zpracování externích dat musí být buď omezen na minimální privilegium (izolován), nebo napsán v bezpečném programovacím jazyce.

Pro další zvýšení bezpečnosti kódové základny byl spuštěn projekt k prevenci vzniku chyb při práci s pamětí v kódové základně. Vymezeny jsou tři hlavní přístupy: vytvoření knihoven C++ s funkcemi pro bezpečné zacházení s pamětí a rozšíření oblasti použití sběrače odpadu, použití hardwarových mechanismů ochrany MTE (Memory Tagging Extension) a psaní komponentů v jazycích, které zajišťují bezpečné zacházení s pamětí (Java, Kotlin, JavaScript, Rust, Swift).

Očekává se, že činnost bude soustředěna do dvou směrů:

  • Značná změna procesu vývoje v C++, která nezahrnuje negativní dopad na výkon (další kontroly hranic a sběr odpadu). Místo raw-ukazatelů se navrhuje použít v kódu typ MiraclePtr, který umožňuje snížit exploatované chyby třídy use-after-free na neohrožující bezpečnostní selhání, bez zřetelného negativního vlivu na výkon, spotřebu paměti a stabilitu.
  • Použití jazyků zaměřených na kontrolu bezpečné správy paměti během kompilace (vyloučí negativní dopad na výkon, který je vlastností takových kontrol během běhu kódu, ale povede k dodatečným nákladům na zajištění interakce kódu v novém jazyce s kódem v C++).

Použití knihoven pro bezpečnou správu paměti je nejjednodušší, ale také méně efektivní metodou. Přepsání kódu do Rustu je považováno za nejefektivnější, ale zároveň i velmi nákladné řešení.

70 % problémů se zabezpečením v Chromiu způsobují chyby při práci s pamětí

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster