Google hat die EffektivitĂ€t der Verwendung des Typs MiraclePtr (raw_ptr<T>) in C++-Code anstelle von herkömmlichen Zeigern zur Abwehr von Schwachstellen, die durch den Zugriff auf bereits freigegebene Speicherbereiche (use-after-free) verursacht werden, analysiert. MiraclePtr bietet eine Wrapper-Implementierung fĂŒr Zeiger, die zusĂ€tzliche ĂberprĂŒfungen durchfĂŒhrt und die AusfĂŒhrung beendet, wenn der Zugriff auf freigegebene Speicherbereiche festgestellt wird. Die UnterstĂŒtzung fĂŒr MiraclePtr wurde im Mai 2022 (in Chrome 102) standardmĂ€Ăig auf Windows- und Android-Plattformen aktiviert, und im Juni 2023 auf ChromeOS, Linux und macOS. Die auf MiraclePtr basierende Absicherung in Chrome wird fĂŒr alle Prozesse auĂer dem fĂŒr das Rendering verantwortlichen Prozess angewendet.
Nach der Analyse der Dynamik der Berichterstattung ĂŒber SicherheitsanfĂ€lligkeiten und unerwartete ProgrammabstĂŒrze sowie der Untersuchung sicherheitsrelevanter VorfĂ€lle und der Ergebnisse von Fuzzing-Tests wurde festgestellt, dass die Implementierung von MiraclePtr Schutz vor 57 % der Use-after-free-SicherheitsanfĂ€lligkeiten bietet, dank der Umstellung der Klassenfelder und der Parameter von Callback-Aufrufen auf MiraclePtr. Zudem wird erwĂ€hnt, dass 5 der 6 im vergangenen Jahr identifizierten kritischen SicherheitsanfĂ€lligkeiten in der stabilen Version von Chrome durch die Analyse der Berichte ĂŒber unerwartete ProgrammabstĂŒrze, die im Zusammenhang mit MiraclePtr standen, identifiziert wurden.
Die Verwendung von MiraclePtr erhöht den Speicherverbrauch, da fĂŒr Zeiger zusĂ€tzliche 4 Bytes mit einem ReferenzzĂ€hler gespeichert werden mĂŒssen. Der Speicherverbrauch des Hauptprozesses des Browsers steigt bei der Verwendung von MiraclePtr um 5,5-8 % in Desktop-Builds und um 2 % in der Android-Version. Der durchschnittliche Anstieg des Verbrauchs fĂŒr alle Prozesse wird auf 1-3 % geschĂ€tzt. DarĂŒber hinaus wurden bei der Verwendung von MiraclePtr einzelne Regressionen festgestellt, die zu einer verringerten Leistung fĂŒhren, aber nicht mit den SchlĂŒsselmetriken wie Ladezeit und Seitenzeichnung zusammenhĂ€ngen. Zu den identifizierten Regressionen zĂ€hlen eine Verzögerung von 1,5 % bei der ersten Eingabe in Chrome OS, eine Verlangsamung um 1,5 % beim Ăffnen von Tabs auf der Android-Plattform sowie eine erhöhte Wahrscheinlichkeit von Eingabeverzögerungen aufgrund von Konkurrenz im Hauptthread (Anstieg der Wahrscheinlichkeit um 10 % im 99. Perzentil).
Quelle: opennet.ru
