Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2026-2796-and-CVE-2026-2768-escape-the-wasm-box — Полная цепочка Firefox: CVE-2026-2796 wasm type confusion -> RCE в контентном процессе, плюс анализ выхода из родительского процесса CVE-2026-2768 (оба исправлены в Firefox 148) | Kitploit
Инструменты/GitHubGitHub/sneakynachos/cve-2026-2796-and-cve-2026-2768-escape-the-wasm-box
Анализ уязвимостейЭксплуатацияВеб-безопасностьЭксплуатация Бинарных Файлов
GitHubsneakynachos/cve-2026-2796-and-cve-2026-2768-escape-the-wasm-box

CVE-2026-2796-and-CVE-2026-2768-escape-the-wasm-box

Полная цепочка Firefox: CVE-2026-2796 wasm type confusion -> RCE в контентном процессе, плюс анализ выхода из родительского процесса CVE-2026-2768 (оба исправлены в Firefox 148)

Репозиторий
13 дней назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2026-2796 + CVE-2026-2768 — Побег из Wasm-песочницы

Исследование полной цепочки эксплуатации Firefox: путаница типов в WebAssembly для выполнения кода в renderer-процессе, объединённая с багом родительского процесса для побега из песочницы. Обе ошибки исправлены в Firefox 148 (MFSA-2026-13); цель здесь — nightly-дерево Firefox 148 @ 2fbc0748c4 (2026-01-14), которое предшествует обоим исправлениям.

  • CVE-2026-2796 (Bug 2013165): JIT-мискомпиляция / путаница сигнатурных типов в оптимизации импорта WebAssembly в SpiderMonkey.
  • CVE-2026-2768 (Bug 2014101): побег из песочницы — непроверенные IPC-данные приводят к записи за пределами границ в коде IndexedDB родительского процесса.

Архитектура цепочки

root@kitploit:~
page loads crafted wasm module
        │
CVE-2026-2796: Function.prototype.call.bind unwrap skips signature check
        │  → i64 ↔ (ref $t) confusion → addrOf/fakeobj
        │  → fake WasmArrayObject → arbitrary R/W in the CONTENT process
        │  → forged WasmFuncRef → hijack call target ([funcref+0x38])
        ▼
native code exec INSIDE the sandboxed content process  (sbLevel 3)
        │  (sandbox blocks exec/fork — need a parent bug)
        ▼
CVE-2026-2768: forge IndexedDB add/put IPC with out-of-range
        mAutoIncrementKeyOffsets (ParamTraits<Key> validates nothing)
        │  → parent writes 8 bytes at attacker-controlled offset
        ▼
memory corruption in the UNSANDBOXED parent process = full escape

Что демонстрируется

ДемоГдеРезультат
poc/shell/poc-crash.jsjs shell0xDEADBEEF разыменован как funcref → SIGSEGV по адресу 0xdeadbf2f
poc/shell/poc-addrof.jsjs shellself-тесты произвольного чтения/записи проходят
poc/shell/poc-forge.jsjs shellуправление PC: краш по подсаженному canary
poc/shell/poc-rce.jsjs shellsystem("id > /tmp/CVE-2026-2796-PWNED; open -a Calculator") — файл содержит uid=501(sid) ..., открывается Calculator
poc/browser/stage1-browser.htmlNightly (контентный процесс, sbLevel 3)произвольное чтение/запись в песочнице вкладки; подделанный funcref прыгает на 0x4141414141414141 → вкладка падает, родительский процесс выживает
poc/browser/stage1-browser-cmd.htmlNightly (контентный процесс, sbLevel 3)утечка базы XUL, резолв posix_spawnp (0x187xxxxx), вызов с /bin/sh -c "touch /tmp/PWNED-FROM-CONTENT" → macOS-песочница запрещает exec: файл не создан, страница невредима — доказательство того, что RCE в контентном процессе сама по себе ≠ выполнение команд
poc/browser/sandbox-proof.htmlNightly (контентный процесс, sbLevel 3)нативное выполнение в рамках правил песочницы: getpid() возвращает реальный PID вкладки (совпадает с ps), а сырой libc-вызов write(1, ...) попадает в терминальный журнал браузера — без fork/exec, без открытия файлов
poc/browser/fd3-proof.htmlNightly (контентный процесс, sbLevel 3)запись 32 сырых байта в fd 3 (родительский IPDL-сокет): IPC-парсер родительского процесса потребляет байты атакующего (Message needs unreceived descriptors ... num_handles:33), отбрасывает сообщение и убивает вкладку ("Exiting due to channel error") — транспортный примитив, который stage 2 превращает в оружие с помощью корректно сформированных, но вредоносных IndexedDB-сообщений
poc/browser/stage2-trigger.html

Полный анализ первопричины для stage 2 (diff'ы исправлений, IPC-сериализация, стратегия эксплуатации) см. в docs/full-escape.md.

Сборка уязвимых целей

root@kitploit:~
# Tree: mozilla-firefox/firefox @ 2fbc0748c4 (2026-01-14, pre-FF148)

# 1) js shell (stage-1 development, unsandboxed):
cd js/src && ../../configure --enable-debug --enable-optimize \
  --without-intl-api --enable-project=js && cd _obj && make -j8

# 2) full browser (stage 2). mozconfig:
#    export CC=/usr/bin/clang ; export CXX=/usr/bin/clang++
#    ac_add_options --enable-application=browser
#    ac_add_options --disable-debug --enable-optimize
#    ac_add_options --disable-crashreporter --disable-updater --disable-tests
#    ac_add_options --enable-sandbox
#    ac_add_options --without-wasm-sandboxed-libraries
# requires: node, cbindgen, rustc >= 1.87, macOS CLT SDK
# local build notes:
#  - private header sys/fileport.h shim added to objdir dist/include/sys/
#  - one compile guard added: NSGlassEffectView (macOS 26 SDK symbol) wrapped
#    in #if __MAC_OS_X_VERSION_MAX_ALLOWED >= 260000 in widget/cocoa/
#    nsCocoaWindow.mm (build-environment fix, no security impact)

Запуск браузерных PoC: запустите obj-browser/dist/Nightly.app с профилем, в котором установлено browser.dom.window.dump.enabled=true, открывайте HTML-файлы через file:// и следите за stdout на предмет вывода dump(). Падение вкладки отображается как process <pid> exited on signal 10 в журнале родительского процесса.

Смещения (macOS arm64)

WasmArrayObject: numElements @+16, data ptr @+24, inline data @+40. WasmFuncRef: typeDef ptr @+0x40, call target @+0x38. JSFunction: нативный указатель @+0x20. js shell: os_system @ base+0x1a9f8, GOT system @ base+0x11d47b0. В браузере база XUL находится сканированием назад от указателя на нативный код WebIDL (JSFunction console.log +0x20) до Mach-O магии 0xfeedfacf; GOT _posix_spawnp @ XUL+0x9bb7d30, GOT _getpid @ XUL+0x9bb7600, GOT _write @ XUL+0x9bb87e0. Окна фейковых массивов должны находиться в out-of-line (выделенном через malloc) массиве — inline/nursery-объекты перемещаются GC во время длительных сканирований.

Охват / честные ограничения

Выполнение кода в renderer-процессе через CVE-2026-2796 полностью продемонстрировано (в shell и браузере). Анализ побега из песочницы для CVE-2026-2768 подтверждён по исходному коду и сверен с diff'ом исправления; живой сквозной триггер повреждения родительского процесса находится в разработке (см. docs). Это исследование предназначено для защитного/образовательного применения; уязвимости исправлены в текущих релизах.

Ссылки

  • MFSA-2026-13
  • NVD: CVE-2026-2796
  • Исправление CVE-2026-2796: коммит mozilla-firefox/firefox e2acef67
  • Исправление CVE-2026-2768: коммит mozilla-firefox/firefox c5dea6ec

Отказ от ответственности

Только для исследований в области безопасности, обучения и защитного тестирования. Не используйте против систем, которыми вы не владеете или на тестирование которых у вас нет явного разрешения.

Скачать инструмент
Nightly
достижимость пути родительского бага на чистом JS (ключи auto-increment индекса [1,2,3,4])