Google hat die Wirksamkeit der Verwendung des Typs MiraclePtr (raw_ptr) in C++-Code analysiert ) anstelle regulärer Zeiger zum Schutz vor Schwachstellen, die durch den Zugriff auf bereits freigegebene Speicherbereiche entstehen (Use-after-free). MiraclePtr bietet einen Wrapper für Zeiger, der zusätzliche Prüfungen durchführt und abstürzt, wenn er Zugriffe auf freigegebene Speicherbereiche erkennt. Die MiraclePtr-Unterstützung wurde im Mai 2022 standardmäßig auf Windows- und Android-Plattformen (in Chrome 102) und im Juni 2023 auf ChromeOS-, Linux- und macOS-Plattformen aktiviert. Der auf MiraclePtr basierende Schutz in Chrome wird auf alle Prozesse außer dem Renderer-Prozess angewendet.
Nach der Untersuchung der Dynamik des Versendens von Berichten über Schwachstellen und Abstürze sowie der Analyse von Sicherheitsvorfällen und der Fuzzing-Testergebnisse kam man zu dem Schluss, dass die Implementierung von MiraclePtr dank der Umstellung auf Using Schutz vor 57 % der Use-After-Free-Schwachstellen bot Felder der MiraclePtr-Klasse und Callback-Aufrufparameter. Darüber hinaus wird erwähnt, dass 5 der 6 kritischen Schwachstellen, die im letzten Jahr im stabilen Zweig von Chrome identifiziert wurden, durch die Untersuchung von Absturzberichten im Zusammenhang mit der Verwendung von MiraclePtr identifiziert wurden.
Die Kosten für die Verwendung von MiraclePtr sind ein erhöhter Speicherverbrauch, da Zeiger zusätzlich 4 Byte Referenzzählerspeicher benötigen. Der Speicherverbrauch des Hauptbrowserprozesses bei Verwendung von MiraclePtr steigt bei Desktop-Builds um 5.5–8 % und bei der Android-Version um 2 %. Der durchschnittliche Verbrauchsanstieg für alle Prozesse wird auf 1-3 % geschätzt. Darüber hinaus kam es bei der Verwendung von MiraclePtr zu vereinzelten Leistungsrückgängen, die nicht mit wichtigen Kennzahlen wie Seitenlade- und Renderzeiten in Zusammenhang standen. Unter den identifizierten Regressionen gibt es eine Verzögerung von 1.5 % bei der ersten Eingabe auf Chrome OS, eine Verlangsamung um 1.5 % beim Öffnen von Tabs auf der Android-Plattform und eine erhöhte Wahrscheinlichkeit einer Eingabeverzögerung aufgrund von Konflikten im Hauptthread (ein 10 % Anstieg der Wahrscheinlichkeit beim 99. Perzentil).
Source: opennet.ru
