Глубокое изучение влияния Sentinel Value на безопасность в движке Chrome V8
Sentinel value - это специальное значение в алгоритмах, которое часто используется как условие окончания циклов или рекурсий. В исходном коде Chrome существует множество Sentinel value. Ранее проводились исследования, которые показали, что утечка объекта TheHole может привести к выполнению произвольного кода в песочнице Chrome. Команда Google впоследствии исправила связанные уязвимости.
Тем не менее, в V8 также существуют другие нативные объекты, которые не должны быть раскрыты в JavaScript. В этой статье будет обсуждаться объект Uninitialized Oddball, метод обхода которого впервые появился в Issue1352549. Стоит отметить, что этот метод по-прежнему доступен в последней версии V8 и еще не был исправлен.
Этот метод обладает определенной универсальностью:
В Issue1216437(CVE-2021-30551) впервые представлен poc для утечки internal uninitialized oddball.
Issue1314616(CVE-2022-1486) также напрямую раскрыл UninitializedOddball.
Влияние Issue1352549(NoCVE) стоит обратить внимание.
Эти примеры показывают, что нам необходимо пересмотреть программное обеспечение, которое может пострадать от PatchGap. В настоящее время у Skype все еще не исправлена эта уязвимость.
Большинство встроенных объектов в V8 определены в файле v8/src/roots/roots.h и расположены в памяти рядом друг с другом. Как только эти встроенные объекты, которые не должны быть раскрыты, будут раскрыты в JavaScript, это может позволить выполнить произвольный код внутри песочницы.
Чтобы проверить этот метод, мы можем изменить нативную функцию V8, чтобы утечь Uninitialized Oddball в JavaScript. В частности, можно изменить смещение относительно изолята в функции %TheHole(), чтобы она возвращала Uninitialized Oddball.
Используя этот метод, можно обойти защиту HardenType и реализовать относительно произвольное чтение и запись. Анализ оптимизированного кода JavaScript показывает, что при проверке obj.prop не проверяется значение с ключом obj.prop, а вместо этого смещение рассчитывается и значение массива получается напрямую в соответствии с семантикой JavaScript, что приводит к путанице типов.
Поскольку uninitialized_oddball располагается в памяти V8 раньше и более примитивен, чем объект TheHole, его легче подделать. После исправления связанных с TheHole мер, этот метод стал предпочтительным способом обхода.
Рекомендуется при возврате элементов массива из оптимизированной функции добавить проверку массива map, чтобы избежать прямого вычисления смещения для возврата значений.
Стоит отметить, что Skype в настоящее время все еще не исправил эту уязвимость. На системах x86, из-за отсутствия сжатия адресов, произвольное чтение и запись относительно всего процесса. Хотя Skype включил ASLR, из-за большого размера файла хакерам достаточно читать и записывать по фиксированным адресам, что значительно увеличивает вероятность доступа к содержимому файлов Skype. Это значительно снижает сложность завершения полной цепочки эксплуатации.
Этот раз PatchGap касается не только Issue1352549, но и открытие нового метода обхода значительно снизило сложность эксплуатации уязвимостей, таких как Issue1314616 и Issue1216437. Хакеры практически не нуждаются в дополнительном исследовании, чтобы полностью использовать любые ранее утеченные уязвимости uninitialized_oddball.
В V8 также существуют другие значения Sentinel, которые могут представлять собой аналогичные проблемы с безопасностью. Рекомендуется рассмотреть возможность включения таких значений Sentinel, как %TheHole/uninitialized_Oddball, в качестве переменных в тестировании на неустойчивость, чтобы выявить другие потенциальные примитивы эксплуатации.
Независимо от того, рассматриваются ли такие проблемы как официальные вопросы безопасности, они значительно сокращают время, необходимое хакерам для полного использования уязвимости. Нам необходимо постоянно следить за этой областью и исследовать ее, чтобы повысить безопасность таких программ, как Chrome.
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
15 Лайков
Награда
15
3
Репост
Поделиться
комментарий
0/400
GateUser-00be86fc
· 08-11 01:16
Эй, v8 снова обнаружил небольшую уязвимость.
Посмотреть ОригиналОтветить0
Blockblind
· 08-11 01:15
Этот баг так долго не исправляют, это действительно впечатляет.
Глубина анализа рисков безопасности Sentinel Value движка Chrome V8
Глубокое изучение влияния Sentinel Value на безопасность в движке Chrome V8
Sentinel value - это специальное значение в алгоритмах, которое часто используется как условие окончания циклов или рекурсий. В исходном коде Chrome существует множество Sentinel value. Ранее проводились исследования, которые показали, что утечка объекта TheHole может привести к выполнению произвольного кода в песочнице Chrome. Команда Google впоследствии исправила связанные уязвимости.
Тем не менее, в V8 также существуют другие нативные объекты, которые не должны быть раскрыты в JavaScript. В этой статье будет обсуждаться объект Uninitialized Oddball, метод обхода которого впервые появился в Issue1352549. Стоит отметить, что этот метод по-прежнему доступен в последней версии V8 и еще не был исправлен.
Этот метод обладает определенной универсальностью:
В Issue1216437(CVE-2021-30551) впервые представлен poc для утечки internal uninitialized oddball.
Issue1314616(CVE-2022-1486) также напрямую раскрыл UninitializedOddball.
Влияние Issue1352549(NoCVE) стоит обратить внимание.
Эти примеры показывают, что нам необходимо пересмотреть программное обеспечение, которое может пострадать от PatchGap. В настоящее время у Skype все еще не исправлена эта уязвимость.
Большинство встроенных объектов в V8 определены в файле v8/src/roots/roots.h и расположены в памяти рядом друг с другом. Как только эти встроенные объекты, которые не должны быть раскрыты, будут раскрыты в JavaScript, это может позволить выполнить произвольный код внутри песочницы.
Чтобы проверить этот метод, мы можем изменить нативную функцию V8, чтобы утечь Uninitialized Oddball в JavaScript. В частности, можно изменить смещение относительно изолята в функции %TheHole(), чтобы она возвращала Uninitialized Oddball.
Используя этот метод, можно обойти защиту HardenType и реализовать относительно произвольное чтение и запись. Анализ оптимизированного кода JavaScript показывает, что при проверке obj.prop не проверяется значение с ключом obj.prop, а вместо этого смещение рассчитывается и значение массива получается напрямую в соответствии с семантикой JavaScript, что приводит к путанице типов.
! Эксклюзивное раскрытие обхода Chrome v8 HardenProtect путем утечки сигнального значения
Поскольку uninitialized_oddball располагается в памяти V8 раньше и более примитивен, чем объект TheHole, его легче подделать. После исправления связанных с TheHole мер, этот метод стал предпочтительным способом обхода.
! Эксклюзивное раскрытие обхода Chrome v8 HardenProtect путем утечки значения Sentinel
Рекомендуется при возврате элементов массива из оптимизированной функции добавить проверку массива map, чтобы избежать прямого вычисления смещения для возврата значений.
Стоит отметить, что Skype в настоящее время все еще не исправил эту уязвимость. На системах x86, из-за отсутствия сжатия адресов, произвольное чтение и запись относительно всего процесса. Хотя Skype включил ASLR, из-за большого размера файла хакерам достаточно читать и записывать по фиксированным адресам, что значительно увеличивает вероятность доступа к содержимому файлов Skype. Это значительно снижает сложность завершения полной цепочки эксплуатации.
! Эксклюзивное раскрытие обхода Chrome v8 HardenProtect путем утечки значения Sentinel
Этот раз PatchGap касается не только Issue1352549, но и открытие нового метода обхода значительно снизило сложность эксплуатации уязвимостей, таких как Issue1314616 и Issue1216437. Хакеры практически не нуждаются в дополнительном исследовании, чтобы полностью использовать любые ранее утеченные уязвимости uninitialized_oddball.
! Эксклюзивное раскрытие обхода Chrome v8 HardenProtect путем утечки сигнального значения
В V8 также существуют другие значения Sentinel, которые могут представлять собой аналогичные проблемы с безопасностью. Рекомендуется рассмотреть возможность включения таких значений Sentinel, как %TheHole/uninitialized_Oddball, в качестве переменных в тестировании на неустойчивость, чтобы выявить другие потенциальные примитивы эксплуатации.
! Эксклюзивное раскрытие обхода Chrome v8 HardenProtect путем утечки значения Sentinel
Независимо от того, рассматриваются ли такие проблемы как официальные вопросы безопасности, они значительно сокращают время, необходимое хакерам для полного использования уязвимости. Нам необходимо постоянно следить за этой областью и исследовать ее, чтобы повысить безопасность таких программ, как Chrome.
! Эксклюзивное раскрытие обхода Chrome v8 HardenProtect путем утечки значения Sentinel