Дослідження обходу механізму HardenProtect Chrome v8 шляхом витоку Sentinel Value
Вступ
Sentinel value – це спеціальне значення в алгоритмах, яке часто використовується як умова завершення циклів або рекурсії. У вихідному коді Chrome широко використовується це спеціальне значення. Нещодавно були проведені дослідження, які показали, що шляхом витоку об'єкта TheHole можна реалізувати деякі вразливості виконання довільного коду в пісочниці Chrome. У цій статті буде розглянуто інший пов'язаний об'єкт – Uninitialized Oddball, а також те, як він може бути використаний для обходу механізмів безпеки Chrome.
Варто зазначити, що на даний момент остання версія двигуна V8 все ще має цю проблему. Цей підхід має досить високу універсальність і може вплинути на складність використання кількох історичних вразливостей.
У вихідному коді V8 визначено багато рідних об'єктів, які розташовані в пам'яті сусідньо. Якщо ці об'єкти помилково будуть доступні в середовищі JavaScript, це може призвести до втечі з пісочниці. Відоме раніше витік об'єкта TheHole є типовим прикладом.
Ми можемо перевірити це, змінивши вбудовану функцію V8. Наприклад, змініть зсув функції %TheHole() так, щоб вона повертала об'єкт Uninitialized Oddball.
Використання неініціалізованих об'єктів Oddball дозволяє здійснювати відносно довільне зчитування пам'яті. Ключовим моментом є те, що оптимізований код JavaScript не перевіряє властивості об'єкта належним чином, а безпосередньо за семантикою JavaScript обчислює зміщення та отримує доступ до елементів масиву, що призводить до змішування типів.
Рекомендоване рішення полягає в тому, щоб під час оптимізації функції, що повертає елементи масиву, додати перевірку масиву map, щоб уникнути прямого обчислення зсуву.
Аналіз показав, що деяке програмне забезпечення може мати проблему PatchGap, яка ще не була виправлена. Наприклад, у Skype через великий розмір файлів і пряме завантаження в пам'ять зловмисники можуть використовувати фіксовані адреси для читання та запису.
Завдяки відкриттю цього нового методу обходу, можливо, зменшиться складність використання деяких історичних вразливостей. Рекомендується відповідним сторонам повторно оцінити програмне забезпечення та вразливості, що постраждали.
Підсумок
Ця стаття коротко обговорює можливість реалізації довільного читання через витік Uninitialized Oddball та інших Sentinel значень. У V8 також існують інші Sentinel значення, які можуть мати подібні проблеми безпеки. Це підказує нам:
Інші неініціалізовані Oddball витоки можуть призвести до втечі з пісочниці V8.
Безпека такого роду питань все ще не чітко визначена
Можна розглянути можливість додавання значення Sentinel як змінної до тестування fuzzer
У будь-якому випадку, такі проблеми можуть значно скоротити повний цикл експлуатації зловмисників, що заслуговує на високу увагу.
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
У двигуні Chrome V8 виявлено вразливість витоку Sentinel Value, яка дозволяє здійснити обход пісочниці.
Дослідження обходу механізму HardenProtect Chrome v8 шляхом витоку Sentinel Value
Вступ
Sentinel value – це спеціальне значення в алгоритмах, яке часто використовується як умова завершення циклів або рекурсії. У вихідному коді Chrome широко використовується це спеціальне значення. Нещодавно були проведені дослідження, які показали, що шляхом витоку об'єкта TheHole можна реалізувати деякі вразливості виконання довільного коду в пісочниці Chrome. У цій статті буде розглянуто інший пов'язаний об'єкт – Uninitialized Oddball, а також те, як він може бути використаний для обходу механізмів безпеки Chrome.
Варто зазначити, що на даний момент остання версія двигуна V8 все ще має цю проблему. Цей підхід має досить високу універсальність і може вплинути на складність використання кількох історичних вразливостей.
! Ексклюзивне розкриття обходу Chrome v8 HardenProtect шляхом витоку значення Sentinel
Значення Sentinel у V8
У вихідному коді V8 визначено багато рідних об'єктів, які розташовані в пам'яті сусідньо. Якщо ці об'єкти помилково будуть доступні в середовищі JavaScript, це може призвести до втечі з пісочниці. Відоме раніше витік об'єкта TheHole є типовим прикладом.
Ми можемо перевірити це, змінивши вбудовану функцію V8. Наприклад, змініть зсув функції %TheHole() так, щоб вона повертала об'єкт Uninitialized Oddball.
! Ексклюзивне розкриття обходу Chrome v8 HardenProtect шляхом витоку значення Sentinel
! Ексклюзивне розкриття обходу Chrome v8 HardenProtect шляхом витоку значення Sentinel
Обхід захисту HardenType
Використання неініціалізованих об'єктів Oddball дозволяє здійснювати відносно довільне зчитування пам'яті. Ключовим моментом є те, що оптимізований код JavaScript не перевіряє властивості об'єкта належним чином, а безпосередньо за семантикою JavaScript обчислює зміщення та отримує доступ до елементів масиву, що призводить до змішування типів.
Рекомендоване рішення полягає в тому, щоб під час оптимізації функції, що повертає елементи масиву, додати перевірку масиву map, щоб уникнути прямого обчислення зсуву.
! Ексклюзивне розкриття обходу Chrome v8 HardenProtect шляхом витоку значення Sentinel
! Ексклюзивне розкриття обходу Chrome v8 HardenProtect шляхом витоку значення Sentinel
! Ексклюзивне розкриття обходу Chrome v8 HardenProtect шляхом витоку значення Sentinel
PatchGap ризикова примітка
Аналіз показав, що деяке програмне забезпечення може мати проблему PatchGap, яка ще не була виправлена. Наприклад, у Skype через великий розмір файлів і пряме завантаження в пам'ять зловмисники можуть використовувати фіксовані адреси для читання та запису.
Завдяки відкриттю цього нового методу обходу, можливо, зменшиться складність використання деяких історичних вразливостей. Рекомендується відповідним сторонам повторно оцінити програмне забезпечення та вразливості, що постраждали.
Підсумок
Ця стаття коротко обговорює можливість реалізації довільного читання через витік Uninitialized Oddball та інших Sentinel значень. У V8 також існують інші Sentinel значення, які можуть мати подібні проблеми безпеки. Це підказує нам:
У будь-якому випадку, такі проблеми можуть значно скоротити повний цикл експлуатації зловмисників, що заслуговує на високу увагу.
! Ексклюзивне розкриття обходу Chrome v8 HardenProtect шляхом витоку значення Sentinel