Безопасные риски, вызванные утечкой Sentinel Value в движке Chrome V8
Значение Sentinel — это специальное значение в алгоритмах, которое часто используется в качестве условия завершения циклов или рекурсивных алгоритмов. В исходном коде Chrome существует несколько значений Sentinel, некоторые из которых не должны быть раскрыты в среде JavaScript. В данной статье будет рассмотрено использование утечки объекта Uninitialized Oddball для обхода механизма HardenProtect движка Chrome V8.
Значение Sentinel в V8
Большинство встроенных объектов V8 определены в файле v8/src/roots/roots.h, эти объекты расположены в памяти рядом друг с другом. Как только эти встроенные объекты, которые не должны быть доступны JavaScript, будут раскрыты, это может привести к выполнению произвольного кода в песочнице.
Мы можем раскрыть Uninitialized Oddball в JavaScript, изменив нативные функции V8. Например, изменив смещение функции %TheHole(), чтобы она возвращала объект Uninitialized Oddball.
Обход защиты HardenType
Используя утечку объекта Uninitialized Oddball, можно создать следующий код для реализации относительно произвольного чтения:
JavaScript
функция read(obj, idx) {
вернуть obj[idx];
}
для (let i = 0; i < 100000; i++) {
read(arr, 0);
}
%ОптимизироватьФункциюНаСледующемВызове(читать);
пусть result = read(uninitialized_oddball, 0x12345);
%DebugPrint(результат);
Оптимизированный ассемблерный код функции read показывает, что при вычислении смещения массива не проверяется тип значения obj.prop, и вычисление выполняется напрямую по семантике JavaScript, что приводит к путанице типов и позволяет произвольное чтение.
Рекомендуется исправить оптимизированную функцию, добавив проверку массива map при возврате элементов массива, чтобы избежать прямого вычисления смещения возвращаемого значения.
Уязвимость в настоящее время все еще не исправлена в некоторых программах, использующих устаревшую версию движка V8, таких как Skype (. На платформе x86, из-за отсутствия сжатия адресов, произвольное чтение и запись могут производиться напрямую относительно всего процесса.
Публикация этого нового метода обхода снизила сложность эксплуатации связанных уязвимостей. Хакеры почти не нуждаются в дополнительном исследовании, чтобы полностью использовать утечку уязвимости Uninitialized Oddball.
! [Эксклюзивное раскрытие обхода Chrome v8 HardenProtect путем утечки значения Sentinel])https://img-cdn.gateio.im/webp-social/moments-1e3fda77c04bceafdcc40413824a5d37.webp(
Итог
В V8 также существуют другие значения Sentinel, которые могут привести к аналогичным проблемам безопасности. Рекомендуется провести дальнейшие исследования:
Могут ли другие Uninitialized Oddball утечки также реализовать RCE V8
Следует ли официально считать такие вопросы уязвимостями безопасности
Нужно ли добавлять значение Sentinel в качестве переменной в тестировании Fuzzer
В любом случае, такие проблемы значительно сокращают период, необходимый хакерам для достижения полной эксплуатации, и заслуживают серьезного внимания.
![Эксклюзивное разоблачение обхода защиты Chrome v8 HardenProtect через утечку Sentinel Value])https://img-cdn.gateio.im/webp-social/moments-ed89289bebf59d4b27f5bffb5511a8c5.webp(
![Эксклюзивное разоблачение обхода защиты HardenProtect в Chrome v8 через утечку Sentinel Value])https://img-cdn.gateio.im/webp-social/moments-0e52075003a8ee2ca492a5fc9f35c36b.webp(
![Эксклюзивное разоблачение обхода Chrome v8 HardenProtect через утечку Sentinel Value])https://img-cdn.gateio.im/webp-social/moments-230537e420d579aabd89bdd168b20878.webp(
! [Эксклюзивное раскрытие обхода Chrome v8 HardenProtect путем утечки значения Sentinel])https://img-cdn.gateio.im/social/moments-506159c94c9e0988552cbd13d971e1(
![Эксклюзивное разоблачение обхода защиты Chrome v8 HardenProtect через утечку Sentinel Value])https://img-cdn.gateio.im/webp-social/moments-e9e2000fd501b69ee3ee643a459a26dd.webp(
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
18 Лайков
Награда
18
6
Поделиться
комментарий
0/400
GateUser-bd883c58
· 08-04 04:05
Этот уязвимость настолько жесткая, что немного пугает.
Посмотреть ОригиналОтветить0
SerumDegen
· 08-02 17:19
gm френ... еще одна утечка альфа обнаружена в v8, мы все ректы
Посмотреть ОригиналОтветить0
ThatsNotARugPull
· 08-02 17:19
Эта кастрюля Chrome пусть будет с тобой, тебе уже показали, где вырыли отверстие.
Посмотреть ОригиналОтветить0
RektButStillHere
· 08-02 17:09
Почему защита песочницы такая слабая?
Посмотреть ОригиналОтветить0
CryptoNomics
· 08-02 17:01
*вздох* еще одна уязвимость, подтверждающая, что мой регрессионный анализ модели безопасности Chrome был статистически значимым... но никто не слушал
Уязвимость утечки Sentinel Value в V8-движке, позволяющая обойти безопасность HardenProtect
Безопасные риски, вызванные утечкой Sentinel Value в движке Chrome V8
Значение Sentinel — это специальное значение в алгоритмах, которое часто используется в качестве условия завершения циклов или рекурсивных алгоритмов. В исходном коде Chrome существует несколько значений Sentinel, некоторые из которых не должны быть раскрыты в среде JavaScript. В данной статье будет рассмотрено использование утечки объекта Uninitialized Oddball для обхода механизма HardenProtect движка Chrome V8.
Значение Sentinel в V8
Большинство встроенных объектов V8 определены в файле v8/src/roots/roots.h, эти объекты расположены в памяти рядом друг с другом. Как только эти встроенные объекты, которые не должны быть доступны JavaScript, будут раскрыты, это может привести к выполнению произвольного кода в песочнице.
Мы можем раскрыть Uninitialized Oddball в JavaScript, изменив нативные функции V8. Например, изменив смещение функции %TheHole(), чтобы она возвращала объект Uninitialized Oddball.
Обход защиты HardenType
Используя утечку объекта Uninitialized Oddball, можно создать следующий код для реализации относительно произвольного чтения:
JavaScript функция read(obj, idx) { вернуть obj[idx]; }
пусть arr = [1.1, 2.2, 3.3]; пусть uninitialized_oddball = %TheHole();
для (let i = 0; i < 100000; i++) { read(arr, 0);
}
%ОптимизироватьФункциюНаСледующемВызове(читать);
пусть result = read(uninitialized_oddball, 0x12345); %DebugPrint(результат);
Оптимизированный ассемблерный код функции read показывает, что при вычислении смещения массива не проверяется тип значения obj.prop, и вычисление выполняется напрямую по семантике JavaScript, что приводит к путанице типов и позволяет произвольное чтение.
Рекомендуется исправить оптимизированную функцию, добавив проверку массива map при возврате элементов массива, чтобы избежать прямого вычисления смещения возвращаемого значения.
! Эксклюзивное раскрытие обхода Chrome v8 HardenProtect путем утечки значения Sentinel
Уведомление о рисках PatchGap
Уязвимость в настоящее время все еще не исправлена в некоторых программах, использующих устаревшую версию движка V8, таких как Skype (. На платформе x86, из-за отсутствия сжатия адресов, произвольное чтение и запись могут производиться напрямую относительно всего процесса.
Публикация этого нового метода обхода снизила сложность эксплуатации связанных уязвимостей. Хакеры почти не нуждаются в дополнительном исследовании, чтобы полностью использовать утечку уязвимости Uninitialized Oddball.
! [Эксклюзивное раскрытие обхода Chrome v8 HardenProtect путем утечки значения Sentinel])https://img-cdn.gateio.im/webp-social/moments-1e3fda77c04bceafdcc40413824a5d37.webp(
Итог
В V8 также существуют другие значения Sentinel, которые могут привести к аналогичным проблемам безопасности. Рекомендуется провести дальнейшие исследования:
В любом случае, такие проблемы значительно сокращают период, необходимый хакерам для достижения полной эксплуатации, и заслуживают серьезного внимания.
![Эксклюзивное разоблачение обхода защиты Chrome v8 HardenProtect через утечку Sentinel Value])https://img-cdn.gateio.im/webp-social/moments-ed89289bebf59d4b27f5bffb5511a8c5.webp(
![Эксклюзивное разоблачение обхода защиты HardenProtect в Chrome v8 через утечку Sentinel Value])https://img-cdn.gateio.im/webp-social/moments-0e52075003a8ee2ca492a5fc9f35c36b.webp(
![Эксклюзивное разоблачение обхода Chrome v8 HardenProtect через утечку Sentinel Value])https://img-cdn.gateio.im/webp-social/moments-230537e420d579aabd89bdd168b20878.webp(
! [Эксклюзивное раскрытие обхода Chrome v8 HardenProtect путем утечки значения Sentinel])https://img-cdn.gateio.im/social/moments-506159c94c9e0988552cbd13d971e1(
![Эксклюзивное разоблачение обхода защиты Chrome v8 HardenProtect через утечку Sentinel Value])https://img-cdn.gateio.im/webp-social/moments-e9e2000fd501b69ee3ee643a459a26dd.webp(