Исследование утечки Sentinel Value в движке Chrome V8 и анализ рисков безопасности

Исследование рисков безопасности, связанных с утечкой Sentinel Value в движке Chrome V8

Введение

Значение-сентинель — это специальное значение в алгоритмах, обычно используемое в качестве условия завершения в циклических или рекурсивных алгоритмах. Этот специальный значение широко используется в исходном коде Chrome. Недавно исследователи с помощью утечки объекта TheHole реализовали выполнение произвольного кода в песочнице для CVE-2021-38003 и CVE-2022-1364. Команда Google быстро исправила эти два уязвимости.

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

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

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

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

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

Обход защиты HardenType

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

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

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

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

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

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

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

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

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

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

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

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

Резюме

В этой статье кратко обсуждается метод реализации произвольного чтения примитивов через утечку uninitialized_Oddball в Sentinel value. В V8 также существует множество других Sentinel value, которые могут привести к аналогичным проблемам безопасности. Это дает нам следующие выводы:

  1. Другие uninitialized_Oddball утечки также могут легко привести к удаленному выполнению кода V8.

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

  3. Рассмотрите возможность добавления таких значений-сентинелов, как %TheHole/uninitialized_Oddball, в fuzzer в качестве переменных для извлечения других уязвимостей.

Независимо от того, рассматриваются ли такие вопросы как официальные проблемы безопасности, они значительно сокращают время, необходимое хакерам для полного использования уязвимости.

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

SENC-2.75%
Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
  • Награда
  • 6
  • Репост
  • Поделиться
комментарий
0/400
FUD_Vaccinatedvip
· 07-26 03:20
Снова черный Google, эта дыра слишком частая 8
Посмотреть ОригиналОтветить0
MetaverseLandlordvip
· 07-24 11:22
Вот черт, у других браузеров такие высококлассные уязвимости.
Посмотреть ОригиналОтветить0
SerNgmivip
· 07-23 05:34
Настоящий v8 вызывает у меня головную боль...
Посмотреть ОригиналОтветить0
GateUser-a606bf0cvip
· 07-23 05:34
Эмм? Снова Chrome творит что-то?
Посмотреть ОригиналОтветить0
StablecoinAnxietyvip
· 07-23 05:15
Безопасные уязвимости браузера так захватывающи!
Посмотреть ОригиналОтветить0
PonziDetectorvip
· 07-23 05:11
Вот это да, у V8 такая уязвимость!
Посмотреть ОригиналОтветить0
  • Закрепить