Глибоке обговорення впливу Sentinel Value на безпеку в двигуні Chrome V8
Sentinel value є особливим значенням у алгоритмах, яке часто використовується як умова завершення циклів або рекурсивних алгоритмів. У вихідному коді Chrome існує кілька різних Sentinel value. Раніше були проведені дослідження, які показали, що через витік об'єкта TheHole можна реалізувати виконання будь-якого коду всередині пісочниці Chrome. Команда Google згодом виправила відповідні вразливості.
Однак у V8 існують і інші рідні об'єкти, які не повинні бути розкриті в JavaScript. У цій статті буде обговорюватися об'єкт Uninitialized Oddball, метод обходу якого вперше з'явився в Issue1352549. Варто зазначити, що цей метод все ще доступний у останній версії V8 і досі не був виправлений.
Цей метод має певну універсальність:
Issue1216437(CVE-2021-30551) вперше представлено poc для витоку internal uninitialized oddball.
Issue 1314616( CVE-2022-1486) також прямо розкрив UninitializedOddball.
Вплив Issue1352549(NoCVE) варто звернути увагу.
Ці випадки свідчать про те, що нам необхідно ще раз переглянути програмне забезпечення, яке може бути під впливом PatchGap. Наразі Skype все ще не виправив цю уразливість.
Більшість вбудованих об'єктів у V8 визначені в файлі v8/src/roots/roots.h, вони розташовані в пам'яті поруч один з одним. Як тільки ці вбудовані об'єкти, які не повинні бути витоками, будуть витікати в JavaScript, може бути реалізовано виконання будь-якого коду в пісочниці.
Для перевірки цього методу ми можемо змінити рідні функції V8, щоб витік Uninitialized Oddball у JavaScript. Зокрема, можна змінити зсув від %TheHole() функції щодо isolate, щоб вона повертала Uninitialized Oddball.
Використовуючи цей метод, можна обійти захист HardenType, реалізувавши відносно довільний читання та запис. Аналізуючи оптимізований JavaScript код, можна виявити, що при перевірці obj.prop не перевіряється значення з ключем obj.prop, а безпосередньо обчислюється зсув за семантикою JavaScript та отримується значення масиву, що призводить до змішування типів.
Оскільки uninitialized_oddball у пам'яті V8 розташований на початку і є більш первісним, його легше підробити, ніж об'єкт TheHole. Після виправлення пов'язаних з TheHole заходів, цей метод став вибором для обходу.
Рекомендується при поверненні елементів масиву з оптимізованої функції додати перевірку масиву map, щоб уникнути прямого обчислення зміщення для повернення значення.
Варто зазначити, що Skype наразі ще не виправив цю вразливість. В системах x86, через відсутність стиснення адрес, довільне читання та запис є відносно всього процесу. Хоча Skype увімкнув ASLR, через великий розмір файлів, хакерам достатньо читати та записувати по фіксованій адресі, що суттєво підвищує ймовірність доступу до вмісту файлів Skype. Це значно знижує складність завершення повної експлуатаційної ланцюга.
Цей PatchGap не тільки стосується Issue1352549, але й публікація нового методу обходу суттєво знизила складність експлуатації вразливостей, таких як Issue1314616 та Issue1216437. Хакерам майже не потрібно додаткових досліджень, щоб повноцінно використати будь-яку вразливість, пов'язану з витоком uninitialized_oddball.
У V8 також існують інші різноманітні значення Sentinel, які можуть мати подібні проблеми з безпекою. Рекомендується під час тестування на вразливість враховувати такі значення Sentinel, як %TheHole/uninitialized_Oddball, як змінні, щоб виявити інші потенційні експлоітативні примітиви.
Незалежно від того, чи вважаються ці питання офіційно проблемами безпеки, вони значно скорочують період, протягом якого хакери можуть повністю експлуатувати вразливості. Ми повинні продовжувати звертати увагу на цю галузь і досліджувати її, щоб підвищити безпеку програмного забезпечення, такого як Chrome.
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
14 лайків
Нагородити
14
3
Репост
Поділіться
Прокоментувати
0/400
GateUser-00be86fc
· 10год тому
Ой, v8 знову виявив невелику вразливість.
Переглянути оригіналвідповісти на0
Blockblind
· 10год тому
Цей баг не виправляли так довго, це дійсно вражає.
Глибина аналізу ризиків безпеки Sentinel Value двигуна Chrome V8
Глибоке обговорення впливу Sentinel Value на безпеку в двигуні Chrome V8
Sentinel value є особливим значенням у алгоритмах, яке часто використовується як умова завершення циклів або рекурсивних алгоритмів. У вихідному коді Chrome існує кілька різних Sentinel value. Раніше були проведені дослідження, які показали, що через витік об'єкта TheHole можна реалізувати виконання будь-якого коду всередині пісочниці Chrome. Команда Google згодом виправила відповідні вразливості.
Однак у V8 існують і інші рідні об'єкти, які не повинні бути розкриті в JavaScript. У цій статті буде обговорюватися об'єкт Uninitialized Oddball, метод обходу якого вперше з'явився в Issue1352549. Варто зазначити, що цей метод все ще доступний у останній версії V8 і досі не був виправлений.
Цей метод має певну універсальність:
Issue1216437(CVE-2021-30551) вперше представлено poc для витоку internal uninitialized oddball.
Issue 1314616( CVE-2022-1486) також прямо розкрив UninitializedOddball.
Вплив Issue1352549(NoCVE) варто звернути увагу.
Ці випадки свідчать про те, що нам необхідно ще раз переглянути програмне забезпечення, яке може бути під впливом PatchGap. Наразі Skype все ще не виправив цю уразливість.
Більшість вбудованих об'єктів у V8 визначені в файлі v8/src/roots/roots.h, вони розташовані в пам'яті поруч один з одним. Як тільки ці вбудовані об'єкти, які не повинні бути витоками, будуть витікати в JavaScript, може бути реалізовано виконання будь-якого коду в пісочниці.
Для перевірки цього методу ми можемо змінити рідні функції V8, щоб витік Uninitialized Oddball у JavaScript. Зокрема, можна змінити зсув від %TheHole() функції щодо isolate, щоб вона повертала Uninitialized Oddball.
! Ексклюзивне розкриття обходу Chrome v8 HardenProtect шляхом витоку значення Sentinel
Використовуючи цей метод, можна обійти захист HardenType, реалізувавши відносно довільний читання та запис. Аналізуючи оптимізований JavaScript код, можна виявити, що при перевірці obj.prop не перевіряється значення з ключем obj.prop, а безпосередньо обчислюється зсув за семантикою JavaScript та отримується значення масиву, що призводить до змішування типів.
! Ексклюзивне розкриття обходу Chrome v8 HardenProtect шляхом витоку значення Sentinel
Оскільки uninitialized_oddball у пам'яті V8 розташований на початку і є більш первісним, його легше підробити, ніж об'єкт TheHole. Після виправлення пов'язаних з TheHole заходів, цей метод став вибором для обходу.
! Ексклюзивне розкриття обходу Chrome v8 HardenProtect шляхом витоку значення Sentinel
Рекомендується при поверненні елементів масиву з оптимізованої функції додати перевірку масиву map, щоб уникнути прямого обчислення зміщення для повернення значення.
Варто зазначити, що Skype наразі ще не виправив цю вразливість. В системах x86, через відсутність стиснення адрес, довільне читання та запис є відносно всього процесу. Хоча Skype увімкнув ASLR, через великий розмір файлів, хакерам достатньо читати та записувати по фіксованій адресі, що суттєво підвищує ймовірність доступу до вмісту файлів Skype. Це значно знижує складність завершення повної експлуатаційної ланцюга.
! Ексклюзивне розкриття обходу Chrome v8 HardenProtect шляхом витоку значення Sentinel
Цей PatchGap не тільки стосується Issue1352549, але й публікація нового методу обходу суттєво знизила складність експлуатації вразливостей, таких як Issue1314616 та Issue1216437. Хакерам майже не потрібно додаткових досліджень, щоб повноцінно використати будь-яку вразливість, пов'язану з витоком uninitialized_oddball.
! Ексклюзивне розкриття обходу Chrome v8 HardenProtect шляхом витоку значення Sentinel
У V8 також існують інші різноманітні значення Sentinel, які можуть мати подібні проблеми з безпекою. Рекомендується під час тестування на вразливість враховувати такі значення Sentinel, як %TheHole/uninitialized_Oddball, як змінні, щоб виявити інші потенційні експлоітативні примітиви.
! Ексклюзивне розкриття обходу Chrome v8 HardenProtect шляхом витоку значення Sentinel
Незалежно від того, чи вважаються ці питання офіційно проблемами безпеки, вони значно скорочують період, протягом якого хакери можуть повністю експлуатувати вразливості. Ми повинні продовжувати звертати увагу на цю галузь і досліджувати її, щоб підвищити безпеку програмного забезпечення, такого як Chrome.
! Ексклюзивне розкриття обходу Chrome v8 HardenProtect шляхом витоку значення Sentinel
! Ексклюзивне розкриття обходу Chrome v8 HardenProtect шляхом витоку значення Sentinel
! Ексклюзивне розкриття обходу Chrome v8 HardenProtect шляхом витоку значення Sentinel