---
id: "CVE-2026-119332"
kind: "vulnerability"
aliases: ["CVE-2026-119332"]
title: "Ladybird browser: JavaScript cleanup callback frees memory a page can reuse"
severity: "high"
cvss: 8.8
epss: null
exploited: false
status: "open"
category: "runtime"
products: []
ecosystems: []
tags: ["javascript-engine", "ladybird", "runtime", "web-browser"]
not_affected_if: ["other-browsers"]
published_at: "2026-10-30T20:17:07+00:00"
first_seen_at: "2026-10-30T20:25:38+00:00"
updated_at: "2026-10-30T20:26:16+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-119332", "first_seen_at": "2026-10-30T20:25:38+00:00"}]
---

# Ladybird browser: JavaScript cleanup callback frees memory a page can reuse

Ladybird's JavaScript engine frees a finalization record while it is still referenced during cleanup, so the next cleanup reads freed memory. A malicious web page can use this to crash the browser and corrupt its memory, which can lead to code execution.

_Summary, check and fix written by a model from the sources; labelled as such._

## How to check

- Check whether the Ladybird build includes commit `209579c96473c75bd5eba9701fcadb841a045964`.
- Confirm the exact Ladybird version in use; the sources do not name a release version.

## Fix

- Ladybird builds that include commit `209579c96473c75bd5eba9701fcadb841a045964`; the sources do not give a release version.

## Timeline

- 2026-10-30T20:25:38+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-119332

## From the sources

Ladybird is a truly independent web browser. Prior to 209579c96473c75bd5eba9701fcadb841a045964, FinalizationRegistry::cleanup() in Libraries/LibJS/Runtime/FinalizationRegistry.cpp removed a dead record from m_records, retained an iterator to the next FinalizationRecord, and then invoked attacker-controlled JavaScript through the cleanup callback. If that callback called unregister() for the next record, remove_by_token() freed the node referenced by the retained iterator, and the next cleanup iteration read its target and held_value fields after free. This reliably crashes instrumented WebContent builds and creates a memory-corruption primitive in production builds. This vulnerability is fixed by commit 209579c96473c75bd5eba9701fcadb841a045964.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
