Google také sází na Rust a oznamuje jeho zařazení do Chromia

Chróm

Rust také dorazil na Chromium

Google nedávno v publikaci oznámil zařazení programovacího jazyka Rust mezi jazyky povolené v kódu projektu Chromium.

Uvádí se, že pro začlenění existuje řada požadavků na knihovny Rust třetích stran, které vyžadují integraci do kódové základny Chromia, například knihovna musí překonávat své protějšky v rychlosti, spotřebě paměti a stabilitě, nebo musí být jedinou implementací určité technologie.

Knihovny Rust jsou také přijatelné, pokud lze funkci spustit v privilegovaném procesu nebo když používání knihovny snižuje riziko chyb ve srovnání s jinými knihovnami nebo kódem C++. Dosud nebylo rozhodnuto, které knihovny lze do Chromia zahrnout.

Toto rozhodnutí bylo učiněno v rámci iniciativy, jejímž cílem je zabránit objevování chyb paměti v kódové základně Chromu. Podle statistik zveřejněných před dvěma lety je 70 % kritických a nebezpečných bezpečnostních problémů v Chromu způsobeno chybami paměti.

Používání jazyka Rust, který se zaměřuje na bezpečnou správu paměti a poskytuje automatickou správu paměti, sníží riziko zranitelností způsobených problémy, jako je přístup k oblasti paměti po jejím uvolnění a přetečení vyrovnávací paměti.

Bezpečná manipulace s pamětí je v Rustu zajištěna v době kompilace kontrolou referencí, sledováním vlastnictví objektu a životnosti objektu (rozsahu) a také vyhodnocením správnosti přístupu do paměti během provádění kódu. Rust také poskytuje ochranu proti přetečení celého čísla, vyžaduje povinnou inicializaci hodnot proměnných před použitím, lépe zpracovává chyby ve standardní knihovně, standardně prosazuje koncept neměnných referencí a proměnných, nabízí silné statické typování pro minimalizaci logických chyb.

Pomocí Rustu bude snazší a bezpečnější aplikovat „pravidlo udělat“, které Google používá k udržení své kódové základny v bezpečí.

Podle tohoto pravidla nesmí žádný přidaný kód splňovat více než dvě ze tří podmínek: pracovat s neověřeným vstupem, používat nebezpečný programovací jazyk (C/C++) a spouštět se zvýšenými oprávněními. Z tohoto pravidla vyplývá, že kód pro manipulaci s externími daty musí být zredukován na nejmenší oprávnění (izolován) nebo napsán v bezpečném programovacím jazyce.

V případě Rustu, který byl původně vyvinut s ohledem na prohlížeč, lze integraci se stávajícím kódem provést bez použití IPC a s menší složitostí zorganizovat ochranu proti chybám paměti, což urychlí proces vývoje (vyžaduje psaní méně kódu a snadnější kontrola) a snížení počtu chyb souvisejících se zabezpečením.

Aby se zjednodušila integrace kódu Rustu s existujícím kódem C++ a vyhnuly se rizikům a omezením spojeným s integrací, bylo rozhodnuto omezit jednosměrnou interakci: volání Rustu z C++ (tj. kód Rustu lze volat pouze z kódu C++) prostřednictvím funkcí API, ale nikoli smíchání s kódem C++, což také umožní udržet strom závislostí pod kontrolou.

Druhým omezením je pouze podpora knihoven třetích stran, které přicházejí ve formě samostatných komponent, které nejsou vázány na Chromium a mají API orientované na úkoly.

Kromě použití Rustu k blokování zneužití zranitelností paměti use-after-free, počínaje vydáním Chrome 102, začal kód C++ místo toho používat typ MiraclePtr (raw_ptr). paměťové oblasti a bloky, pokud jsou takové přístupy nalezeny.

Odhaduje se, že dopad nové metody ochrany na výkon a spotřebu paměti je zanedbatelný.

Nakonec je třeba zmínit, že stále neexistují žádné plány na přepsání stávajícího kódu v Rustu , ale od nynějška bude povolena integrace knihoven třetích stran napsaných v Rustu do kódové základny.

Systém sestavení již přidal nástroje pro kompilaci kódu Rust, spouštění testů a integraci komponent Rust s kódem C++. Očekává se, že Rust kód se objeví jako součást verzí Chrome příští rok.

Zdroj: https://security.googleblog.com


Přidat jako preferovaný zdroj v Googlu