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

Анализ значения Sentinel в движке Google Chrome V8 и его угроз безопасности

Sentinel value — это специальное значение в алгоритме, часто используемое в качестве условия завершения цикла или рекурсии. Исходный код Chrome содержит несколько Sentinel value, некоторые из которых, если они утекут в среду JavaScript, могут привести к проблемам с безопасностью. В этой статье будет рассмотрен метод обхода механизма HardenProtect Chrome V8 с использованием утекшего объекта Uninitialized Oddball.

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

Файл roots.h исходного кода V8 определяет множество нативных объектов, которые расположены в памяти последовательно. Если эти нативные объекты, которые не должны быть раскрыты JavaScript, будут скомпрометированы, это может привести к побегу из песочницы. Утечка объекта TheHole в прошлом является典型ным примером.

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

JavaScript print(%DebugPrint(%TheHole())); // Вывод:Неинициализированное значение

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

Обойти защиту HardenType

Используя Uninitialized Oddball, можно создать следующий код PoC для реализации произвольного чтения:

JavaScript функция read(obj, idx) { вернуть obj[idx]; }

let uninitialized = %TheHole(); пусть arr = [1.1]; %ПодготовитьФункциюДляОптимизации(читать); read(arr, 0); read(arr, 0); %ОптимизироватьФункциюНаСледующемВызове(читать); read(arr, 0);

print(read(неинициализирован, 0x1234n));

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

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

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

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

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

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

Анализ показывает, что некоторые программы, такие как Skype, могут иметь проблему PatchGap, и этот уязвимость еще не исправлена. Хакеры могут использовать эту уязвимость для быстрого завершения полной цепочки эксплуатации.

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

Кроме того, после открытия нового метода обхода, эксплуатация некоторых исторических уязвимостей (, таких как Issue1314616 и Issue1216437), значительно упростилась. Рекомендуется производителям пересмотреть связанные с уязвимостями риски безопасности.

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

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

Резюме

В V8 есть много других значений Sentinel, которые стоят дальнейшего изучения. Рекомендуется рассмотреть возможность добавления таких переменных, как %TheHole/Uninitialized_Oddball, в Fuzzer для поиска новых примитивов эксплуатации. Независимо от того, считается ли эта категория проблем официально проблемой безопасности, она может значительно сократить полный цикл эксплуатации для хакеров.

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

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

SENC10.53%
Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
  • Награда
  • 5
  • Репост
  • Поделиться
комментарий
0/400
ParanoiaKingvip
· 14ч назад
Это снова опасное место.
Посмотреть ОригиналОтветить0
WenMoon42vip
· 14ч назад
Снова Глубина исследования, а
Посмотреть ОригиналОтветить0
CryptoSourGrapevip
· 14ч назад
Оказывается, здесь тоже есть ямы.
Посмотреть ОригиналОтветить0
ForkItAllDayvip
· 14ч назад
Новые идеи для переполнения стека
Посмотреть ОригиналОтветить0
Fren_Not_Foodvip
· 14ч назад
Обойти уязвимость слишком круто!
Посмотреть ОригиналОтветить0
  • Закрепить