Il browser Chrome è stato trasferito al motore tipografico Skrifa, scritto in Rust

L'azienda Google ha migrato il browser Chrome alla libreria Skrifa, scritta in Rust, che offre funzionalità per la gestione dei font in formato OpenType. Skrifa implementa un sottoinsieme delle capacità del motore di font FreeType, necessario per la libreria 2D Skia utilizzata in Chrome e Chromium. Per sganciarsi dal motore FreeType, è stato creato un nuovo backend di font basato su Skrifa.

In Chrome 128, il backend scritto in Rust è stato attivato in modalità sperimentale per formati di font poco utilizzati, come CFF2 e font colorati. A partire dal rilascio di Chrome 133, il nuovo backend è stato attivato per tutti i web-font nelle versioni per le piattaforme Linux, Android e ChromeOS. Su Windows e macOS, il nuovo motore è attualmente utilizzato come fallback e viene applicato nel caso in cui il sistema non supporti il formato del font che il browser sta cercando di visualizzare.

Il codice Skrifa è stato sviluppato dagli ingegneri di Google all'interno dell'insieme di strumenti Fontations ed è rilasciato sotto le licenze MIT e Apache 2.0. Sono stati preparati circa 700 test unitari per verificare il corretto funzionamento di Skrifa. La libreria supporta la decodifica dei glifi nei formati glyf, CFF, CFF2, COLRv0, COLRv1, EBDT, CBDT e sbix, font variabili nei formati glyf, CFF2 e COLRv1, e il hinting dei font nei formati glyf, CFF e CFF2.

Oltre alla libreria Skrifa, che fornisce un'API per accedere ai metadati dei font e caricare i contorni dei glifi, il set di strumenti Fontations include librerie a basso livello per leggere, analizzare, modificare e creare dati sui font nel formato OpenType. Fontations è a sua volta parte del progetto Oxidize, creato per tradurre strumenti e librerie per la manipolazione del testo e dei font dai componenti in linguaggi Python (fonttools, fontmake, nanoemoji) e C++ (HarfBuzz, FreeType) a nuove implementazioni scritte in Rust.

Lo sviluppo dei componenti in Rust è stato avviato a causa dell'inefficienza nell'individuazione degli errori tramite test di fuzzing, poiché i formati dei font sono troppo complessi per coprire tutte le possibili combinazioni. Ad esempio, la scorsa settimana è stata identificata una vulnerabilità critica in FreeType, che consente l'esecuzione di codice durante l'elaborazione di font appositamente formattati a causa di un overflow del buffer. Oltre al motore FreeType, anche le dipendenze utilizzate, come bzip2, libpng e zlib, possono causare problemi di sicurezza.

L'uso di Rust ha notevolmente ridotto la probabilità di problemi nella gestione della memoria, migliorando la qualità del codice, riducendo il tempo necessario per correggere problemi di sicurezza e accelerando l'introduzione di miglioramenti nelle funzionalità di Chrome relative ai font. Secondo le statistiche di Google e Microsoft, circa il 70% delle vulnerabilità critiche è causato da problemi di gestione della memoria, che possono essere evitati utilizzando il linguaggio Rust senza blocchi unsafe.

Ad esempio, l'uso di Rust avrebbe potuto evitare i problemi precedentemente riscontrati nel codice FreeType, legati all'accesso a aree di memoria liberate, al superamento dei limiti del buffer, all'accesso agli array senza controllo degli indici, ai sovraccarichi di buffer, all'uso scorretto delle aree di memoria non inizializzate e agli errori di casting.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster