Алгоритм уже добавлен в Chrome 102 и скоро будет работать во всех продуктах Google.
На этой неделе Google поделилась подробностями о недавно представленной технологии для предотвращения использования use-after-free уязвимостей в браузере Chrome.
Ошибки use-after-free (использование после освобождения) возникают, когда программа не очищает указатель после освобождения памяти. Эти недостатки могут привести к произвольному выполнению кода, повреждению данных или отказу в обслуживании (DoS).
Уязвимости use-after-free также могут сочетаться с другими недостатками безопасности, что приводит к полной компрометации системы.
Эксплуатация use-after-free в Chrome может привести к выходу из песочницы. Для этого злоумышленник должен использовать ошибку в базовой ОС или уязвимость в привилегированной части Chrome, например, в процессе браузера.
По словам Google, один из способов уменьшить эту поверхность атаки — свести к минимуму количество интерфейсов операционной системы, доступных из песочницы процесса визуализации.
Google представил технологию MiraclePtr, которая переписывает кодовую базу для использования типа интеллектуального указателя «raw_ptr<T>», чтобы предотвратить использование ошибок use-after-free.
Алгоритм реализации MiraclePtr называется BackupRefPtr. Основываясь на подсчете ссылок, он поддерживает распределитель кучи Chrome, PartitionAlloc, который был разработан для содержания областей памяти в карантине, если их счетчик ссылок не равен 0.
Google уже включил BackupRefPtr для Windows и Android в Chrome 102 и ожидает, что MiraclePtr решит 50% проблем с использованием use-after-free.
Сейчас Google работает над включением BackupRefPtr в сетевых, служебных и графических процессах. Корпорация планирует включить BackupRefPtr на всех платформах, потому что это гарантирует, что данный указатель будет защищен для всех пользователей Chrome.
Компания также отмечает, что MiraclePtr увеличивает использование памяти до 6,5% в Windows и до 5% в Android. Память в карантине также составляет всего 0,01% использования процесса браузера, но хранение счетчика ссылок иногда может оказаться проблематичным.
По словам Google, MiraclePtr не был предназначен для диагностики, однако, уже помог предотвратить использование уязвимостей use-after-free и исправить ряд ошибок, которые ранее не были обнаружены.
Никаких овечек — только отборные научные факты