Chrome V8 Zero-Day CVE-2021-21148: Anatomy of a Drive-By

📋 Key Takeaways
  • What happened
  • How it worked
  • Impact and numbers
  • Timeline
  • Why it still matters in 2026
6 min read · 1,154 words
Educational & Ethical Use Only — This article is provided for educational and ethical cybersecurity research purposes only. The techniques described should only be used on systems you own or have explicit permission to test. Always follow responsible disclosure and the laws applicable to you. Mitigations are included so engineers can harden real systems.

On 4 February 2021, Google shipped an emergency Chrome update with exactly one line of release notes: a zero-day in V8 was being exploited in the wild — the first of what would become a record year for browser zero-days. Attackers had chained it with a second bug to escape the sandbox, and the episode set the template for how drive-by browser attacks work in the 2020s.

Quick Answer
CVE-2021-21148 was a heap buffer overflow in Chrome’s V8 JavaScript engine, disclosed as actively exploited on 4 February 2021. Attackers used it for remote code execution inside the renderer; in observed campaigns it was paired with a separate sandbox-escape bug (CVE-2021-21224-adjacent techniques) to reach the wider system. Google patched in days, but the exploit’s public life was just beginning: automated exploit chains scanned for unpatched browsers for months. The durable lesson: browsers are the largest attack surface in most enterprises, and “patch within days” is not fast enough when exploitation starts before disclosure — which is why exploit-protection mitigations and rapid auto-update channels matter more than any single patch.

What happened

Google’s Chrome 88.0.4324.150 release on 4 February 2021 carried an unusually terse note: CVE-2021-21148, a heap overflow in V8, was known to be exploited in the wild, discovered by Google’s own Threat Analysis Group. Within a week, technical analysis (including from Google and later Qihoo/research-community disclosures) showed the flaw had been used in a watering-hole-style campaign serving an exploit chain from a scoped set of websites. The renderer bug gave code execution in the sandboxed browser process; the observed attacks combined it with a second flaw to escape.

The campaign’s targeting looked intelligence-adjacent rather than criminal, consistent with TAG’s remit of state-backed exploitation, though Google did not name an actor. For most organisations the actor mattered less than the arithmetic: Chrome’s install base meant any in-the-wild V8 zero-day implicitly targeted effectively every desktop, and detection on the victim side was nearly zero — a successful drive-by left no download prompt and no visible artifact, just a renderer process that had quietly executed attacker code.

February’s zero-day was not an isolated event. It opened a year in which Chrome would ship at least nine more zero-day fixes (2021 ended with double-digit browser zero-days across vendors, per Google’s Project Zero year-in-review), and it landed mid-wave of the SUNBURST-era realisation that mass-market software not just exotic ICS gear — was the contested layer. The 2021 V8 zero-days collectively pushed enterprises to treat browsers as their own patch-emergency class, with auto-update enforcement and extension/CDP hardening follow-ons.

How it worked

The bug class was a heap buffer overflow in V8’s just-in-time compilation machinery. JavaScript arriving from a page could drive the engine into an inconsistent internal state where a write went past an allocated buffer — the raw material of arbitrary read/write inside the renderer process.

 victim visits attacker page (no click needed beyond navigation)
   -> crafted JS triggers V8 heap overflow (CVE-2021-21148)
        -> corrupts adjacent heap objects
        -> arbitrary R/W within renderer sandbox
        -> stage-2 JS/wasm payload runs as renderer user
                |
sandbox still in the way of full compromise
   -> chain with separate sandbox-escape bug (IPC / pepper API era)
   -> code exec at browser privilege -> loader / recon / follow-on

Two implementation realities are worth keeping. First, V8 flaws at this layer have become bug-class commodities: TurboFan/JIT type-confusion and heap-layout issues keep recurring because the engine trades memory safety for speed by design; the mitigation frontier (like the later V8 sandbox initiative) is structural, not patch-by-patch. Second, the exploitation model is silent at the network layer: the attack arrives as ordinary HTTPS traffic to a legitimate-looking site, which is why watering-hole placement (compromised niche sites with desirable audiences) remains a favorite delivery for both state and criminal crews.

data-hmmnm-seam="2">

Impact and numbers

Metric Value Source
CVE / severity CVE-2021-21148, heap overflow, Critical-ish (no CVSS listed) Chrome Releases blog
Patched version Chrome 88.0.4324.150 (2021-02-04) Chrome Releases
Reporter Google Threat Analysis Group (state-adjacent targeting) Chrome Releases credit
Chrome zero-days fixed in 2021 (total) ~10+ across the year Chrome Releases log / Project Zero
Project Zero 2021 in-the-wild zero-day count (all vendors) 58 (then-record) Project Zero year-in-review
User interaction required Navigation only — no download prompt, no visible artifact technical writeups
data-hmmnm-seam="3">

Timeline

Date Event
2021-02-04 Chrome 88.0.4324.150 ships; CVE-2021-21148 exploited in the wild
2021-02 via TAG reporting Watering-hole chain analysis; sandbox-escape pairing observed
2021-03-02 Chrome 89 lands; more V8 zero-days follow through spring
2021-04-14 CVE-2021-21224 (V8 type confusion) — another in-the-wild fix
2021 (year-end) Project Zero counts a record 58 in-the-wild zero-days across vendors
data-hmmnm-seam="4">

Why it still matters in 2026

The February 2021 V8 zero-day began the modern era of browser zero-day normality. Since then, every year has delivered multiple in-the-wild browser exploits, the majority used in first-strike espionage or as criminal initial access; 2026’s “patch Chrome today” advisories are this story’s direct descendants. The 2026 guidance in our zero-day surge analysis operationalises the lesson: browsers auto-update or they get owned, enterprise fleets need update telemetry, and IS0303-style virtual patching buys time on stragglers. It also hardened a rule of thumb defenders still use silently: assume any user’s browser may already be compromised, and segment accordingly — the principle behind pairing browser zero-days with follow-on payload delivery.

data-hmmnm-seam="5">

Detection and hardening takeaways

  • Enforce browser auto-update and measure it. Fleet telemetry on browser build versions is the only way to know your real exposure window on a zero-day Tuesday.
  • Patch browsers on the same emergency SLA as servers. Renderer RCE plus sandbox escape equals full endpoint compromise with zero user error required.
  • Run enhanced sandboxing features. Site-per-process, strict site isolation, and –enable-features=V8Sparkplug-era mitigations limit blast radius even pre-patch.
  • Monitor renderer anomalies. Renderer-process crashes correlated with specific sites, wasm-heavy one-shot pages, and overnight browsing to niche forums are watering-hole indicators.
  • Segment assumes-breach. Treat user browsing networks as untrusted; a silent drive-by should hit a wall, not the flat corporate LAN.

FAQ

What is a V8 heap overflow in plain terms?

V8 is the JavaScript engine that executes page code in Chrome (and Edge, Node.js and others). A heap overflow means a page’s script can make the engine write data past the end of an allocated buffer, corrupting adjacent memory. With careful heap grooming, that corruption becomes arbitrary read/write — and from there, code execution — all triggered simply by loading a page.

Was this used against ordinary users or only high-value targets?

The observed February 2021 campaign looked narrowly scoped — consistent with intelligence targeting rather than crime. But the bug itself was browser-wide; after disclosure, scanning and repurposing by other actors made unpatched Chrome a commodity target. The gap between “whom the zero-day was built for” and “whom it eventually hits” is usually months.

Does Chrome’s sandbox make zero-days harmless?

No — it makes them harder. The sandbox contains the renderer bug’s code execution to a constrained process, so real campaigns chain a second bug (or abuse a privileged component like a compromised extension) to escape. Sandbox + faster patching is the strategy; the sandbox alone just changes the exploit’s price.

data-hmmnm-seam="end">

Prabhu Kalyan Samal

Application Security Consultant at TCS. Certifications: CompTIA SecurityX, Burp Suite Certified Practitioner, Azure Security Engineer, Azure AI Engineer, Certified Red Team Operator, eWPTX v3, LPT, CompTIA PenTest+, Professional Cloud Security Engineer, SC-900, SC-200, PSPO I, CEH, Oracle Java SE 8, ISP, Six Sigma Green Belt, DELF, AutoCAD. Writing about ethical hacking, security tutorials, and tech education at Hmmnm.