Medium CVSS 6.5 webkit Type Confusion 🔧 Commit mapped

Overview

Medium
Severity
6.5
CVSS
No
Exploited ITW
Fixed
Fix Status
DescriptionProcessing maliciously crafted web content may lead to an unexpected process crash
ComponentJSC
Sub-componentJSC Wasm
Bug ClassType Confusion
Tracker303444
Fix commit4572dd488e4e (WebKit/WebKit) +86/-5
CWECWE-119, CWE-416, CWE-787, CWE-120 (Buffer bounds error, Use-after-free, Out-of-bounds write, Buffer overflow)
CVSS vectorCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H
CISA KEVNot listed
CreditedHanQing from TSDubhe and Nan Wang (@eternalsakura13)
Disclosed2026-02-11

Background

OMG JIT
JavaScriptCore’s Optimizing (highest-tier) WebAssembly compiler; BBQ is the lower baseline Wasm tier, both of which emit native code that must respect calling conventions and register usage.
Wasm tail call
A return_call/return_call_indirect that reuses the caller’s frame for the callee, requiring the JIT to shuffle arguments over the existing frame and jump rather than call, which is where prepareForTailCallImpl operates.
MacroAssembler scratch register
A temporary register the assembler is allowed to use (jit.scratchRegister()); its identity and aliasing behavior differ by architecture, e.g. it can overlap argument registers on x86_64 but is a dedicated temp on ARM64.
AllowMacroScratchRegisterUsage / DisallowMacroScratchRegisterUsage
RAII guards that permit or forbid the assembler from using the scratch register in a code region, used to prevent scratch use from clobbering live inputs.
calleeSaveRegisterAtOffsetList / emitRestore
The set of callee-saved registers and their spill offsets for the compiled function; emitRestore(calleeSaves) reloads them to establish a valid frame before the current one is clobbered for the tail call.

Root Cause Analysis

This commit fixes architecture-specific scratch-register handling in the WebAssembly JITs. The central change is in WasmOMGIRGenerator.cpp’s prepareForTailCallImpl(), the code emitted to set up a WebAssembly tail call: it must shuffle the callee’s arguments into place over the current frame and then jump, which requires a scratch register (auto tmp = jit.scratchRegister()). The original code handled the scratch register with logic that is only correct for x86_64: on x64 the MacroAssembler scratch register is a general-purpose register that can alias one of the incoming argument registers, so it may need to be spilled to a stack slot (tmpNeedsSaving / tmpSpillOffsetRelativeToOriginalSP) before being clobbered and reloaded afterward, and after reloading it the code wraps the tail of the sequence in DisallowMacroScratchRegisterUsage because further scratch use could clobber an input. Applying this x64-shaped logic on other architectures (e.g. ARM64, where the assembler scratch is a dedicated data-temp that never aliases wasm argument or callee-save registers) was both unnecessary and unsound: the non-x64 path lacked the frame-restore step needed before the current frame is clobbered.

The patch conditionalizes the spilling logic behind #if CPU(X86_64); on the #else path it instead sets tmpNeedsSaving to a constexpr false, calls jit.emitRestore(calleeSaves) to ‘set up a valid frame so that we can clobber this one,’ and (under ASSERT_ENABLED) adds assertions that the scratch tmp never equals any argument GPR/FPR and is never a callee-save register. The DisallowMacroScratchRegisterUsage guard at the end is likewise restricted to x86_64. The saveSrc lambda’s capture list is changed from an explicit list to [=] so it compiles under both the runtime-bool (x64) and constexpr (non-x64) forms of tmpNeedsSaving/tmpSpillOffsetRelativeToOriginalSP. The second file, WasmBBQJIT.cpp, contains a related x86_64 scratch fix in a constant-operand float shaping branch (the diff’s nearest label is addI32Extend8S but the body does absFloat then a conditional sign flip): on x86_64 the sign negation is now done by moving the float to wasmScratchGPR, xor32 with the 0x80000000 sign bit, and moving back, instead of MacroAssembler negateFloat. The precise way the pre-fix non-x64 tail-call code corrupted state (which register got clobbered, and whether it led to memory corruption versus a controlled trap) is not spelled out in the diff, so that mechanism is an inference; what the diff establishes is that the scratch/frame handling was arch-incorrect off x86_64 and is now split per-CPU with a proper frame restore and debug asserts. The fuzzer-generated JSTests case (a large tail-call-heavy Wasm module invoked via fn5() under a watchdog) is the regression reproducer.

Key insight
The bug is an architecture-portability defect in the Wasm tail-call prologue: scratch-register spill/frame-clobber logic written for x86_64’s aliasing scratch register was applied unchanged on other CPUs that need a frame restore and different guarantees instead, and the fix cleanly separates the x86_64 and non-x86_64 code paths and adds a proper emitRestore plus aliasing assertions.

Attack Path

  1. Deliver a crafted Wasm module Serve web content that instantiates an attacker-authored WebAssembly module (as the test does via WebAssembly.instantiate of a base64 blob) containing functions that use return_call / return_call_indirect tail calls with argument layouts chosen to exercise the scratch-register/frame setup.
  2. Force OMG (or BBQ) compilation Invoke the tail-calling exports repeatedly (the test loops calling fn5()) so the affected function tiers up into the OMG optimizing JIT and prepareForTailCallImpl emits the buggy per-arch sequence on the target CPU.
  3. Trigger the arch-specific miscompile On a non-x86_64 target (e.g. Apple silicon/ARM64), the tail-call prologue clobbers the current frame without the frame restore the fix adds, or mishandles the scratch register, producing incorrect machine code during the argument shuffle.
  4. Reach corrupted state Executing the miscompiled tail call yields wrong register/stack contents; in the reproducer this surfaces as an unexpected process crash (guarded by the watchdog). Escalation beyond a crash is inference, not shown by the diff.

Impact Assessment

Classified LogicError / medium, the demonstrated effect is an unexpected crash of the WebContent (renderer) process, reachable from unprivileged web content that merely instantiates and calls a crafted Wasm module with tail calls, and it is architecture-dependent (the non-x86_64 path is the one being corrected). A JIT that clobbers the current frame or a live input register during a tail-call shuffle is in principle a strong corruption primitive (attacker-influenced values landing in wrong registers/stack slots), so escalation from crash toward controlled memory corruption is conceivable but is inference; the commit and reproducer only establish a crash. Impact is contained to the WebContent sandbox with no indicated sandbox escape.

Changed Functions

FunctionChangeNotes
if
Source/JavaScriptCore/wasm/WasmBBQJIT.cpp
modified
for
JSTests/wasm/stress/omg-tail-call-clobber-scratch-register-2.js
modified

Files Changed

  • JSTests/wasm/stress/omg-tail-call-clobber-scratch-register-2.js
  • Source/JavaScriptCore/wasm/WasmBBQJIT.cpp
  • Source/JavaScriptCore/wasm/WasmOMGIRGenerator.cpp

Audit Directions

  • Rest of prepareForTailCallImpl and tail-call codegen
    Review the whole prepareForTailCallImpl and its callers in WasmOMGIRGenerator.cpp for any remaining assumption that jit.scratchRegister() may/mustn’t alias inputs or that the frame is valid; grep for ‘scratchRegister’, ’tmpNeedsSaving’, ’emitRestore’, ‘AllowMacroScratchRegisterUsage’, and ‘DisallowMacroScratchRegisterUsage’.
  • BBQ/OMG float sign/negate on x86_64
    Check other float operations that use negateFloat/absFloat around constant operands in WasmBBQJIT.cpp and WasmOMGIRGenerator.cpp for the same x64 issue the sign-flip fix addresses; grep for ’negateFloat’, ‘absFloat’, ‘moveFloatTo32’, and ‘0x80000000’.
  • Other #if CPU(X86_64) vs generic register logic in Wasm JITs
    Look for register-allocation or spill code in the Wasm JITs that lacks per-CPU guards yet relies on x86_64-specific scratch/argument aliasing; grep across Source/JavaScriptCore/wasm for ‘CPU(X86_64)’, ‘wasmScratchGPR’, ‘scratchRegister’, and calleeSave handling to find un-conditionalized siblings.
  • Cross-arch JIT scratch assumptions repo-wide
    Search the broader assembler/JIT for places assuming the macro scratch register never (or always) aliases call arguments; grep for ‘scratchRegister()’ together with argument-shuffle or ValueRep/params loops in FTL and Wasm code, prioritizing ARM64-only or RISC paths.
diff --git a/Source/JavaScriptCore/wasm/WasmBBQJIT.cpp b/Source/JavaScriptCore/wasm/WasmBBQJIT.cpp
index 5ecbe01f0394..998815f6bcfb 100644
--- a/Source/JavaScriptCore/wasm/WasmBBQJIT.cpp
+++ b/Source/JavaScriptCore/wasm/WasmBBQJIT.cpp
@@ -2980,8 +2980,15 @@ PartialResult BBQJIT::addI32Extend8S(Value operand, Value& result)
             } else {
                 bool signBit = std::bit_cast<uint32_t>(rhs.asF32()) & 0x80000000u;
                 m_jit.absFloat(lhsLocation.asFPR(), resultLocation.asFPR());
-                if (signBit)
+                if (signBit) {
+#if CPU(X86_64)
+                    m_jit.moveFloatTo32(resultLocation.asFPR(), wasmScratchGPR);
+                    m_jit.xor32(TrustedImm32(std::bit_cast<uint32_t>(static_cast<float>(-0.0))), wasmScratchGPR);
+                    m_jit.move32ToFloat(wasmScratchGPR, resultLocation.asFPR());
+#else
                     m_jit.negateFloat(resultLocation.asFPR(), resultLocation.asFPR());
+#endif
+                }
             }
         )
     )
diff --git a/Source/JavaScriptCore/wasm/WasmOMGIRGenerator.cpp b/Source/JavaScriptCore/wasm/WasmOMGIRGenerator.cpp
index 0b11bd4ee903..0f5b27f94fef 100644
--- a/Source/JavaScriptCore/wasm/WasmOMGIRGenerator.cpp
+++ b/Source/JavaScriptCore/wasm/WasmOMGIRGenerator.cpp
@@ -5343,10 +5343,14 @@ static inline void prepareForTailCallImpl(unsigned functionIndex, CCallHelpers&
 
     RegisterAtOffsetList calleeSaves = params.code().calleeSaveRegisterAtOffsetList();
 
-    // Be careful not to clobber this below.
-    // We also need to make sure that we preserve this if it is used by the patchpoint body.
     AllowMacroScratchRegisterUsage allowScratch(jit);
     auto tmp = jit.scratchRegister();
+
+#if CPU(X86_64)
+    // On x64, the scratch register may alias one of the inputs and needs special saving.
+    //
+    // Be careful not to clobber this below.
+    // We also need to make sure that we preserve this if it is used by the patchpoint body.
     bool tmpNeedsSaving = false;
     int tmpSpillOffsetRelativeToOriginalSP = 0;
 
@@ -5378,6 +5382,30 @@ static inline void prepareForTailCallImpl(unsigned functionIndex, CCallHelpers&
         tmpSpillOffsetRelativeToOriginalSP = allocateSpill(WidthPtr);
         jit.storePtr(tmp, CCallHelpers::Address(MacroAssembler::stackPointerRegister, tmpSpillOffsetRelativeToOriginalSP));
     }
+#else
+    constexpr bool tmpNeedsSaving = false;
+    constexpr int tmpSpillOffsetRelativeToOriginalSP = 0;
+
+    // Set up a valid frame so that we can clobber this one.
+    jit.emitRestore(calleeSaves);
+
+#if ASSERT_ENABLED
+    for (unsigned i = 0; i < params.size(); ++i) {
+        auto arg = params[i];
+        if (arg.isGPR()) {
+            ASSERT(!calleeSaves.find(arg.gpr()));
+            ASSERT(arg.gpr() != tmp);
+            continue;
+        }
+        if (arg.isFPR()) {
+            ASSERT(!calleeSaves.find(arg.fpr()));
+            continue;
+        }
+    }
+
+    ASSERT(!calleeSaves.find(tmp));
+#endif // ASSERT_ENABLED
+#endif // CPU(X86_64)
 
 #if ASSERT_ENABLED
     // Let's make sure we never rely on these slots, so we can use them for scratch in the future.
@@ -5508,7 +5536,7 @@ static inline void prepareForTailCallImpl(unsigned functionIndex, CCallHelpers&
             continue;
         }
 
-        auto saveSrc = [tmp, tmpNeedsSaving, tmpSpillOffsetRelativeToOriginalSP, dstType, &allocateSpill, &jit, &fpOffsetToSPOffset](ValueRep src) -> std::tuple<int, Width> {
+        auto saveSrc = [=, &allocateSpill, &jit, &fpOffsetToSPOffset](ValueRep src) -> std::tuple<int, Width> {
             int srcOffset = 0;
             if (tmpNeedsSaving && src.isGPR() && src.gpr() == tmp) {
                 // Before tmp may have been clobbered, it was spilled to tmpSpill.
@@ -5645,9 +5673,11 @@ static inline void prepareForTailCallImpl(unsigned functionIndex, CCallHelpers&
     if (tmpNeedsSaving)
         jit.loadPtr(CCallHelpers::Address(MacroAssembler::stackPointerRegister, tmpSpillOffsetRelativeToOriginalSP), tmp);
 
-    // Nothing after restoring tmp can use the scratch register since it might clobber an input.
     {
+#if CPU(X86_64)
+        // On x64, nothing after restoring tmp can use the scratch register since it might clobber an input.
         DisallowMacroScratchRegisterUsage disallowScratch(jit);
+#endif
 
         jit.addPtr(MacroAssembler::TrustedImm32(newSPAtPrologueOffsetFromSP), MacroAssembler::stackPointerRegister);
 
diff --git a/JSTests/wasm/stress/omg-tail-call-clobber-scratch-register-2.js b/JSTests/wasm/stress/omg-tail-call-clobber-scratch-register-2.js
new file mode 100644
index 000000000000..74e1bc756ff4
--- /dev/null
+++ b/JSTests/wasm/stress/omg-tail-call-clobber-scratch-register-2.js
@@ -0,0 +1,44 @@
+//@ runDefault("--useDollarVM=1", "--watchdog-exception-ok", "--watchdog=1000", "--useConcurrentJIT=0")
+function instantiate(moduleBase64, importObject) {
+    let bytes = Uint8Array.fromBase64(moduleBase64);
+    return WebAssembly.instantiate(bytes, importObject);
+  }
+  const isJIT = callerIsBBQOrOMGCompiled;
+const extra = {isJIT};
+(async function () {
+let memory0 = new WebAssembly.Memory({initial: 3885, shared: false, maximum: 7500});
+let fn0 = function () {
+};
+let fn1 = function () {
+};
+let fn2 = function () {
+};
+let fn3 = function () {
+return [265n, 1751n];
+};
+let tag0 = new WebAssembly.Tag({parameters: []});
+let global0 = new WebAssembly.Global({value: 'i32', mutable: true}, 1052640852);
+let global1 = new WebAssembly.Global({value: 'f64', mutable: true}, 533559.2198645367);
+let global2 = new WebAssembly.Global({value: 'anyfunc', mutable: true}, null);
+let global3 = new WebAssembly.Global({value: 'anyfunc', mutable: true}, global2.value);
+let global4 = new WebAssembly.Global({value: 'i64', mutable: true}, 1379923706n);
+let table0 = new WebAssembly.Table({initial: 45, element: 'externref'});
+let table1 = new WebAssembly.Table({initial: 12, element: 'anyfunc'});
+let table2 = new WebAssembly.Table({initial: 58, element: 'externref', maximum: 324});
+let table3 = new WebAssembly.Table({initial: 25, element: 'anyfunc'});
+let table4 = new WebAssembly.Table({initial: 44, element: 'anyfunc', maximum: 429});
+let m0 = {fn1, fn2, fn3, global2, memory0, table0, table2, table3};
+let m2 = {fn0, global1, global3, global4, tag0, tag1: tag0};
+let m1 = {global0, table1, table4};
+let importObject0 = /** @type {Imports2} */ ({extra, m0, m1, m2});
+let i0 = await instantiate('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', importObject0);
+let {fn4, fn5, fn6, global5, global6, global7, global8, global9, global10, global11, global12, global13, global14, global15, global16, memory1, table5, table6, table7} = /**
+  }} */ (i0.instance.exports);
+try {
+  for (let k=0; k<5; k++) {
+  let zzz = fn5();
+  }
+} catch (e) {
+}
+})().then(() => {
+})
Loading diff…

Regression Test / PoC

shipped with the fix
diff --git a/JSTests/wasm/stress/omg-tail-call-clobber-scratch-register-2.js b/JSTests/wasm/stress/omg-tail-call-clobber-scratch-register-2.js
new file mode 100644
index 000000000000..74e1bc756ff4
--- /dev/null
+++ b/JSTests/wasm/stress/omg-tail-call-clobber-scratch-register-2.js
@@ -0,0 +1,44 @@
+//@ runDefault("--useDollarVM=1", "--watchdog-exception-ok", "--watchdog=1000", "--useConcurrentJIT=0")
+function instantiate(moduleBase64, importObject) {
+    let bytes = Uint8Array.fromBase64(moduleBase64);
+    return WebAssembly.instantiate(bytes, importObject);
+  }
+  const isJIT = callerIsBBQOrOMGCompiled;
+const extra = {isJIT};
+(async function () {
+let memory0 = new WebAssembly.Memory({initial: 3885, shared: false, maximum: 7500});
+let fn0 = function () {
+};
+let fn1 = function () {
+};
+let fn2 = function () {
+};
+let fn3 = function () {
+return [265n, 1751n];
+};
+let tag0 = new WebAssembly.Tag({parameters: []});
+let global0 = new WebAssembly.Global({value: 'i32', mutable: true}, 1052640852);
+let global1 = new WebAssembly.Global({value: 'f64', mutable: true}, 533559.2198645367);
+let global2 = new WebAssembly.Global({value: 'anyfunc', mutable: true}, null);
+let global3 = new WebAssembly.Global({value: 'anyfunc', mutable: true}, global2.value);
+let global4 = new WebAssembly.Global({value: 'i64', mutable: true}, 1379923706n);
+let table0 = new WebAssembly.Table({initial: 45, element: 'externref'});
+let table1 = new WebAssembly.Table({initial: 12, element: 'anyfunc'});
+let table2 = new WebAssembly.Table({initial: 58, element: 'externref', maximum: 324});
+let table3 = new WebAssembly.Table({initial: 25, element: 'anyfunc'});
+let table4 = new WebAssembly.Table({initial: 44, element: 'anyfunc', maximum: 429});
+let m0 = {fn1, fn2, fn3, global2, memory0, table0, table2, table3};
+let m2 = {fn0, global1, global3, global4, tag0, tag1: tag0};
+let m1 = {global0, table1, table4};
+let importObject0 = /** @type {Imports2} */ ({extra, m0, m1, m2});
+let i0 = await instantiate('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', importObject0);
+let {fn4, fn5, fn6, global5, global6, global7, global8, global9, global10, global11, global12, global13, global14, global15, global16, memory1, table5, table6, table7} = /**
+  }} */ (i0.instance.exports);
+try {
+  for (let k=0; k<5; k++) {
+  let zzz = fn5();
+  }
+} catch (e) {
+}
+})().then(() => {
+})
Loading diff…

Original Bug Report

The reporter's bug is still restricted on the tracker.