Out-of-bounds read/write in Google Chrome V8
CVE-2025-5419 is a high-severity memory corruption vulnerability in the V8 JavaScript and WebAssembly engine used by Google Chrome. In Google Chrome prior to 137.0.7151.68, improper bounds handling in V8 allows out-of-bounds read and write operations. A remote attacker can trigger the flaw by convincing a target to load a crafted HTML page, which can cause heap corruption in the browser process. Multiple sources in the provided content state that the vulnerability was exploited in the wild, and some reporting notes it was discovered by Google Threat Analysis Group (TAG).
Are you exposed to this one?
Mallory correlates every CVE against your assets, your vendors, and active adversary campaigns. Know which vulnerabilities matter for you, not just which ones are loud.
Impact, mitigation & remediation
What it means. What to do now. Patch path, mitigations, and the assume-compromise checklist.
Impact
What an attacker gets, and what they’ve been doing with it.
Mitigation
If you can’t patch tonight, do this now.
Remediation
Patch, then assume compromise.
Exploits
4 valid exploits after Mallory filtered fakes, detection scripts, and README-only repos (2 hidden).
Repository contains a JavaScript proof-of-concept exploit for CVE-2025-5419 in Google V8 (noted as Turboshaft Store-Store Elimination leading to an uninitialized read / type confusion style primitive). The main file (CVE-2025-5419.js) sets up float/int/bigint conversion helpers using a shared ArrayBuffer, then uses GC grooming (minor_gc/major_gc) and JIT warmup of two functions (opt_leak and opt_fake_obj) to induce a mis-optimized/uninitialized read that leaks internal pointers/metadata. From the leaked values it derives key heap metadata (maps for PACKED_ELEMENTS / PACKED_DOUBLE_ELEMENTS, FixedArray/FixedDoubleArray maps, and EmptyFixedArray) and forges a fake JSArray header inside a long-lived container array. Using this forged array, it implements stable exploitation primitives: - addrof(obj): obtains the (cage) address of a JavaScript object. - fakeobj(addr): materializes a JavaScript object reference from a supplied address. - cage_read32/64 and cage_write32/64: arbitrary read/write within the V8 sandbox/cage region by indexing into the forged double-elements array. No network communication, command execution, or reverse shell payload is present; the code stops at establishing memory read/write primitives. The README claims a defensive ‘scanner/mitigation’ application and links to GitHub releases, but the actual repository content is an exploit PoC. The GN args file (StaticReleaseWithSymbol.args.gn) documents a V8 build configuration with symbols and debug/verification options, consistent with exploit development/testing.
Repository purpose: a stabilized JavaScript exploit for CVE-2025-5419 (V8 Turboshaft Store-Store Elimination leading to uninitialized read), demonstrating escalation to powerful in-engine primitives. Structure: - CVE-2025-5419.js: core exploit. It defines float/int/bigint conversion helpers (ArrayBuffer views) and GC-shaping helpers (minor_gc/major_gc). Two JIT-trained functions (opt_leak and opt_fake_obj) are repeatedly executed to trigger optimized behavior. The exploit then: - Uses GC and the optimized uninitialized read to leak internal values (maps, elements pointers) and obtain a stable address leak for a chosen container. - Fakes a JSArray with PACKED_DOUBLE_ELEMENTS by crafting a fake object header inside a surviving container array, then obtains a usable fake reference via fake(). - Builds “cage” read/write primitives (cage_read32/64, cage_write32/64) by indexing into the faked double-elements array, effectively turning element access into arbitrary memory access within the V8 sandbox/cage region. - Implements stable addrof(obj) and fakeobj(addr) by switching the faked array’s map between PACKED_ELEMENTS and PACKED_DOUBLE_ELEMENTS and using the shared backing storage to reinterpret object pointers as doubles. - Includes validation checks to ensure expected GC/layout behavior. - README.md: explains the bug class, environment (Ubuntu 24.04) and target V8 commit, and provides references. - StaticReleaseWithSymbol.args.gn: GN args for building a release V8 with symbols and debugging aids. No network I/O, C2, or external callbacks are present; the exploit is a local engine PoC intended to be run in a vulnerable V8/d8 build to obtain in-sandbox arbitrary read/write and object/pointer primitives (not a full sandbox escape or OS-level RCE by itself).
This repository contains a proof-of-concept exploit for CVE-2025-5419, a vulnerability in the V8 JavaScript engine's StoreStoreEliminationReducer optimization. The exploit is implemented in a single JavaScript file ('exploit.js') and is intended to be run in a custom-built, vulnerable version of the V8 shell (d8). The README is minimal, only stating the CVE identifier. The exploit leverages a bug in the handling of indexed loads and stores, allowing the removal of necessary array initialization stores, which leads to the ability to read uninitialized memory. This primitive is then escalated to achieve arbitrary memory read and write within the V8 process, potentially allowing for further exploitation such as sandbox escape. The exploit requires specific build steps and configuration, including patching a V8 source file for debug builds. The code references relevant V8 source and patch URLs for context. No network endpoints are present; all exploitation occurs locally within the V8 process.
This repository contains a proof-of-concept (POC) exploit for CVE-2025-5419, a bug in the V8 JavaScript engine's Store-Store-Elimination optimization. The main file, POC.html, is a standalone HTML file with embedded JavaScript. The script repeatedly executes a function that performs a dynamic property load and store on an object, mimicking the pattern that triggers the buggy optimization in affected V8 versions. After warming up the JIT, it alerts the result, which may be a correct value, a garbage value, or cause a crash if the bug is present. The README.md simply identifies the CVE. There are no network endpoints or external resources; the exploit is entirely self-contained and must be run in a browser with a vulnerable V8 engine. The purpose of the repository is to demonstrate the presence and effect of the bug, not to provide a weaponized or post-exploitation payload.
Affected products & vendors
Products and vendors Mallory has correlated with this vulnerability. Open in Mallory to drill down to specific CPE configurations and version ranges.
Vendor-confirmed product mapping. Mallory continuously reconciles this list against your asset inventory.
Recent activity
112 sources tracked across advisories, community write-ups, and news. New activity surfaces here as Mallory finds it.
A Google Chrome V8 out-of-bounds read/write vulnerability exploited in the wild; fixed via out-of-band update.
A Chromium V8 out-of-bounds read/write vulnerability referenced in the advisory section as an additional issue deserving attention.
Out-of-bounds access in Chrome V8 enabling heap corruption and exploitation.
A critical out-of-bounds read and write vulnerability in Chrome's V8 JavaScript engine, allowing remote attackers to trigger heap corruption via crafted HTML pages.
The version that knows your environment.
Query your assets running an affected version, and investigate the blast radius.
Every observed campaign linking this CVE to a named adversary.
Malware families riding this exploit, with evidence and IOCs.
YARA, Sigma, Snort, and vendor rules, auto-deployed to your SIEM.
Cross-references every affected SKU, including bundled OEM variants.
Community discussion across Reddit, Mastodon, and other social sources.