Уразливість витоку значення Sentinel двигуна V8: аналіз нового методу втечі з пісочниці Chrome

Обговорення загроз безпеці Sentinel Value в двигуні Chrome V8

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

У цій статті ми розглянемо новий об'єкт значень Sentinel: неініціалізований непарний м'яч. Цей метод обходу вперше з'явився у звіті про вразливості, а повний код був наданий дослідниками безпеки. Варто відзначити, що цей спосіб все ще доступний для останньої версії V8 і не був виправлений.

Цей метод має високу універсальність:

  1. У певній уразливості CVE початковий poc насправді є витоком внутрішнього незініціалізованого дивного значення.

  2. В іншому звіті про вразливість CVE дослідники прямо розкрили UninitializedOddball, хоча на той момент експлуатаційний ланцюг був неповним, але вже продемонстрував ризики безпеки.

  3. У недавньому звіті про вразливість було надано повний опис експлуатації.

Ці випадки свідчать про поширеність і серйозність цієї проблеми. Станом на сьогодні, певний комунікаційний програмний продукт ще не виправив цю вразливість.

Використання значення Sentinel у V8

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

Щоб перевірити ефективність цього методу в останній версії V8, ми можемо змінити нативні функції V8, щоб витік Uninitialized Oddball в JavaScript.

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

Обхід захисту HardenType

Ми можемо створити код, який, коли певна функція повертає UninitializedOddball, реалізує довільне читання. Аналіз оптимізованого асемблерного коду показує, що функція лише перевіряє, чи правильні властивості об'єкта, але не перевіряє значення, що відповідають властивостям, безпосередньо обчислюючи зсув за семантикою JavaScript для отримання елементів масиву, що призводить до змішування типів і дозволяє довільне читання.

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

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

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

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

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

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

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

Нагадування про небезпеки безпеки

Аналіз показує, що певне програмне забезпечення для зв'язку наразі ще не виправило цю вразливість. У системі x86, через брак стиснення адрес, можливий довільний читання та запис безпосередньо відносно всього процесу. Хоча ASLR включено, через великий розмір файлу все ще існує значна ймовірність читання та запису критичних даних. Поєднуючи методи аналізу PE та інші, можливо за короткий час завершити повну експлуатацію.

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

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

Підсумок

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

  1. Чи може витік інших значень Sentinel також призвести до втечі з пісочниці V8?

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

  3. Чи є необхідним додати змінні, пов'язані з Sentinel value, до тестування на фузз, щоб виявити більше потенційних проблем?

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

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

Переглянути оригінал
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
  • Нагородити
  • 4
  • Поділіться
Прокоментувати
0/400
ArbitrageBotvip
· 07-11 10:52
Як це зробив Google? Як таке можливо?
Переглянути оригіналвідповісти на0
SelfSovereignStevevip
· 07-10 20:07
Де захист браузера?
Переглянути оригіналвідповісти на0
StablecoinArbitrageurvip
· 07-10 19:58
хм, ще одна експлуатація з ймовірністю 99,8% бути виправленою до того, як з'явиться будь-яка значуща арбітражна можливість...
Переглянути оригіналвідповісти на0
DefiPlaybookvip
· 07-10 19:45
Браузер також отримав Аірдроп? Чи можна цим скористатися?
Переглянути оригіналвідповісти на0
  • Закріпити