Compania Google a analizat eficiența utilizării în codul scris în C++ a tipului MiraclePtr (raw_ptr<T>) în locul pointerilor obișnuiți pentru a proteja împotriva vulnerabilităților cauzate de accesarea zonelor de memorie deja eliberate (use-after-free). MiraclePtr oferă un wrapper pentru pointere, realizând verificări suplimentare și terminând brusc execuția în cazul detectării accesului la zonele de memorie eliberate. Suportul pentru MiraclePtr a fost inclus în mod implicit pe platformele Windows și Android în mai 2022 (în Chrome 102), iar pe platformele ChromeOS, Linux și macOS în iunie 2023. Protecția bazată pe MiraclePtr în Chrome se aplică tuturor proceselor, cu excepția procesului dedicat redării (renderer).
După studierea dinamicii raportării vulnerabilităților și a crash-urilor, precum și analiza incidentelor legate de securitate și rezultatelor testelor de fuzzing, s-a concluzionat că implementarea MiraclePtr a oferit protecție pentru 57% dintre vulnerabilitățile de tip use-after-free, datorită tranziției la utilizarea MiraclePtr pentru câmpurile claselor și parametrii apelurilor callback. De asemenea, se menționează că 5 din 6 vulnerabilități critice identificate în anul trecut în ramura stabilă a Chrome au fost identificate prin studierea rapoartelor de crashuri legate de utilizarea MiraclePtr.
Prețul aplicării MiraclePtr este creșterea consumului de memorie, deoarece pentru pointeri este necesară stocarea a încă 4 octeți cu un contor de referințe. Consumul de memorie principalului proces al browser-ului cu aplicarea MiraclePtr crește cu 5,5-8% în versiunile pentru sisteme desktop și cu 2% în versiunea pentru Android. Creșterea medie a consumului pentru toate procesele este estimată între 1-3%. De asemenea, utilizarea MiraclePtr a prezentat regresii individuale care conduc la scăderea performanței, dar fără a afecta metrici cheie, cum ar fi timpul de încărcare și redare a paginii. Dintre regresiile identificate, se remarcă o întârzire de 1,5% la prima introducere în Chrome OS, o încetinire de 1,5% la deschiderea tab-urilor pe platforma Android, precum și o creștere a probabilității întârzierii introducerii din cauza concurenței în fluxul principal (creșterea probabilității cu 10% în percentilele de 99%).
Sursa: opennet.ro
