A Chrome böngésző átállt a Rust nyelven írt Skrifa betűtípus-motorra.

A Google a Chrome böngészőt a Rust nyelven írt Skrifa könyvtárra váltotta, amely lehetőséget biztosít az OpenType formátumú betűtípusok feldolgozására. A Skrifa a FreeType betűtípus-motor képességeinek egy részhalmazát valósítja meg, amely szükséges a Chrome és Chromium által használt 2D Skia könyvtárhoz. Az új betűtípusközvetítő, amely a Skrifán alapul, a Skia könyvtárt a FreeType motorhoz való kötöttségtől mentesíti.

A Chrome 128-ban a Rust nyelven írt közvetítőt kísérleti módban aktiválták a ritkán használt betűtípusformátumokhoz, mint például a CFF2 és a színes betűtípusok. A Chrome 133 kiadásától kezdődően az új közvetítő minden weberus számára aktív a Linux, Android és ChromeOS platformokra készült verziókban. A Windows és macOS platformokon az új motor egyelőre tartalék rendszerként van használatban, és akkor aktiválódik, amikor a rendszer nem támogatja azokat a betűtípusformátumokat, amelyeket a böngésző megpróbál megjeleníteni.

A Skrifa kódját a Google mérnökei a Fontations eszközkészlet keretében fejlesztették ki, és MIT valamint Apache 2.0 licencek alatt érhető el. A Skrifa működésének ellenőrzésére körülbelül 700 egység tesztet készítettek. A könyvtár támogatja a glyf, CFF, CFF2, COLRv0, COLRv1, EBDT, CBDT és sbix formátumú betűkódok dekódolását, a glyf, CFF2 és COLRv1 formátumú variabilizált betűtípusokat, valamint a glyf, CFF és CFF2 formátumú betűtípusok hintingjét.

A Skrifa könyvtáron kívül, amely API-t biztosít a betűtípusok metadatainak eléréséhez és a glyph kontúrok betöltéséhez, a Fontations eszközkészlet alacsony szintű könyvtárakat is tartalmaz az OpenType formátumú betűtípusadatok olvasására, elemzésére, módosítására és létrehozására. A Fontations a Rust nyelvre való átállásra irányuló Oxidize projekt része, amely a Python (fonttools, fontmake, nanoemoji) és C++ (HarfBuzz, FreeType) nyelvű tárgyak és könyvtárak újbóli megvalósítására irányul.

A Rust nyelven történő komponensfejlesztés a hibák felfedezésének hatékonyságának hiánya miatt indult fuzz-tesztek alkalmazásakor, mivel a betűformátumok túl bonyolultak ahhoz, hogy minden lehetséges kombinációt lefedjenek. Például a múlt héten a FreeType-ban kritikus sebezhetőséget azonosítottak, amely lehetővé tette a kód futtatását a speciálisan kialakított betűtípusok kezelése során egy puffer túlcsordulás következtében. A FreeType motor mellett a használt függőségek is problémákat okozhatnak a biztonság szempontjából, mint például a bzip2, libpng és zlib.

A Rust használata jelentősen csökkentette a memóriahasználat során felmerülő problémák valószínűségét, javította a kód minőségét, csökkentette a biztonsági problémák javítására fordított időt, és felgyorsította a Chrome betűtípuskezelési lehetőségeinek fejlesztését. A Google és a Microsoft statisztikái szerint a veszélyes sérülékenységek körülbelül 70%-a memóriahasználati problémákból adódik, amelyek elkerülhetők a Rust nyelv használatával, anélkül hogy unsafe blokkokra lenne szükség.

Például a Rust használata lehetővé tette volna az FreeType kódban korábban felmerült problémák elkerülését, amelyek az felszabadított memória területeinek elérésével, a buffer túllépésével, index ellenőrzés nélküli tömbhozzáférésekkel, egész számok túlcsordulásával, nem nullázott memória területek helytelen használatával és típuskényszerítési hibákkal kapcsolatosak.

Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster