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

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

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

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

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

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

  1. CVE-2021-30551 впервые представил poc для утечки internal uninitialized oddball.

  2. В poc CVE-2022-1486 также прямо раскрывается UninitializedOddball.

  3. Issue1352549( еще не назначен CVE) показал полный код эксплуатации.

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

Значение Sentinel в V8

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

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

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

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

Упрощая код, представленный в Issue1352549, мы можем реализовать относительно произвольное чтение в версии V8 11.0.0:

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

Когда %TheHole() возвращает UninitializedOddball, оптимизированная функция чтения JavaScript будет напрямую вычислять смещение согласно семантике JavaScript, не проверяя значение obj.prop, что приведет к смешению типов и обеспечит произвольное чтение.

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

Похожий на объект TheHole, uninitialized_oddball располагается в памяти V8 раньше и является более примитивным, что делает его более легким для подделки. После того как меры по смягчению TheHole были обойдены, этот метод стал предпочтительным обходным вариантом.

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

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

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

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

Хотя Skype активировал ASLR, из-за большого размера файла, если его поместить прямо в 4 ГБ памяти, злоумышленнику достаточно будет произвести чтение и запись по определенному адресу, чтобы с большой вероятностью получить доступ к содержимому файлов Skype. В сочетании с традиционными методами, такими как анализ PE, завершить всю цепочку эксплуатации уязвимости не представляет особой сложности.

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

Этот патч PatchGap не только касается Issue1352549, но и открытие нового метода обхода значительно снизило сложность эксплуатации таких уязвимостей, как CVE-2022-1486 и CVE-2021-30551. Злоумышленникам почти не требуется дополнительное изучение, чтобы полностью использовать любую уязвимость, связанную с утечкой uninitialized_oddball.

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

Резюме

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

Это дает нам следующие выводы:

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

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

  3. Если рассматривать это как официальную проблему безопасности, необходимо ли добавлять такие sentinel значения, как %TheHole/uninitialized_Oddball, в fuzzer как переменные для выявления других уязвимостей?

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

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

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

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

Посмотреть Оригинал
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
  • Награда
  • 4
  • Поделиться
комментарий
0/400
BloodInStreetsvip
· 4м назад
покупайте падения не так хорошо, как купить дом… дыры глубже, чем рынок
Посмотреть ОригиналОтветить0
GateUser-afe07a92vip
· 07-12 17:35
Что делает Гугл, что это утекло?
Посмотреть ОригиналОтветить0
SelfRuggervip
· 07-12 17:34
Похоже, что в этом году V8 предстоит что-то грандиозное.
Посмотреть ОригиналОтветить0
SchrodingerGasvip
· 07-12 17:16
Спит целую ночь, а все еще работает v8, кто заплатит за этот газ?
Посмотреть ОригиналОтветить0
  • Закрепить