Google heeft de effectiviteit geanalyseerd van het gebruik van het type MiraclePtr (raw_ptr<T>) in C++-code in plaats van gewone pointers ter bescherming tegen kwetsbaarheden veroorzaakt door toegang tot al vrijgegeven geheugengebieden (use-after-free). MiraclePtr biedt een wrapper om pointers die extra controles uitvoert en de uitvoering abrupt beëindigt wanneer toegang tot vrijgegeven geheugengebieden wordt gedetecteerd. Ondersteuning voor MiraclePtr werd standaard ingeschakeld op Windows- en Android-platforms in mei 2022 (in Chrome 102) en op ChromeOS, Linux en macOS in juni 2023. De bescherming op basis van MiraclePtr in Chrome wordt toegepast op alle processen, behalve het proces dat verantwoordelijk is voor rendering (renderer).
Na bestudering van de dynamiek van het indienen van rapporten over kwetsbaarheden en crashes, evenals het analyseren van veiligheidsincidenten en de resultaten van fuzzing-tests, werd geconcludeerd dat de implementatie van MiraclePtr bescherming bood tegen 57% van de kwetsbaarheden in de categorie use-after-free, dankzij de vertaling naar het gebruik van MiraclePtr voor class-velden en callback-parameters. Daarnaast wordt vermeld dat 5 van de 6 kritieke kwetsbaarheden die vorig jaar in de stabiele tak van Chrome zijn gedetecteerd, zijn geïdentificeerd door het bestuderen van rapporten over crashes die verband hielden met het gebruik van MiraclePtr.
De prijs van het gebruik van MiraclePtr is een verhoogd geheugengebruik, omdat voor pointers 4 extra bytes met een referentieteller moeten worden opgeslagen. Het geheugengebruik van het hoofdproces van de browser bij het toepassen van MiraclePtr neemt met 5,5-8% toe in builds voor desktop-systemen en met 2% in de Android-versie. De gemiddelde verhoging van het geheugengebruik voor alle processen wordt geschat op 1-3%. Bovendien zijn er bij het gebruik van MiraclePtr enkele regressies opgetreden die leiden tot verminderde prestaties, maar die niet gerelateerd zijn aan belangrijke metrics zoals laadtijd en renderingtijd van de pagina. Van de ontdekte regressies wordt een vertraging van 1,5% bij de eerste invoer in Chrome OS gemeld, een vertraging van 1,5% bij het openen van tabbladen op het Android-platform, evenals een verhoogde kans op invoervertraging door concurrentie in de hoofdthread (verhoogde kans met 10% in het 99e percentiel).
Bron: opennet.ru
