BROWSER SECURITY · CVE-2026-87491

Chrome V8 Zero-Day CVE-2026-87491 Is Being Exploited

Patch to 153.0.8010.36. Google shipped fixes for 230 Chrome flaws, including CVE-2026-87491, an out-of-bounds write in the V8 engine that is already under active exploitation.

Matt Lucas  |  September 9, 2026  |  5 min
Editorial hero illustration
230
flaws patched in one release
7
exploited Chrome 0-days in 2026
153.0.8010.36
first safe build
$2,500
bounty paid for the 0-day
TL;DR
  • What: Google patched 230 Chrome vulnerabilities, including CVE-2026-87491, an out-of-bounds write in the V8 JavaScript and WebAssembly engine that Google confirms is being exploited in the wild.
  • Impact: A crafted HTML page gives a remote attacker arbitrary code execution inside the renderer sandbox, which is the standard first link in a browser exploit chain and exposes session material and in-memory data for the site being viewed.
  • Fix / mitigation: Update Chrome to 153.0.8010.36 or .37 on Windows and macOS and 153.0.8010.36 on Linux, then relaunch the browser so the running process actually picks up the fix.
  • Who's at risk: Every Chrome user, plus anyone running Chromium-based browsers such as Edge, Brave, Opera, and Vivaldi, which inherit the V8 bug until each vendor ships its own build.

Google patched 230 security flaws in the newest Chrome stable release, and one of them is already being used against real targets. CVE-2026-87491 is an out-of-bounds write in V8, Chrome's JavaScript and WebAssembly engine, and a crafted HTML page is enough to trigger it. That makes drive-by exploitation the delivery model: a user visits a page, attacker code runs. The fixed builds are 153.0.8010.36 and 153.0.8010.37 for Windows and macOS, and 153.0.8010.36 for Linux. Anything below those numbers is exposed.

Code execution, but inside the sandbox

The NVD text is specific about the boundary: the flaw "allowed a remote attacker to execute arbitrary code inside the sandbox via a crafted HTML page." Inside the sandbox means the attacker gets control of the renderer process, not the host. The renderer is unprivileged by design. It cannot write arbitrary files, spawn processes freely, or reach other origins directly. One bug on its own does not hand anyone a shell on the endpoint.

That is the limit, stated plainly. A renderer compromise is still serious. It gives the attacker the contents of that renderer: session material for the site in view, in-memory data, and a stable execution primitive to build on. In practice, V8 renderer bugs are step one of a chain, paired with a sandbox escape in the browser process, a GPU process bug, or a kernel flaw. Whoever is running CVE-2026-87491 in the wild very likely has a second bug behind it, and Google has not said what it is, how the exploit is delivered, or who is using it.

Medium severity is not low priority

Google rated CVE-2026-87491 medium and NVD has not assigned a CVSS score at all. That label reflects the sandbox boundary, not your risk. Confirmed in-the-wild exploitation should outrank any static score in your patch queue this week.

The other 229

Five critical flaws shipped in the same update, all of them in code that parses attacker-controlled input:

Four of the five criticals are WebGL. If your fleet has no business need for 3D graphics in the browser, Chrome enterprise policy can disable those APIs and remove that attack surface outright. One high-severity use-after-free in WebPackaging, CVE-2026-87639, is credited to OpenAI Codex Security, which is a notable line item on its own: an AI-assisted review pipeline is now landing credited Chrome bugs. Google reported 195 of the 230 flaws itself, found largely through AddressSanitizer, MemorySanitizer, UndefinedBehaviorSanitizer, Control Flow Integrity, libFuzzer, and AFL.

Seven exploited zero-days in nine months

CVE-2026-87491 is the seventh actively exploited Chrome zero-day Google has fixed since the start of the year, following CVE-2026-2441, CVE-2026-3909, CVE-2026-3910, CVE-2026-5281, CVE-2026-11645, and CVE-2026-85046. That averages out to roughly one every five weeks. Treat Chrome as a standing patch cadence problem, not a series of one-off emergencies. If your browser update process requires a change ticket and a maintenance window, it is already too slow for that rate.

The disclosure timeline and the downstream gap

Jihyeon Jeong of Compsec Lab at Seoul National University reported the bug on August 6, 2026 and received a $2,500 bounty. The fix reached stable about a month later. Google is holding technical details back, which is standard practice until the majority of users have updated, and it will keep the restriction in place longer if the bug lives in a shared third-party library. The practical effect: there is no public proof of concept to test your controls against yet, and no attribution to hang detection logic on.

The gap that matters more for most organizations is downstream. Edge, Brave, Opera, and Vivaldi all build on Chromium and each ships its own release on its own schedule. Patching Chrome and calling it done leaves every other Chromium browser your users installed still carrying the V8 bug. Inventory them, then track each vendor's release note separately.

An update that has not relaunched is not applied

Chrome stages the new binary but keeps executing the old one until the browser restarts. Users with 40 tabs and 30 days of uptime remain exploitable after the update downloads. Verify the running version, not just the installed package version.

What to run

Check the version on every platform you own, then push the upgrade through the channel that matches how Chrome got installed. These read-only checks work on a single host and scale to a fleet query with no changes:

defaults read /Applications/Google\ Chrome.app/Contents/Info.plist CFBundleShortVersionString
google-chrome --version
powershell -c "(Get-Item 'C:\Program Files\Google\Chrome\Application\chrome.exe').VersionInfo.ProductVersion"

What to alert on

You cannot detect the V8 bug from logs, because there is no signature for a crafted HTML page and no public indicators for this campaign. What you can detect is the stage that follows a successful chain: a renderer process doing something a renderer never does. Build the alert on process lineage, and treat renderer crash spikes as a weak but useful second signal while you finish patching.

Fix It Yourself

Everything above is what happened. This is what to run. The check commands change nothing.

Check whether you are exposed

macOS: print the installed Chrome version, compare against 153.0.8010.36

defaults read /Applications/Google\ Chrome.app/Contents/Info.plist CFBundleShortVersionString

Linux: print the Chrome version from either package name

google-chrome --version 2>/dev/null || google-chrome-stable --version

Windows: print Chrome and Edge product versions side by side

powershell -c "Get-ChildItem 'C:\Program Files\Google\Chrome\Application\chrome.exe','C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe' -ErrorAction SilentlyContinue | ForEach-Object { $_.FullName + ' ' + $_.VersionInfo.ProductVersion }"

Close it

macOS with Homebrew: upgrade the cask, then quit and reopen Chrome so the running process changes

brew upgrade --cask google-chrome

Debian or Ubuntu: upgrade only the Chrome package, no other packages touched

sudo apt-get update && sudo apt-get install --only-upgrade google-chrome-stable

Windows: upgrade Chrome through winget, then relaunch the browser to apply it

winget upgrade --id Google.Chrome -e --accept-source-agreements

Prompts for the agent you already run

Paste this when you want an agent to tell you whether this machine or fleet is exposed, before you touch anything

Determine whether this machine is exposed to Chrome V8 zero-day CVE-2026-87491. The first safe builds are 153.0.8010.36 and 153.0.8010.37 on Windows and macOS, and 153.0.8010.36 on Linux. Step 1: detect the OS. Step 2: read the installed Chrome version using only a read-only command for that OS, such as 'defaults read /Applications/Google Chrome.app/Contents/Info.plist CFBundleShortVersionString' on macOS, 'google-chrome --version' on Linux, or reading VersionInfo.ProductVersion from chrome.exe on Windows. Step 3: also look for other Chromium browsers installed here, specifically Microsoft Edge, Brave, Opera, and Vivaldi, and report their versions. Step 4: print every command you ran and its raw output, then give a one-line verdict of EXPOSED or PATCHED per browser. Do not install, upgrade, modify, or remove anything. Stop after reporting and wait for my go-ahead.

Paste this after the check confirms an out-of-date build and you have approved the upgrade

Bring Chrome on this machine to 153.0.8010.36 or later to remediate CVE-2026-87491. First re-read the current version and tell me what it is. Then identify how Chrome was installed on this host, for example Homebrew cask, apt package google-chrome-stable, or winget package Google.Chrome, and show me the evidence for that conclusion. Propose the exact single upgrade command you intend to run and stop for my approval before running it. Do not delete any application, do not remove profile directories, and do not force-kill a running Chrome process. After I approve and the upgrade completes, re-read the version, confirm it is 153.0.8010.36 or higher, and remind me that Chrome must be relaunched before the fix is live.

What to alert on

There is no network or file signature for CVE-2026-87491 itself, so alert on the post-exploitation step instead: a Chrome renderer spawning a child process. On Windows, use Sysmon Event ID 1 or your EDR process-creation telemetry and match on ParentImage ending in chrome.exe where ParentCommandLine contains --type=renderer and the child Image is anything outside Chrome's own install path, with cmd.exe, powershell.exe, rundll32.exe, mshta.exe, and regsvr32.exe as the highest-confidence children. On macOS, watch EDR process events where the parent is "Google Chrome Helper (Renderer)" and the child is /bin/sh, /bin/bash, osascript, or curl. On Linux, match auditd execve records whose ppid resolves to a chrome process started with --type=renderer. As a supporting signal, trend renderer crash volume per host: Windows Application log Event ID 1000 with faulting application chrome.exe, or a rising count of files in the Crashpad directory under the Chrome user data path, since exploit attempts against V8 fail noisily before they succeed. Pair either alert with an asset query for chrome.exe ProductVersion below 153.0.8010.36 so you can rank hits by whether the host was still vulnerable at the time.

Questions about your exposure?

RedEye Security provides assessments for organizations that need to understand their real risk.

Talk to us