Дослідження проблем безпеки значення Sentinel у двигуні Chrome V8
Сентинельне значення - це спеціальне значення в алгоритмі, яке зазвичай використовується як умова завершення в циклі або рекурсивному алгоритмі. У вихідному коді Chrome існує кілька різних сентинельних значень, деякі з яких можуть призвести до вразливостей безпеки. У цій статті обговорюється обходження механізму захисту HardenProtect двигуна Chrome V8 шляхом витоку неініціалізованого об'єкта Oddball.
Значення Sentinel у V8
У V8-движку визначено кілька рідних об'єктів, які в пам'яті розташовані послідовно. Якщо рідні об'єкти, які не повинні бути вивчені в JavaScript, будуть вивчені, це може призвести до виконання будь-якого коду в пісочниці.
Змінивши нативні функції V8, можна витікати об'єкти Uninitialized Oddball у JavaScript. Використовуючи цей витеклий об'єкт, можна здійснювати відносно будь-які операції читання та запису, обминаючи захист HardenType.
Конкретний метод реалізації:
Змінити функцію %TheHole(), щоб вона повертала об'єкт Uninitialized Oddball.
Створіть спеціальний код JavaScript, скориставшись відсутністю перевірки масиву map в оптимізованій функції, щоб безпосередньо обчислити зсув і повернути значення масиву.
Через типове змішування досягти будь-якого читання та запису
Цей метод обходу стосується не лише останньої версії V8, але й може вплинути на програмне забезпечення, що використовує старі версії V8. Наприклад, Skype досі не виправив цю вразливість. У архітектурі x86 через відсутність стиснення адрес діапазон для довільного читання та запису може бути більшим.
Крім того, цей новий метод обходу може також зменшити складність експлуатації інших пов'язаних вразливостей, таких як Issue1314616 та Issue1216437.
У V8 також існує безліч інших значень Sentinel, які можуть мати такі ж ризики безпеки. Майбутні напрямки досліджень можуть включати:
Дослідження інших витоків Uninitialized Oddball, чи можуть вони також реалізувати RCE V8
Розгляньте можливість додавання значення Sentinel як змінної в тестуванні на помилки, щоб виявити більше потенційних уразливостей.
Зверніть увагу на те, чи будуть такі питання офіційно вважатися проблемами безпеки, та оцініть їхній вплив на скорочення повного циклу використання хакерами.
Незалежно від того, чи класифікуються ці питання офіційно як проблеми безпеки, вони можуть значно скоротити час, необхідний хакерам для повного використання. Тому постійна увага та дослідження безпекових питань, пов'язаних із Sentinel value, є вкрай важливими.
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
17 лайків
Нагородити
17
6
Поділіться
Прокоментувати
0/400
AirdropSweaterFan
· 07-08 03:03
Знову дірка v8? Минулого місяця тільки що полагодили купу.
Переглянути оригіналвідповісти на0
HashBard
· 07-05 03:39
омг в8's сентинели як поезія... поламані розкривають всі секрети фр фр
Переглянути оригіналвідповісти на0
RetiredMiner
· 07-05 03:38
Цей баг я міг би написати експ, навіть заплющивши очі.
Переглянути оригіналвідповісти на0
GhostInTheChain
· 07-05 03:31
двигун v8 знову відзначився великими досягненнями
Переглянути оригіналвідповісти на0
DeFiChef
· 07-05 03:30
Цікаво, потрібно більше підписатися на цю уразливість
Аналіз та використання вразливості безпеки Sentinel Value в двигуні Chrome V8
Дослідження проблем безпеки значення Sentinel у двигуні Chrome V8
Сентинельне значення - це спеціальне значення в алгоритмі, яке зазвичай використовується як умова завершення в циклі або рекурсивному алгоритмі. У вихідному коді Chrome існує кілька різних сентинельних значень, деякі з яких можуть призвести до вразливостей безпеки. У цій статті обговорюється обходження механізму захисту HardenProtect двигуна Chrome V8 шляхом витоку неініціалізованого об'єкта Oddball.
Значення Sentinel у V8
У V8-движку визначено кілька рідних об'єктів, які в пам'яті розташовані послідовно. Якщо рідні об'єкти, які не повинні бути вивчені в JavaScript, будуть вивчені, це може призвести до виконання будь-якого коду в пісочниці.
! Ексклюзивне розкриття обходу Chrome v8 HardenProtect шляхом витоку значення Sentinel
Обхід захисту HardenType
Змінивши нативні функції V8, можна витікати об'єкти Uninitialized Oddball у JavaScript. Використовуючи цей витеклий об'єкт, можна здійснювати відносно будь-які операції читання та запису, обминаючи захист HardenType.
Конкретний метод реалізації:
! Ексклюзивне розкриття обходу Chrome v8 HardenProtect шляхом витоку значення Sentinel
! Ексклюзивне розкриття обходу Chrome v8 HardenProtect шляхом витоку значення Sentinel
! Ексклюзивне розкриття обходу Chrome v8 HardenProtect шляхом витоку значення Sentinel
! Ексклюзивне розкриття обходу Chrome v8 HardenProtect шляхом витоку значення Sentinel
! Ексклюзивне розкриття обходу Chrome v8 HardenProtect шляхом витоку значення Sentinel
PatchGap ризикова інформація
Цей метод обходу стосується не лише останньої версії V8, але й може вплинути на програмне забезпечення, що використовує старі версії V8. Наприклад, Skype досі не виправив цю вразливість. У архітектурі x86 через відсутність стиснення адрес діапазон для довільного читання та запису може бути більшим.
Крім того, цей новий метод обходу може також зменшити складність експлуатації інших пов'язаних вразливостей, таких як Issue1314616 та Issue1216437.
! Ексклюзивне розкриття обходу Chrome v8 HardenProtect шляхом витоку значення Sentinel
! Ексклюзивне розкриття обходу Chrome v8 HardenProtect шляхом витоку значення Sentinel
Підсумок та роздуми
У V8 також існує безліч інших значень Sentinel, які можуть мати такі ж ризики безпеки. Майбутні напрямки досліджень можуть включати:
Незалежно від того, чи класифікуються ці питання офіційно як проблеми безпеки, вони можуть значно скоротити час, необхідний хакерам для повного використання. Тому постійна увага та дослідження безпекових питань, пов'язаних із Sentinel value, є вкрай важливими.
! Ексклюзивне розкриття обходу Chrome v8 HardenProtect шляхом витоку значення Sentinel