Description
Ladybird contains a dangling-reference memory-safety flaw in its WebAssembly ESM-integration module loader. When a JavaScript function is imported into a WebAssembly module via the ESM path, WebAssemblyModule.cpp passes a stack-local Wasm::FunctionType by reference to create_host_function, whose host callback captures and later reads that reference; once the ESM link-loop iteration ends the FunctionType is destroyed, leaving the callback with a dangling reference (the normal instantiate path uses a long-lived reference and is not affected). Stale result-type data lets the host callback return an empty result vector for a statically non-empty result, so the destination register retains an attacker-influenced value that is then consumed by the WASM-GC array.set handler, which bit-casts the reference low bits to an ArrayInstance pointer after only a null check, yielding an arbitrary write. A web page can chain this into code execution in the WebContent process. Verified reachable from HTML content without any instrumentation or source modification.
Published: 2026-07-01
Score: 8.9 High
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

Lady loader. When a JavaScript function is imported via the ESM path a stack‑local FunctionType is passed by reference to create_host_function. The resulting host callback later dereferences that reference after the FunctionType has been destroyed, leaving a dangling reference. The stale result‑type data leads the callback to return an empty result vector for a non‑empty result, causing an attacker‑controlled value to appear in a destination register. That value is then consumed by the WebAssembly GC array.set handler, which bit‑casts the low bits to an ArrayInstance pointer after only a null check, resulting in an arbitrary write. The arbitrary write can be chained to code execution in the WebContent process. The flaw is identified as dangling reference (CWE‑787), unchecked null dereference (CWE‑825), and improper type conversion (CWE‑843).

Affected Systems

The vulnerability affects the Ladybird web browser. Any release that includes the WebAssembly ESM integration module loader is potentially impacted; no specific version ranges are listed. A web page that imports a .wasm module via ESM can trigger the exploit, and the flaw is reachable directly from arbitrary HTML content without the need for source modification or user interaction.

Risk and Exploitability

The CVSS score of 8.9 indicates high severity, while the EPSS score of less than 1 percent suggests exploitation is currently unlikely but possible. The flaw is not listed in the CISA KEV catalog. Based on the description, the likely attack vector is web‑reachable: an attacker only needs to host or deliver a malicious .wasm module in an ESM context, which a victim’s browser will load automatically, enabling code execution inside the WebContent process.

Generated by OpenCVE AI on July 21, 2026 at 13:23 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Apply the vendor’s documented fix for Ladybird.
  • Disable or block WebAssembly ESM loading within the browser, for example by blocking .wasforcing non‑ESM import paths, to eliminate the vulnerable code path.
  • Enforce stricter sandboxing or reduce the privileges of the WebContent process to limit the impact of any write that might occur if the flaw is triggered.

Generated by OpenCVE AI on July 21, 2026 at 13:23 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Mon, 06 Jul 2026 23:15:00 +0000

Type Values Removed Values Added
First Time appeared Ladybirdbrowser
Ladybirdbrowser ladybird
Vendors & Products Ladybirdbrowser
Ladybirdbrowser ladybird

Thu, 02 Jul 2026 16:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'poc', 'Technical Impact': 'total'}, 'version': '2.0.3'}


Wed, 01 Jul 2026 20:00:00 +0000

Type Values Removed Values Added
Description Ladybird contains a dangling-reference memory-safety flaw in its WebAssembly ESM-integration module loader. When a JavaScript function is imported into a WebAssembly module via the ESM path, WebAssemblyModule.cpp passes a stack-local Wasm::FunctionType by reference to create_host_function, whose host callback captures and later reads that reference; once the ESM link-loop iteration ends the FunctionType is destroyed, leaving the callback with a dangling reference (the normal instantiate path uses a long-lived reference and is not affected). Stale result-type data lets the host callback return an empty result vector for a statically non-empty result, so the destination register retains an attacker-influenced value that is then consumed by the WASM-GC array.set handler, which bit-casts the reference low bits to an ArrayInstance pointer after only a null check, yielding an arbitrary write. A web page can chain this into code execution in the WebContent process. Verified reachable from HTML content without any instrumentation or source modification.
Title Ladybird - Web-Reachable Code Execution via Dangling FunctionType Reference in WebAssembly ESM Integration
Weaknesses CWE-787
CWE-825
CWE-843
References
Metrics cvssV3_1

{'score': 8.3, 'vector': 'CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:C/C:H/I:H/A:H'}

cvssV4_0

{'score': 8.9, 'vector': 'CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:A/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H'}


Subscriptions

Ladybirdbrowser Ladybird
cve-icon MITRE

Status: PUBLISHED

Assigner: VulnCheck

Published:

Updated: 2026-07-02T15:55:07.091Z

Reserved: 2026-07-01T17:20:57.549Z

Link: CVE-2026-58592

cve-icon Vulnrichment

Updated: 2026-07-02T15:27:48.054Z

cve-icon NVD

No data.

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-07-21T13:30:07Z

Weaknesses
  • CWE-787

    Out-of-bounds Write

  • CWE-825

    Expired Pointer Dereference

  • CWE-843

    Access of Resource Using Incompatible Type ('Type Confusion')