• XSS.stack #1 – первый литературный журнал от юзеров форума

Уязвимость Type Confusion в V8 Google Chrome ( CVE-2025-0291)

UnixSoft

HDD-drive
Пользователь
Регистрация
27.04.2024
Сообщения
36
Реакции
30
Хром исправила уязвимость CVE-2025-0291 которая как утверждают могла привести к выполнению произвольного кода.
ссылочка для ознакомления https://chromereleases.googleblog.com/2025/01/stable-channel-update-for-desktop.html

Сам патч исправления можно ознакомиться здесь https://chromium-review.googlesource.com/c/v8/v8/+/6092870

Что примерно понятно

В анализаторе типов, который генерирует информацию для компиляции WebAssembly, неправильно обрабатывались входы Phi-узлов, если цикл состоял всего из одного блока. В норме, когда анализатор встречает цикл, он должен аккуратно сверять данные на входах Phi-узлов между итерациями. Но в коде, который был до фикса, происходила путаница: вместо того, чтобы корректно использовать данные обратного ребра (backedge), анализатор либо делал лишнюю итерацию, либо пропускал уточнение типа.

Код:
v113 = Phi(v26, v113)
 v114 = Phi(v26, v113)

До исправления логика выглядела так:

Код:
if (block.index() != loop_header.index()) {
    iterator.MarkLoopForRevisitSkipHeader();
} else {
    iterator.MarkLoopForRevisit();
}


Этот код не учитывал, что в одноблоковых циклах loop_header и сам блок — это одно и то же. Теперь логика исправлена, и добавлена корректная проверка для таких случаев.

GfBm_K1XMAAhN0w.jpg


В чем же уязвимость.
В коде обрабатываются различные блоки (например, Block, WasmGCTypeAnalyzer). Блоки могут быть либо обычными блоками, либо циклами (loops). Когда один блок связан с другим через backedge (обратную связь в цикле), происходит повторная оценка типов для каждого блока.

В коде мы видим, что типы блоков анализируются через снимки состояний (snapshots). Ошибка возникает, когда анализ типов не выполняется корректно при повторных оценках, что может привести к ошибочной интерпретации типов.

Можно ли выполнить RCE и обход песочницы, я думаю да

Если WebAssembly-код обрабатывает данные, связанные с указателями на функции, можно переписать их на свои функции или использовать ошибочное сопоставление типов для перезаписи указателей на защищенные объекты. Ошибка в анализе типов может привести к тому, что данные, относящиеся к одному уровню безопасности, будут интерпретированы как данные другого уровня. Таким образом, можно заставить браузер выполнить код в контексте защищенной области, что приведет к обходу песочницы.

Исправление внесли в логику анализа циклов. Теперь WasmGCTypeAnalyzer учитывает специфику одноблоковых циклов и обрабатывает их корректно. Добавлены дополнительные проверки для Phi-узлов, чтобы анализатор не завершал стабилизацию до полной обработки всех входов. Убраны избыточные DCHECK, которые иногда ошибочно срабатывали даже вне контекста одноблоковых циклов.
 
Последнее редактирование:
Yeah... Logic bugs... Not everything has to be about memory, younguns. Zerodium is reserving a $1,000,000 for every one of you. Start studying.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх