What Is Chromium V8?
V8 is Google's open-source, high-performance JavaScript and WebAssembly engine, used in Chrome, Chromium, Edge, Opera, Node.js, and many other applications. V8 compiles JavaScript to native machine code using just-in-time (JIT) compilation, making JavaScript performance competitive with native code. Because V8 processes untrusted JavaScript from every web page, vulnerabilities in V8's engine — particularly in its JIT compiler, type inference, or array bounds handling — are among the highest-impact browser security issues. A memory corruption vulnerability in V8 can enable code execution in the renderer process, which can then be leveraged (with a sandbox escape) for full system compromise.
Overview
CVE-2016-1646 is an out-of-bounds read vulnerability in V8, the JavaScript engine used by Chromium-based browsers, that allows a remote attacker to execute arbitrary code or cause a denial of service via crafted JavaScript. The vulnerability can be exploited by serving malicious JavaScript to any browser using a Chromium V8 version prior to the fix — this includes Google Chrome, and potentially Chromium-based Microsoft Edge and Opera versions of the same era. Fixed in Chrome 49.0.2623.108 (March 24, 2016). CISA added CVE-2016-1646 to the KEV catalog in June 2022.
Affected Versions
| Browser | Version | Status |
|---|---|---|
| Google Chrome | < 49.0.2623.108 | Vulnerable |
| Chromium-based browsers (Chromium V8 equivalent era) | Pre-fix versions | Vulnerable |
| Google Chrome | 49.0.2623.108+ | Fixed |
Technical Details
Root Cause: Out-of-Bounds Read in V8 Array Handling
CVE-2016-1646 is an out-of-bounds read (CWE-125) in V8's JavaScript engine, specifically in how it handles JavaScript arrays or typed arrays during execution. The vulnerability occurs when V8 accesses memory beyond the declared bounds of an array object — reading data from adjacent heap memory.
While classified as an out-of-bounds read, such vulnerabilities in JIT-compiled JavaScript engines can enable code execution through:
- Memory disclosure — the out-of-bounds read leaks adjacent heap contents, potentially revealing memory layout (defeating ASLR), object pointers, or type information
- Type confusion — if the read value is then used as a pointer or type indicator, adjacent heap data interpreted as a V8 object can produce type confusion
- Heap corruption — combined with a write primitive (via type confusion), the vulnerability chain can overwrite function pointers or JIT-compiled code in the renderer process
- Renderer code execution — code executes within the Chrome renderer sandbox
- Sandbox escape — a separate sandbox escape (often chained with a kernel LPE) is needed for full system compromise
Cross-Browser Impact
V8 is embedded in multiple browsers beyond Chrome:
- Google Chrome — primary affected browser
- Chromium — the open-source base for many browsers
- Opera (Chromium-based since 2013)
- Microsoft Edge — prior to becoming Chromium-based in 2020, Edge used Chakra rather than V8; the original Chakra-based Edge was not affected
Attack Characteristics
| Attribute | Detail |
|---|---|
| Attack Vector | Network — malicious JavaScript in web page |
| User Interaction | Required (visit malicious page in affected browser) |
| Impact | Code execution in Chrome renderer process |
| Root Cause | Out-of-bounds array read in V8 engine |
| Browsers Affected | Chrome, Chromium-based browsers |
Discovery
Reported by anonymous researcher (or Google's Project Zero team); Google released the fix in Chrome 49.0.2623.108 on March 24, 2016.
Exploitation Context
- Browser engine exploitation: V8 vulnerabilities are among the highest-value browser exploits because they enable code execution in the renderer process for any browser using the affected V8 version; Chrome's rapid auto-update cycle limits the exposure window for patched users, but enterprise environments with managed Chrome deployments or delayed updates extend it
- Exploit kit integration: Chrome/V8 exploits are significantly more complex to weaponize reliably than Flash exploits were; CVE-2016-1646 exploitation required sophisticated heap manipulation, limiting its practical use to well-resourced actors
- Chrome sandbox: Even successful V8 exploitation only achieves code execution within Chrome's renderer sandbox — a second sandbox escape vulnerability is needed for full OS access, increasing the complexity of the full attack chain
- CISA KEV (2022): Added June 2022, reflecting confirmed exploitation
Remediation
-
Update Google Chrome — upgrade to Chrome 49.0.2623.108 or later (any current Chrome version is patched). Chrome auto-updates by default — verify automatic updates are not disabled.
-
Update other Chromium-based browsers — ensure Chromium-based browsers (Opera, older Edge) are updated to versions that include the V8 fix.
-
Enable Chrome auto-updates — ensure Chrome's auto-update mechanism is not blocked by enterprise policy or network restrictions; Chrome browser security updates should be applied rapidly.
-
Site isolation — Chrome's Site Isolation feature (enabled by default in Chrome 67+) limits the impact of renderer process compromises by separating sites into separate renderer processes.
Key Details
| Property | Value |
|---|---|
| CVE ID | CVE-2016-1646 |
| Vendor / Product | Google — Chromium V8 |
| NVD Published | 2016-03-29 |
| NVD Last Modified | 2025-10-22 |
| CVSS 3.1 Score | 8.8 |
| CVSS 3.1 Vector | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H |
| Severity | HIGH |
| CWE | CWE-125 — Out-of-bounds Read find similar ↗ |
| CISA KEV Added | 2022-06-08 |
| CISA KEV Deadline | 2022-06-22 |
| Known Ransomware Use | No |
CVSS 3.1 Breakdown
Required Action
Timeline
| Date | Event |
|---|---|
| 2016-03-24 | Google releases Chrome 49.0.2623.108 patching CVE-2016-1646 (out-of-bounds read in V8) |
| 2016-03-29 | CVE-2016-1646 published by NVD |
| 2022-06-08 | Added to CISA Known Exploited Vulnerabilities catalog |
| 2022-06-22 | CISA BOD 22-01 remediation deadline |
References
| Resource | Type |
|---|---|
| NVD — CVE-2016-1646 | Vulnerability Database |
| CISA KEV Catalog Entry | US Government |
| Google Chrome Stable Channel Update for Desktop (March 24, 2016) | Vendor Advisory |