CVE-2026-6307 PoC: Longinus — 2 границы в одной ошибке https://nebusec.ai/research/v8-cve-2026-6307-writeup/)
Более известен как «Longinus»: 2 границы в одной ошибке
Репозиторий: https://github.com/J4ck3LSyN-Gen2/CVE-2026-6307-Longinus
Подробный отчёт: OS-IS-CVE-2026-6307-07-2026.md
Технический разбор: Nebula Security - Longinus: 2 Boundaries in One Bug
[!WARNING] Этот код предоставляется как есть (AS IS) только в образовательных и исследовательских целях. Не используйте этот PoC на производственных системах, в общих средах или против любых несанкционированных целей.
- Этот эксплоит демонстрирует критическую уязвимость удалённого выполнения кода (RCE) (CVE-2026-6307), которая может полностью скомпрометировать песочницу рендерера Chrome.
- Запуск или размещение этого кода может вызвать срабатывание антивирусов, оповещения систем мониторинга безопасности или юридические последствия при неправомерном использовании.
- Авторы и сопровождающие репозитория не несут никакой ответственности за любой ущерб, неправомерное использование или незаконную деятельность, возникшие в результате использования этого кода.
- Используйте исключительно в изолированных лабораторных средах с соответствующим разрешением. Предназначено только для оборонительных исследований, анализа уязвимостей и тестирования blue team.
Этот репозиторий содержит Proof-of-Concept (PoC) для CVE-2026-6307 («Longinus») — уязвимости путаницы типов (type confusion) высокой степени серьёзности в компиляторе TurboFan движка Google V8. Ошибка возникает из-за неполного сравнения на равенство в FrameStateFunctionInfo при инлайнинге вызовов JS-to-WebAssembly, а именно из-за пропуска поля signature_ структуры JSToWasmFrameStateFunctionInfo.
Этот недостаток позволяет некорректно объединять узлы FrameState с различающимися типами возвращаемых значений (externref vs i64). Во время ленивой деоптимизации деоптимизатор неверно интерпретирует возвращаемые регистры, что даёт мощные примитивы произвольного чтения/записи:
addrof(target) — утечка адреса JavaScript-объекта в виде BigInt.fakeobj(addr) — материализация поддельного JavaScript-объекта по произвольному адресу.Эти примитивы пробивают как песочницу кучи V8, так и границы песочницы рендерера одной уязвимостью в сочетании с соответствующими последующими техниками.
Воздействие: удалённое выполнение кода (RCE) внутри изолированного процесса рендерера через вредоносный JavaScript (например, специально созданную веб-страницу).
FrameState, содержащие JSToWasmFrameStateFunctionInfo.==) для FrameStateFunctionInfo не сравнивает сигнатуру функции WebAssembly (signature_).FrameState с несовпадающими типами возвращаемых значений.externref интерпретируется как i64 → биты указателя утекают как BigInt (addrof).i64 интерпретируется как externref → биты целого числа материализуются как тегированная ссылка (fakeobj).За диаграммами, фрагментами IR TurboFan и описанием поведения деоптимизатора обращайтесь к полному разбору Nebula Security и прилагаемому аналитическому отчёту.
| Файл | Описание |
|---|---|
poc.js | Основной PoC, демонстрирующий примитивы addrof и fakeobj + базовую демонстрацию чтения/записи. |
gen.py | Вспомогательный скрипт для генерации вариантов PoC или каркаса пейлоада. |
val.py | Утилиты проверки и тестирования примитивов. |
cve-2026-6307_d8_execution.yml | Конфигурация / рабочий процесс для запуска PoC в оболочке V8 d8. |
cve-2026-6307_longinus_poc.yar | YARA-правило для обнаружения сигнатуры PoC или связанных шаблонов. |
d8 примерно за март–июнь 2026 года).--allow-natives-syntax --expose-wasmd8 с --turbo-dynamic-map-checks или аналогичными флагами для отладки.# Using d8 shell
./d8 --allow-natives-syntax --expose-wasm poc.js
Ожидаемое поведение (на уязвимой сборке):
addrof фиктивного объекта.fakeobj (проверка идентичности проходит).Примечание: полный RCE требует дополнительной проработки (расчёт смещений, взаимодействие WASM/GC, побег из песочницы). Этот PoC сосредоточен на основных примитивах.
Включённое правило .yar можно использовать в инструментах безопасности для выявления шаблона PoC в скриптах или памяти.
Дисклеймер: этот репозиторий предоставляется только в образовательных, оборонительных и исследовательских целях. Не используйте на несанкционированных системах. Авторы не несут ответственности за неправомерное использование.
По вопросам, предложениям или разработке вариантов открывайте issue или PR.
Последнее обновление: июль 2026 года