Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2026-2766-but-with-wasm — CVE-2026-2766, aber mit wasm | Kitploit
Tools/GitHubGitHub/sneakynachos/cve-2026-2766-but-with-wasm
SchwachstellenanalyseExploitationShellcodePayload-EntwicklungBinary-Exploitation
GitHubsneakynachos/cve-2026-2766-but-with-wasm

CVE-2026-2766-but-with-wasm

CVE-2026-2766, aber mit wasm

Repository anzeigen
111vor 1 MonatNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2026-2766, aber mit wasm

Status: validierter Crash-PoC mit nachgewiesener Control-Flow-Übernahme (Crash pc = Poison der freigegebenen Zelle 0xcdcdcdcdcdcdcdcd unter der Debug- Shell — die Engine springt zu einem Zeiger, der aus dem freigegebenen ICScript gelesen wird). Verbleibende Arbeit: die zurückgewonnenen Bytes kontrollieren. Siehe research/README.md.

Eine Kette aus der WasmBlazeFox-Familie zu einem Bug aus 2026: CVE-2026-2766, „JIT- Fehlkompilierung / Use-after-Free in der JavaScript Engine: JIT-Komponente“, behoben in Firefox 148 (MFSA 2026-13). Das Endspiel ist dasselbe wie bei CVE-2024-29943-but-with-wasm: das Primitiv in die Kontrolle über einen Code-Zeiger verwandeln und ihn auf eine WASM-JIT- Seite voller Shellcode-Konstanten richten.

Ursache

Aus Mozillas eigenen Regressionstest-Kommentaren (Bug 2013583, Test gelandet in hg 457b68097f81) und dem ICScript Lifetimes SMDOC in js/src/jit/JitScript.h:

  • Während des Ion-Trial-Inlinings ruft ein polymorpher Call-Site-Übergang removeInlinedChild auf → das ICScript des Kindes wird aus inlinedChildren_ entfernt, wird aber weiterhin vom inlinedScripts_-Vektor des InliningRoot referenziert — und, fatalerweise, vom veralteten CallInlinedFunction-Stub, der noch in der IC-Kette des Aufrufers sitzt.
  • Eine kompaktierende GC (gczeal(14, 1), d. h. ZealCompactValue bei jeder Allokation) verschiebt/evakuiert das verwaiste ICScript, während die veraltete Stub- Kette die alte Adresse behält.
  • Der nächste Aufruf über den alten Stub dereferenziert den veralteten ICScript- Zeiger → Use-after-Move. In ASAN/Fuzzing-Builds wird die freigegebene Zelle mit 0xe5 vergiftet, was einen sehr gut lesbaren Crash ergibt.

Crash-Nachweis

Verwundbarer Build: mozilla-central Rev b3663be61a1a (Nightly vom 2026-01-15; der Fix landete zwischen 2026-01-15 und 2026-02-09 — das Nightly vom 09.02. überlebt). Shell: Taskcluster linux64-fuzzing-asan-opt jsshell für diese Rev (benötigt für gczeal; release-opt-Shells haben es nicht).

root@kitploit:~
./js --ion-warmup-threshold=100000 poc.js

== ERROR: AddressSanitizer: SEGV on unknown address 0xe5e5e5e5e5e5e5e5
   The signal is caused by a READ memory access.
   #0-#3 <unknown module>          <- baseline JIT code
   #4 EnterJit / MaybeEnterJit     <- js/src/jit/Jit.cpp
   #10 js::jit::DoCallFallback     <- BaselineIC.cpp (the stale IC chain)
   rdi = 0xe5e5e5e5e5e5e5e5        <- the freed ICScript

Die Dereferenzierung erfolgt in Baseline-JIT-Code, der die veraltete Stub-Kette durchläuft: Kontrolle über die zurückgewonnene Zelle = Kontrolle über die ICEntry/Stub-Felder, denen die Baseline vertraut, einschließlich des Stub-Code-Zeigers, zu dem sie springt.

Ausbeutungsplan (in Arbeit)

root@kitploit:~
orphaned ICScript (this PoC)
  -> compacting GC moves it; stale chain keeps old address
    -> reclaim the old cell with controlled bytes (size-class spray)
      -> baseline reads fake ICEntry -> fake ICStub -> fake code_ pointer
        -> jump into the WASM JIT page shellcode (f64.const immediates,
           FuncExport entry-offset overwrite — see the 2024-29943 repo)

Siehe research/README.md für das vollständige Waffenisierungs-Log. Zusammenfassung des aktuellen Stands:

  • Der Bug ist ein Use-after-Move auf einem malloc'ten (TrailingArray) ICScript — im Prinzip per Spray zurückgewinnbar mit größenklassierten Puffern.
  • Das Freigeben und die Verwendung liegen Mikrosekunden auseinander innerhalb des finalen new Ctor(flag)-Aufrufs, ohne JS-Callback-Punkt dazwischen; naive Sprays verfehlen entweder das Zeitfenster (reclaim1/2) oder wirbeln den IC-Zustand durch einen Zeal-GC-Sturm durcheinander (reclaim3). Die veraltete Kette überlebt ein einzelnes einfaches gc() (purge_check).
  • Der nächste Schritt ist die Analyse der Engine-Allokationen unter gdb (welche Allokationen zwischen Freigabe und Verwendung in der freigegebenen Zelle landen). gdb funktioniert nicht unter OrbStacks x86-Emulation, daher braucht dies eine native Linux-x86-64-Maschine.

Die WASM-Stufe selbst ist bereits gebaut und demonstriert in CVE-2024-29943-but-with-wasm; nur die Objektmodell-Offsets müssen für diesen Build aus der FF149-Ära neu hergeleitet werden.

Dateien

  • poc.js — Mozillas Regressionstest (Bug 2013583), verifiziert, dass er die 2026-01-15-ASAN-jsshell wie oben gezeigt zum Absturz bringt.

Referenzen

  • Advisory: MFSA 2026-13 (Firefox 148)
  • Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=2013583 (eingeschränkt)
  • Test-Landung: hg 457b68097f81
  • Verwandte Ketten: https://github.com/SneakyNachos/CVE-2024-29943-but-with-wasm und https://github.com/SneakyNachos/CVE-2026-2764-but-with-wasm
  • Ursprung der Technik: https://github.com/SneakyNachos/WasmBlazeFox
Tool herunterladen