Google this week has shared more information on recently introduced technology meant to reduce the exploitability of use-after-free vulnerabilities in the Chrome browser.
A type of memory corruption bugs, use-after-free issues occur when a program does not clear the pointer after freeing memory allocation. These flaws could lead to arbitrary code execution, data corruption, or denial of service.
Use-after-free vulnerabilities may also be combined with other security flaws, leading to complete system compromise.
The exploitation of use-after-free issues in Chrome can result in a sandbox escape. For this to happen, however, the attacker needs to target either a bug in the underlying operating system, or a flaw in a privileged part of Chrome, such as the browser process.
According to Google, one way to reduce this attack surface is to minimize the number of operating system interfaces accessible from within the renderer process sandbox.
For security flaws in the browser process, Google has introduced MiraclePtr, which rewrites the codebase to use a smart pointer type called ‘raw_ptr<T>’ to prevent the exploitation of use-after-free bugs.
The MiraclePtr implementation algorithm that Google has opted for is called BackupRefPtr. Based on reference counting, it supports Chrome’s heap allocator, PartitionAlloc, which was designed to keep memory regions quarantined, unless their reference count is 0.
“Quarantined memory is poisoned to further reduce the likelihood that use-after-free accesses will result in exploitable conditions, and in hope that future accesses lead to an easy-to-debug crash, turning these security issues into less-dangerous ones,” Google explains.
Google has already enabled BackupRefPtr for Windows and Android in Chrome 102 and says it expects for MiraclePtr to protect roughly 50% of use-after-free issues against exploitation.
“We are now working on enabling BackupRefPtr in the network, utility and GPU processes, and for other platforms. In the end, our goal is to enable BackupRefPtr on all platforms because that ensures that a given pointer is protected for all users of Chrome,” the internet giant says.
The company also notes that MiraclePtr comes with a memory usage increase of up to 6.5% on Windows and up to 5% on Android. The quarantined memory is not an issue either, as it represents only 0.01% of the browser process usage, but storing the reference count may prove problematic sometimes.
“Note that the primary goal of MiraclePtr is to prevent exploitation of use-after-free bugs. Although it wasn’t designed for diagnosability, it already helped us find and fix a number of bugs that were previously undetected. We have ongoing efforts to make MiraclePtr crash reports even more informative and actionable,” Google concludes.