Анализ уязвимости Sentinel Value в движке Chrome V8
Sentinel value является специальным значением в алгоритмах, обычно используемым в качестве условия завершения цикла или рекурсии. В движке Chrome V8 существует несколько Sentinel value, которые, если будут раскрыты в среде JavaScript, могут привести к побегу из песочницы. В данной статье мы рассмотрим, как обойти механизм защиты HardenProtect в Chrome V8 через раскрытие необъектного Oddball.
Сентинельное значение в V8
В исходном коде V8 определено несколько встроенных объектов, которые расположены в памяти соседним образом. Если эти объекты будут утечены в JavaScript, это может привести к выполнению произвольного кода в песочнице. Ранее уже были проведены исследования, показывающие, что утечка объекта TheHole может это реализовать, и объект Uninitialized Oddball, обсуждаемый в этой статье, также представляет такую же опасность.
Мы можем проверить Uninitialized Oddball в JavaScript, изменив нативную функцию V8. Конкретный метод заключается в изменении смещения относительно isolate в функции %TheHole(), чтобы она возвращала объект Uninitialized Oddball.
Обход защиты HardenType
Использование объекта Uninitialized Oddball позволяет обойти защиту HardenType V8 и осуществлять относительно произвольное чтение и запись. Ключевым моментом является то, что оптимизированный код JavaScript не проверяет типы элементов массива, а просто вычисляет смещение и считывает значения в соответствии с семантикой JavaScript, что приводит к путанице типов.
В архитектуре x86, из-за отсутствия сжатия адресов, произвольное чтение и запись осуществляется относительно всего процесса. Это означает, что в некоторых программах, таких как Skype, злоумышленник может использовать это, чтобы читать и записывать в определенные области памяти, тем самым завершая всю цепочку эксплуатации уязвимости.
Влияние на безопасность
Публикация этого метода эксплуатации уязвимости значительно снизила сложность использования аналогичных уязвимостей. Атакующим почти не требуется дополнительное исследование для полной эксплуатации, что представляет угрозу для многих программ, которые еще не были исправлены.
Кроме того, в V8 также существуют другие значения Sentinel, которые могут вызвать аналогичные проблемы. Это подсказывает нам:
Могут ли другие значения Sentinel также легко привести к удаленному выполнению кода V8?
Следует ли официально классифицировать такие вопросы как уязвимости в безопасности?
Следует ли учитывать различные значения Sentinel в качестве переменных в пределах тестирования в模糊测试?
В любом случае, подобные проблемы значительно сокращают период, в течение которого злоумышленник может полностью воспользоваться уязвимостью, что вызывает высокую степень внимания со стороны исследователей безопасности и разработчиков.
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
11 Лайков
Награда
11
9
Репост
Поделиться
комментарий
0/400
NeverPresent
· 7ч назад
Слишком жесткое условие для цикла.
Посмотреть ОригиналОтветить0
MemeEchoer
· 11ч назад
Снова мастер уязвимостей демонстрирует свои способности
Посмотреть ОригиналОтветить0
GateUser-afe07a92
· 19ч назад
Чёрт, v8 снова вышла с уязвимостью.
Посмотреть ОригиналОтветить0
CryptoCross-TalkClub
· 08-10 04:39
Этот уязвимость такая же虚, как и уровень стоп лосс во время падения крупных бирж.
Посмотреть ОригиналОтветить0
PoetryOnChain
· 08-10 02:07
Снова снова снова есть уязвимость.
Посмотреть ОригиналОтветить0
FudVaccinator
· 08-10 02:06
Ещё одна дыра V8, друзья, давайте!
Посмотреть ОригиналОтветить0
MelonField
· 08-10 01:58
Уязвимость довольно серьезная, эта волна Google обречена.
Подробный анализ уязвимости Sentinel Value в движке Chrome V8: утечка неинициализированных объектов Oddball и побег из песочницы
Анализ уязвимости Sentinel Value в движке Chrome V8
Sentinel value является специальным значением в алгоритмах, обычно используемым в качестве условия завершения цикла или рекурсии. В движке Chrome V8 существует несколько Sentinel value, которые, если будут раскрыты в среде JavaScript, могут привести к побегу из песочницы. В данной статье мы рассмотрим, как обойти механизм защиты HardenProtect в Chrome V8 через раскрытие необъектного Oddball.
Сентинельное значение в V8
В исходном коде V8 определено несколько встроенных объектов, которые расположены в памяти соседним образом. Если эти объекты будут утечены в JavaScript, это может привести к выполнению произвольного кода в песочнице. Ранее уже были проведены исследования, показывающие, что утечка объекта TheHole может это реализовать, и объект Uninitialized Oddball, обсуждаемый в этой статье, также представляет такую же опасность.
Мы можем проверить Uninitialized Oddball в JavaScript, изменив нативную функцию V8. Конкретный метод заключается в изменении смещения относительно isolate в функции %TheHole(), чтобы она возвращала объект Uninitialized Oddball.
Обход защиты HardenType
Использование объекта Uninitialized Oddball позволяет обойти защиту HardenType V8 и осуществлять относительно произвольное чтение и запись. Ключевым моментом является то, что оптимизированный код JavaScript не проверяет типы элементов массива, а просто вычисляет смещение и считывает значения в соответствии с семантикой JavaScript, что приводит к путанице типов.
В архитектуре x86, из-за отсутствия сжатия адресов, произвольное чтение и запись осуществляется относительно всего процесса. Это означает, что в некоторых программах, таких как Skype, злоумышленник может использовать это, чтобы читать и записывать в определенные области памяти, тем самым завершая всю цепочку эксплуатации уязвимости.
Влияние на безопасность
Публикация этого метода эксплуатации уязвимости значительно снизила сложность использования аналогичных уязвимостей. Атакующим почти не требуется дополнительное исследование для полной эксплуатации, что представляет угрозу для многих программ, которые еще не были исправлены.
Кроме того, в V8 также существуют другие значения Sentinel, которые могут вызвать аналогичные проблемы. Это подсказывает нам:
Могут ли другие значения Sentinel также легко привести к удаленному выполнению кода V8?
Следует ли официально классифицировать такие вопросы как уязвимости в безопасности?
Следует ли учитывать различные значения Sentinel в качестве переменных в пределах тестирования в模糊测试?
В любом случае, подобные проблемы значительно сокращают период, в течение которого злоумышленник может полностью воспользоваться уязвимостью, что вызывает высокую степень внимания со стороны исследователей безопасности и разработчиков.
! Эксклюзивное раскрытие обхода Chrome v8 HardenProtect путем утечки значения Sentinel
! Эксклюзивное раскрытие обхода Chrome v8 HardenProtect путем утечки сигнального значения
! Эксклюзивное раскрытие обхода Chrome v8 HardenProtect путем утечки значения Sentinel
! Эксклюзивное раскрытие обхода Chrome v8 HardenProtect путем утечки сигнального значения