Нова уразливість двигуна Chrome V8: витік Uninitialized Oddball обходить пісочницю

robot
Генерація анотацій у процесі

Як обійти HardenProtect Chrome V8 шляхом витоку Sentinel Value

Вступ

Sentinel value – це особливе значення в алгоритмах, яке часто використовується в циклічних або рекурсивних алгоритмах як умова завершення. У вихідному коді Chrome широко використовуються такі значення. Нещодавно фахівці з безпеки виявили, що шляхом витоку об'єкта TheHole можна реалізувати виконання довільного коду в пісочниці Chrome. Команда Google швидко виправила ці два вразливості, які були в диких умовах.

Однак у V8 також існують інші рідні об'єкти, які не повинні бути розкриті JavaScript. У цій статті буде обговорено новий об'єкт: Uninitialized Oddball. Цей метод обходу вперше з'явився в Issue, надісланому членом Project0, і наразі все ще доступний у останній версії V8.

Слід зазначити, що цей метод має високу універсальність:

  1. У CVE-2021-30551 перший POC - це витік внутрішнього неініціалізованого oddball.

  2. POC для CVE-2022-1486 також безпосередньо розкрив UninitializedOddball.

  3. Проблема, яка не має присвоєного CVE, також використовує цей метод.

Ці випадки достатні, щоб підкреслити важливість цієї проблеми, і варто перевірити можливе вплив на програмне забезпечення.

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

Значення Sentinel у V8

Більшість вбудованих об'єктів V8 визначено у файлі v8/src/roots/roots.h, вони розташовані в пам'яті в безпосередній сусідстві один з одним. Як тільки ці вбудовані об'єкти, які не повинні бути витічені, будуть витічені в JavaScript, це може призвести до виконання довільного коду в пісочниці.

Ми можемо розкрити Uninitialized Oddball у JavaScript, змінюючи рідні функції V8. Конкретний спосіб полягає в зміні зміщення відносно isolate у функції %TheHole(), щоб вона повертала Uninitialized Oddball.

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

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

Обхід HardenType

Використання Uninitialized Oddball дозволяє реалізувати відносно довільне читання і запис. Ключовим моментом є те, що оптимізована функція read перевіряє лише властивість prop об'єкта obj, але не перевіряє значення obj.prop як ключа. Це призводить до змішування типів під час обчислень, що дозволяє реалізувати довільне читання.

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

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

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

На архітектурі x86, через відсутність стиснення адрес, будь-яке читання та запис відбувається відносно всього процесу. Хоча не вистачає зручностей, що надаються стисненням адрес, через те, що деякі великі програмні файли є досить великими, все ж можна з досить високою ймовірністю читати та записувати цільовий вміст.

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

Попередження PatchGap

Цей PatchGap не лише стосується Issue1352549, а й включає в себе кілька вразливостей, подібних до Issue1314616 та Issue1216437. Після публікації нового методу обходу, складність використання цих вразливостей значно знизилась. Хакерам майже не потрібно додаткових досліджень, щоб завершити повний ланцюг експлуатації.

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

Резюме

У V8 є багато інших значень Sentinel, які також можуть мати подібні проблеми. Це дає нам певні підказки:

  1. Чи можливо також реалізувати V8 RCE через інші uninitialized_Oddball витоки?

  2. Чи слід вважати такі питання офіційно питаннями безпеки?

  3. Чи слід додавати значення Sentinel як змінну під час тестування Fuzzer?

У будь-якому випадку, ці проблеми значно скоротять час, необхідний хакерам для повного використання вразливостей, що заслуговує на нашу особливу увагу.

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

SENC2.32%
Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
  • Нагородити
  • 6
  • Репост
  • Поділіться
Прокоментувати
0/400
ContractTestervip
· 08-15 05:19
Стара вразливість, нова проблема знову з'явилася
Переглянути оригіналвідповісти на0
BlockchainWorkervip
· 08-13 17:55
вразливість v8 дуже серйозна
Переглянути оригіналвідповісти на0
SocialFiQueenvip
· 08-12 12:23
Серйозні проблеми потребують підписатися вирішення
Переглянути оригіналвідповісти на0
CryptoFortuneTellervip
· 08-12 12:15
Вразили врази, які ще не виправлено.
Переглянути оригіналвідповісти на0
GamefiHarvestervip
· 08-12 12:12
Ого, V8 знову з'явився!
Переглянути оригіналвідповісти на0
CryptoSurvivorvip
· 08-12 12:11
Знову бачимо, що пісочницю обійшли
Переглянути оригіналвідповісти на0
  • Закріпити