Аналіз вразливості Sentinel Value в движку Chrome V8
Sentinel value є спеціальним значенням в алгоритмах, яке зазвичай використовується як умова для завершення циклів або рекурсій. У движку Chrome V8 існує кілька Sentinel value, і їх витік у середовище JavaScript може призвести до втечі з пісочниці. У цій статті буде розглянуто, як обійти механізм захисту HardenProtect у Chrome V8 через витік об'єкта Uninitialized Oddball.
Сенсорне значення у V8
У вихідному коді V8 визначено кілька рідних об'єктів, які розташовані в пам'яті поряд. Якщо ці об'єкти будуть витікати в JavaScript, це може призвести до виконання будь-якого коду в пісочниці. Раніше було проведено дослідження, яке показало, що витік об'єкта TheHole може реалізувати це, а також об'єкт Uninitialized Oddball, про який йдеться в цій статті, має таку ж небезпеку.
Ми можемо перевірити Uninitialized Oddball, модифікувавши вбудовані функції V8, щоб витікати його в JavaScript. Конкретний метод полягає в зміні зміщення відносно isolate у функції %TheHole(), щоб вона повертала об'єкт Uninitialized Oddball.
Використання неініціалізованого об'єкта Oddball може обійти захист HardenType V8, реалізуючи відносне читання і запис. Ключовим моментом є те, що оптимізований JavaScript код не перевіряє типи елементів масиву, а безпосередньо розраховує зсув і читає значення відповідно до семантики JavaScript, що призводить до змішування типів.
У x86 архітектурі, через відсутність стиснення адрес, будь-яке читання та запис є відносно всього процесу. Це означає, що в певному програмному забезпеченні, такому як Skype, зловмисник може скористатися цим для читання та запису в певні області пам'яті, тим самим завершуючи всю ланцюг експлуатації вразливості.
Вплив на безпеку
Публікація методу використання цієї вразливості значно знизила складність використання подібних вразливостей. Зловмисники майже не потребують додаткових досліджень для реалізації повного використання, що становить загрозу для багатьох програм, які ще не виправлені.
Крім того, у V8 також є інші значення Sentinel, які також можуть призвести до подібних проблем. Це підказує нам:
Чи можуть інші значення Sentinel також легко реалізувати віддалене виконання коду V8?
Чи слід офіційно вважати такі проблеми безпековими вразливостями?
Чи слід враховувати різні значення Sentinel як змінні в межах тестування при проведенні фузз-тестування?
В будь-якому випадку, такого роду проблеми суттєво скорочують період, протягом якого зловмисники можуть повністю скористатися вразливістю, що заслуговує на високу увагу з боку дослідників безпеки та розробників.
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
9 лайків
Нагородити
9
7
Репост
Поділіться
Прокоментувати
0/400
GateUser-afe07a92
· 7год тому
Ого, у 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 через витік об'єкта Uninitialized Oddball.
Сенсорне значення у V8
У вихідному коді V8 визначено кілька рідних об'єктів, які розташовані в пам'яті поряд. Якщо ці об'єкти будуть витікати в JavaScript, це може призвести до виконання будь-якого коду в пісочниці. Раніше було проведено дослідження, яке показало, що витік об'єкта TheHole може реалізувати це, а також об'єкт Uninitialized Oddball, про який йдеться в цій статті, має таку ж небезпеку.
Ми можемо перевірити Uninitialized Oddball, модифікувавши вбудовані функції V8, щоб витікати його в JavaScript. Конкретний метод полягає в зміні зміщення відносно isolate у функції %TheHole(), щоб вона повертала об'єкт Uninitialized Oddball.
! Ексклюзивне розкриття обходу Chrome v8 HardenProtect шляхом витоку значення Sentinel
Обхід захисту HardenType
Використання неініціалізованого об'єкта Oddball може обійти захист HardenType V8, реалізуючи відносне читання і запис. Ключовим моментом є те, що оптимізований JavaScript код не перевіряє типи елементів масиву, а безпосередньо розраховує зсув і читає значення відповідно до семантики JavaScript, що призводить до змішування типів.
! Ексклюзивне розкриття обходу Chrome v8 HardenProtect шляхом витоку значення Sentinel
У x86 архітектурі, через відсутність стиснення адрес, будь-яке читання та запис є відносно всього процесу. Це означає, що в певному програмному забезпеченні, такому як Skype, зловмисник може скористатися цим для читання та запису в певні області пам'яті, тим самим завершуючи всю ланцюг експлуатації вразливості.
Вплив на безпеку
Публікація методу використання цієї вразливості значно знизила складність використання подібних вразливостей. Зловмисники майже не потребують додаткових досліджень для реалізації повного використання, що становить загрозу для багатьох програм, які ще не виправлені.
Крім того, у V8 також є інші значення Sentinel, які також можуть призвести до подібних проблем. Це підказує нам:
Чи можуть інші значення Sentinel також легко реалізувати віддалене виконання коду V8?
Чи слід офіційно вважати такі проблеми безпековими вразливостями?
Чи слід враховувати різні значення Sentinel як змінні в межах тестування при проведенні фузз-тестування?
В будь-якому випадку, такого роду проблеми суттєво скорочують період, протягом якого зловмисники можуть повністю скористатися вразливістю, що заслуговує на високу увагу з боку дослідників безпеки та розробників.
! Ексклюзивне розкриття обходу Chrome v8 HardenProtect шляхом витоку значення Sentinel
! Ексклюзивне розкриття обходу Chrome v8 HardenProtect шляхом витоку значення Sentinel
! Ексклюзивне розкриття обходу Chrome v8 HardenProtect шляхом витоку значення Sentinel
! Ексклюзивне розкриття обходу Chrome v8 HardenProtect шляхом витоку значення Sentinel
! Ексклюзивне розкриття обходу Chrome v8 HardenProtect шляхом витоку значення Sentinel
! Ексклюзивне розкриття обходу Chrome v8 HardenProtect шляхом витоку значення Sentinel