Новая уязвимость в движке Chrome V8: утечка Uninitialized Oddball обхода песочницы

robot
Генерация тезисов в процессе

Внутренняя информация о том, как обойти HardenProtect в Chrome V8 с помощью утечки Sentinel Value

Введение

Sentinel value - это специальное значение в алгоритмах, которое часто используется в циклических или рекурсивных алгоритмах в качестве условия завершения. В исходном коде Chrome широко используются такого рода значения. Недавно исследователи безопасности обнаружили, что через утечку объекта TheHole можно реализовать произвольное выполнение кода внутри песочницы Chrome. Команда Google быстро устранила эти два уязвимости в дикой природе.

Тем не менее, в V8 также существуют другие нативные объекты, которые не должны быть раскрыты в JavaScript. В этой статье будет обсуждаться новый объект: Uninitialized Oddball. Этот метод обхода впервые появился в Issue, представленном участником Project0, и в настоящее время все еще доступен в последней версии V8.

Стоит отметить, что этот метод обладает высокой универсальностью:

  1. В CVE-2021-30551 первым POC является утечка внутреннего неинициализированного элемента.

  2. POC для CVE-2022-1486 также напрямую раскрывает UninitializedOddball.

  3. Необработанный CVE также использовал этот метод.

Эти примеры достаточно ясно демонстрируют важность данной проблемы и заслуживают повторного рассмотрения программного обеспечения, которое может быть затронуто.

! Эксклюзивное раскрытие обхода Chrome v8 HardenProtect путем утечки сигнального значения

Сентинельное значение в V8

Большинство нативных объектов V8 определены в файле v8/src/roots/roots.h, они последовательно располагаются в памяти. Как только эти нативные объекты, которые не должны быть раскрыты, попадают в JavaScript, это может привести к выполнению произвольного кода внутри песочницы.

Мы можем утечь Uninitialized Oddball в JavaScript, модифицируя нативные функции V8. Конкретный способ заключается в изменении смещения относительно isolate в функции %TheHole(), чтобы она возвращала Uninitialized Oddball.

! Эксклюзивное раскрытие обхода Chrome v8 HardenProtect путем утечки сигнального значения

! Эксклюзивное раскрытие обхода Chrome v8 HardenProtect путем утечки значения Sentinel

Байпасный HardenType

Использование Uninitialized Oddball позволяет осуществлять произвольное чтение и запись. Ключевым моментом является то, что оптимизированная функция read проверяет только свойство prop объекта, но не проверяет значение obj.prop в качестве ключа. Это приводит к путанице типов при вычислении, что позволяет осуществлять произвольное чтение.

! Эксклюзивное раскрытие обхода Chrome v8 HardenProtect путем утечки значения Sentinel

! Эксклюзивное раскрытие обхода Chrome v8 HardenProtect путем утечки сигнального значения

! Эксклюзивное раскрытие обхода Chrome v8 HardenProtect путем утечки значения Sentinel

В архитектуре x86, из-за отсутствия сжатия адресов, произвольное чтение и запись осуществляется относительно всего процесса. Хотя отсутствуют удобства, предоставляемые сжатием адресов, из-за того, что некоторые крупные программные файлы имеют большой объем, все равно существует высокая вероятность чтения и записи целевого содержимого.

Эксклюзивное разоблачение обхода Chrome v8 HardenProtect через утечку Sentinel Value

Предупреждение PatchGap

Этот PatchGap касается не только Issue1352549, но также включает в себя несколько уязвимостей, таких как Issue1314616 и Issue1216437. После опубликования нового метода обхода сложность эксплуатации этих уязвимостей значительно снизилась. Хакерам почти не нужно проводить дополнительные исследования, чтобы завершить полную цепочку эксплуатации.

Эксклюзивное разоблачение обхода Chrome v8 HardenProtect через утечку Sentinel Value

Резюме

В V8 также есть много других значений Sentinel, которые могут иметь аналогичные проблемы. Это дает нам некоторые подсказки:

  1. Другие утечки uninitialized_Oddball также могут привести к V8 RCE?

  2. Должны ли такие вопросы официально рассматриваться как проблемы безопасности?

  3. Должен ли Sentinel value быть добавлен как переменная в тесте Fuzzer?

В любом случае, подобные проблемы значительно сокращают период, необходимый хакерам для полного использования уязвимости, и это заслуживает нашего серьезного внимания.

! Эксклюзивное раскрытие обхода Chrome v8 HardenProtect путем утечки сигнального значения

SENC1.44%
Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
  • Награда
  • 6
  • Репост
  • Поделиться
комментарий
0/400
ContractTestervip
· 08-15 05:19
Старая уязвимость, новая проблема снова появилась.
Посмотреть ОригиналОтветить0
BlockchainWorkervip
· 08-13 17:55
Уязвимость v8 очень серьезная.
Посмотреть ОригиналОтветить0
SocialFiQueenvip
· 08-12 12:23
Серьезные проблемы требуют следовать решению
Посмотреть ОригиналОтветить0
CryptoFortuneTellervip
· 08-12 12:15
Уязвимость ещё не исправлена.
Посмотреть ОригиналОтветить0
GamefiHarvestervip
· 08-12 12:12
Вау, V8 снова вышел на поверхность!
Посмотреть ОригиналОтветить0
CryptoSurvivorvip
· 08-12 12:11
Снова обошли песочницу
Посмотреть ОригиналОтветить0
  • Закрепить