Исследование обхода механизма HardenProtect Chrome v8 через утечку Sentinel Value
Введение
Значение-сигнал является специальным значением в алгоритмах, которое часто используется в качестве условия завершения циклов или рекурсивных алгоритмов. Этот специальный тип значения широко используется в исходном коде Chrome. Недавние исследования показали, что с помощью утечки объекта TheHole можно реализовать уязвимость для выполнения произвольного кода внутри песочницы Chrome. В этой статье мы рассмотрим другой связанный объект - Неинициализированный Oddball, а также то, как он может быть использован для обхода механизмов безопасности Chrome.
Стоит отметить, что в текущей версии движка V8 все еще существует эта проблема. Этот метод обладает значительной универсальностью и может повлиять на сложность эксплуатации нескольких исторических уязвимостей.
Значение Sentinel в V8
В исходном коде V8 определено множество встроенных объектов, которые располагаются в памяти рядом. Если эти объекты будут неправильно раскрыты в среде JavaScript, это может привести к утечке из песочницы. Утечка объекта TheHole, упомянутая ранее, является典型ным примером.
Мы можем подтвердить это, изменив встроенные функции V8. Например, изменив смещение функции %TheHole(), чтобы она возвращала объект Uninitialized Oddball.
Обход защиты HardenType
Использование неинициализированного объекта Oddball позволяет осуществлять произвольное чтение памяти. Ключевым моментом является то, что оптимизированный код JavaScript неправильно проверяет свойства объектов и напрямую вычисляет смещения и обращается к элементам массива в соответствии с семантикой JavaScript, что приводит к путанице типов.
Рекомендуемое решение состоит в том, чтобы добавить проверку массива map при оптимизации функции, возвращающей элементы массива, чтобы избежать прямых вычислений смещения.
Анализ показал, что некоторые программы могут иметь проблему PatchGap, которая еще не была исправлена. Например, в случае Skype, из-за его большого размера и прямой загрузки в память, злоумышленник может использовать фиксированный адрес для чтения и записи.
Публикация этого нового метода обхода может снизить сложность эксплуатации некоторых исторических уязвимостей. Рекомендуется соответствующим сторонам повторно оценить затронутое программное обеспечение и уязвимости.
В данной статье кратко рассматривается возможность произвольного чтения через утечку Sentinel-значения, такого как Uninitialized Oddball. В V8 также существуют другие Sentinel-значения, которые могут представлять собой аналогичную угрозу безопасности. Это дает нам повод для размышлений:
Другие утечки Uninitialized Oddball могут привести к выходу из песочницы V8
Безопасная локализация таких проблем все еще неясна.
Можно рассмотреть возможность добавления значения Sentinel в качестве переменной в тестирование fuzzer
В любом случае, такого рода проблемы могут значительно сократить полный цикл эксплуатации злоумышленников и требуют серьезного внимания.
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
В движке Chrome V8 существует уязвимость утечки Sentinel Value, которая может привести к побегу из песочницы.
Исследование обхода механизма HardenProtect Chrome v8 через утечку Sentinel Value
Введение
Значение-сигнал является специальным значением в алгоритмах, которое часто используется в качестве условия завершения циклов или рекурсивных алгоритмов. Этот специальный тип значения широко используется в исходном коде Chrome. Недавние исследования показали, что с помощью утечки объекта TheHole можно реализовать уязвимость для выполнения произвольного кода внутри песочницы Chrome. В этой статье мы рассмотрим другой связанный объект - Неинициализированный Oddball, а также то, как он может быть использован для обхода механизмов безопасности Chrome.
Стоит отметить, что в текущей версии движка V8 все еще существует эта проблема. Этот метод обладает значительной универсальностью и может повлиять на сложность эксплуатации нескольких исторических уязвимостей.
Значение Sentinel в V8
В исходном коде V8 определено множество встроенных объектов, которые располагаются в памяти рядом. Если эти объекты будут неправильно раскрыты в среде JavaScript, это может привести к утечке из песочницы. Утечка объекта TheHole, упомянутая ранее, является典型ным примером.
Мы можем подтвердить это, изменив встроенные функции V8. Например, изменив смещение функции %TheHole(), чтобы она возвращала объект Uninitialized Oddball.
Обход защиты HardenType
Использование неинициализированного объекта Oddball позволяет осуществлять произвольное чтение памяти. Ключевым моментом является то, что оптимизированный код JavaScript неправильно проверяет свойства объектов и напрямую вычисляет смещения и обращается к элементам массива в соответствии с семантикой JavaScript, что приводит к путанице типов.
Рекомендуемое решение состоит в том, чтобы добавить проверку массива map при оптимизации функции, возвращающей элементы массива, чтобы избежать прямых вычислений смещения.
! Эксклюзивное раскрытие обхода Chrome v8 HardenProtect путем утечки значения Sentinel
! Эксклюзивное раскрытие обхода Chrome v8 HardenProtect путем утечки значения Sentinel
Предупреждение о рисках PatchGap
Анализ показал, что некоторые программы могут иметь проблему PatchGap, которая еще не была исправлена. Например, в случае Skype, из-за его большого размера и прямой загрузки в память, злоумышленник может использовать фиксированный адрес для чтения и записи.
Публикация этого нового метода обхода может снизить сложность эксплуатации некоторых исторических уязвимостей. Рекомендуется соответствующим сторонам повторно оценить затронутое программное обеспечение и уязвимости.
! Эксклюзивное раскрытие обхода Chrome v8 HardenProtect путем утечки значения Sentinel
Резюме
В данной статье кратко рассматривается возможность произвольного чтения через утечку Sentinel-значения, такого как Uninitialized Oddball. В V8 также существуют другие Sentinel-значения, которые могут представлять собой аналогичную угрозу безопасности. Это дает нам повод для размышлений:
В любом случае, такого рода проблемы могут значительно сократить полный цикл эксплуатации злоумышленников и требуют серьезного внимания.