Новый метод эксплуатации уязвимости Chrome v8: утечка реализации Uninitialized Oddball для обхода песочницы

Обход защиты HardenProtect Chrome v8 с помощью утечки Sentinel Value

Введение

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

Кроме объекта TheHole, в v8 есть много других нативных объектов, которые не должны просочиться в JS. В этой статье будет обсуждаться объект Uninitialized Oddball, который по-прежнему доступен в последней версии V8. Стоит отметить, что этот метод обладает определенной универсальностью и встречался в нескольких уязвимостях.

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

Сенсорное значение в V8

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

Чтобы проверить этот метод, мы можем изменить нативные функции v8, чтобы утечь Uninitialized Oddball в JavaScript. В частности, можно изменить смещение относительно isolate в функции %TheHole().

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

Байпасный HardenType

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

Поскольку Uninitialized Oddball находится в памяти v8 в более раннем и более примитивном порядке, его легче подделать по сравнению с объектом TheHole, он является предпочтительным методом обхода исправления после его смягчения.

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

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

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

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

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

Уведомление о рисках PatchGap

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

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

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

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

Итог

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

  1. Другие утечки Uninitialized Oddball также легко реализуют RCE v8.

  2. Существует спор о том, следует ли такие вопросы официально рассматривать как вопросы безопасности.

  3. При проведении тестирования на нечеткость стоит рассмотреть возможность добавления различных значений Sentinel в качестве переменных.

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

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

SENC2.59%
Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
  • Награда
  • 9
  • Репост
  • Поделиться
комментарий
0/400
LiquiditySurfervip
· 22ч назад
Снова нашли маленькую уязвимость в v8? Эта волна не маленькая.
Посмотреть ОригиналОтветить0
SleepTradervip
· 08-08 08:00
Я снова наткнулся на уязвимость.
Посмотреть ОригиналОтветить0
digital_archaeologistvip
· 08-08 04:11
Снова придумали что-то новенькое tql
Посмотреть ОригиналОтветить0
MetaMaskVictimvip
· 08-06 23:06
Снова попал в ловушку v8.
Посмотреть ОригиналОтветить0
gas_fee_therapistvip
· 08-05 17:35
v8 снова провалился, безопасность становится все хуже.
Посмотреть ОригиналОтветить0
GreenCandleCollectorvip
· 08-05 17:34
Эта уязвимость довольно жесткая, да?
Посмотреть ОригиналОтветить0
LightningPacketLossvip
· 08-05 17:32
Этот баг снова исправлен. Нам нужно срочно починить наш сервер.
Посмотреть ОригиналОтветить0
ChainMelonWatchervip
· 08-05 17:32
А это... снова Долбежник выпустил новое.
Посмотреть ОригиналОтветить0
ImpermanentLossFanvip
· 08-05 17:31
Я в шоке, v8 действительно имеет такую уязвимость.
Посмотреть ОригиналОтветить0
Подробнее
  • Закрепить