Google ha analizzato l'efficacia dell'uso in codice C++ del tipo MiraclePtr (raw_ptr<T>) rispetto ai normali puntatori per proteggere da vulnerabilità causate da accessi a aree di memoria già liberate (use-after-free). MiraclePtr fornisce un wrapper per i puntatori, eseguendo controlli aggiuntivi e terminando il lavoro in caso di accesso a aree di memoria liberate. Il supporto per MiraclePtr è stato abilitato di default sulle piattaforme Windows e Android a maggio 2022 (in Chrome 102), e sulle piattaforme ChromeOS, Linux e macOS a giugno 2023. La protezione basata su MiraclePtr in Chrome si applica a tutti i processi, eccetto il processo di rendering (renderer).
Dopo aver analizzato la dinamica dei report sulle vulnerabilità e delle chiusure anomale, oltre all'esame di incidenti di sicurezza correlati e ai risultati dei test di fuzzing, si è concluso che l'implementazione di MiraclePtr ha fornito protezione contro il 57% delle vulnerabilità di tipo use-after-free, grazie alla conversione all'uso di MiraclePtr nei campi delle classi e nei parametri delle chiamate di callback. Inoltre, si segnala che 5 delle 6 vulnerabilità critiche identificate nell'ultimo anno nella versione stabile di Chrome sono state riconosciute grazie allo studio dei report sulle chiusure anomale legate all'uso di MiraclePtr.
Il prezzo dell'applicazione di MiraclePtr consiste in un aumento del consumo di memoria, poiché per i puntatori è necessario memorizzare ulteriori 4 byte con il contatore dei riferimenti. Il consumo di memoria del processo principale del browser con MiraclePtr aumenta del 5,5-8% nelle versioni per sistemi desktop e del 2% in quella per Android. L'aumento medio del consumo per tutti i processi è stimato tra l'1% e il 3%. Inoltre, sono state registrate regressioni isolate durante l'utilizzo di MiraclePtr, che portano a una riduzione delle prestazioni, ma non correlate a metriche chiave come il tempo di caricamento e di rendering della pagina. Tra le regressioni identificate si notano un ritardo dell'1,5% nel primo input su Chrome OS, un rallentamento dell'1,5% nell'apertura delle schede sulla piattaforma Android, e un aumento della probabilità di ritardo nell'input a causa della competizione nel thread principale (10% di incremento della probabilità nel 99º percentile).
Fonte: opennet.ru
