- Регистрация
- 13 Июн 2025
- Сообщения
- 15
- Реакции
- 1
- Баллы
- 3
Сегодня разберём сложную уязвимость — Type Confusion в движках V8 (Chrome), SpiderMonkey (Firefox) и JavaScriptCore (Safari). Это не просто баг, а полноценный RCE (Remote Code Execution) в браузере!Всем привет!
Что такое Type Confusion?
Это когда движок JS неправильно определяет тип объекта в памяти. В результате:
- Можно читать/писать память за пределами выделенного буфера
- Получать контроль над указателями (потенциальный RCE)
- Обходить песочницу браузера
Почему это опасно?
Такие уязвимости используются в цепочках эксплойтов для 0-day атак (например, Pegasus spyware).
Реальный пример (CVE-2021-30551 в V8)
Шаг 1: Создаём "путаницу" типов
Код:
javascript
function triggerBug() {
let float_arr = [1.1, 1.2, 1.3];
let obj = {a: 42};
float_arr[0] = obj; // Теперь массив содержит объект вместо числа!
}
Шаг 2: Читаем память через "сломанный" массив
Код:
javascript
let leaked_data = float_arr[1]; // Читаем 8 байт памяти как double!
Шаг 3: Пишем shellcode и получаем RCE
(Дальше идёт сложная цепочка для обхода защит)
Как этим пользуются хакеры?
1. Находят баг через фаззинг (например, с помощью fuzzilli)
2. Создают read/write примитивы для доступа к памяти
3. Обходят защиту памяти (Pointer Compression в V8, CFG в Windows)
4. Запускают шеллкод в контексте браузера
Как защититься?
Для пользователей:
- Всегда обновляйте браузеры
- Используйте строгий режим Content Security Policy
Для разработчиков:
- Избегайте опасных оптимизаций в JS (например,
Код:
delete
- Включите все mitigations в V8:
Код:bash chrome --js-flags="--untrusted-code-mitigations"
- Избегайте опасных оптимизаций в JS (например,
Почему это важно?
Такие уязвимости:
- Используются государственными хакерами
- Позволяют взламывать устройства через браузер
- Часто остаются незамеченными месяцами
P.S. Это не теория — в 2023 такие баги находили в Chrome, Edge и Safari. Обновляйте браузеры!