Skip to content
OpenAdvisories
High · 8.8 CVE-2026-119332 EUVD-2026-114396

Ladybird: FinalizationRegistry::cleanup() heap use-after-free via reentrant unregister()

Published Oct 30, 2026 · Updated Nov 6, 2026 · Assigned by GitHub_M

Description

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.

Affected products

VendorProductAffectedFixed
LadybirdBrowser ladybird < 209579c96473c75bd5eba9701fcadb841a045964 —

References