UAF 96 CVEs 96 mapped ⚠️ 1 exploited in the wild CWE-416 2025-03 → 2026-09

A method dispatches into a delegate, observer, callback, or other thread that can synchronously destroy the object (or a cached target), and then keeps using it — a use-after-free reached from ordinary UI, event, or teardown flow.

Invariant
A callout that may re-enter and destroy this (or a cached pointer) must be followed by a liveness check before any further member access — capture a WeakPtr and return early if it was invalidated.

Mechanism

Chromium UI, event, and service code routinely calls out of an object mid-method: a WaylandWindow/X11Window notifies its PlatformWindowDelegate, an event source dispatches to a focused window, a disk-cache operation runs a completion callback, a queue wakes a waiter. Any of those callouts can run arbitrary consumer logic — most dangerously closing the widget or destroying the object — synchronously, before the calling method returns.

The method then continues to touch its own members (or a raw pointer it cached before a loop), now pointing at freed memory. The trigger is ordinary, web-reachable input: a popup closing on click, a drag ending, a state/configure update, a tab teardown. Because the free happens inside a normal call, the stack looks innocent and the bug survives review.

A second, related shape is teardown/observer ordering: an object outlives the owner of its backing resource, or an observer outlives the subject it is registered with, so a later access or unregistration dereferences an already-freed peer.

Fix shape

Capture a weak reference immediately before the re-entrant callout and bail out the moment it is invalidated:

auto weak_this = AsWeakPtr();      // or weak_factory_.GetWeakPtr()
delegate()->OnStateUpdate(...);    // may synchronously delete `this`
if (!weak_this) return;            // do not touch members after this point

When iterating a container of objects that a callout can destroy, materialize WeakPtrs (e.g. GetAllWindowsAsWeakPtr()) and re-check each entry inside the loop. For the ordering variant, move the resource into the object whose lifetime bounds it, or have the subject notify observers on destruction so they reset their observation.

CVEs in this pattern

49 components · Ozone, Views, Aura, Bluetooth, Extensions, Platform, Network, Dawn, Printing, Core, Passwords, Payments, V8, Web Authentication, Input, DigitalCredentials, ServiceWorker, Actor, Chromoting, Updater, Proxy, Receiver, Device, Sharing, Cast, WebPackaging, WebAppInstalls, Auth, Internals, DOM, PDF, GPU, AdFilter, Fullscreen, Metrics, HID, PDFium, WindowDialog, Safebrowsing, Chromecast, Compositing, Chromium, Digital Credentials, Autofill, Browser, CSS, Serviceworker, Profiles, Lens
CVEWhatComponentVendorSeverityMonth
CVE-2026-93374 UAF in Daw Dawn chrome Critical 2026-09 🔧
CVE-2026-95315 UAF in Aura Aura chrome High 2026-09 🔧
CVE-2026-95319 UAF in Printing Printing chrome Low 2026-09 🔧
CVE-2026-95348 UAF in Bluetooth Bluetooth chrome High 2026-09 🔧
CVE-2026-95347 UAF in Updater Updater chrome Medium 2026-09 🔧
CVE-2026-84324 UAF in Proxy Proxy chrome High 2026-09 🔧
CVE-2026-87480 UAF in Printing Printing chrome High 2026-09 🔧
CVE-2026-87514 UAF in Views Views chrome High 2026-09 🔧
CVE-2026-87524 UAF in Core Core chrome High 2026-09 🔧
CVE-2026-87526 UAF in Passwords Passwords chrome Medium 2026-09 🔧
CVE-2026-87558 UAF in Payments Payments chrome High 2026-09 🔧
CVE-2026-87578 UAF in Receiver Receiver chrome High 2026-09 🔧
CVE-2026-87581 UAF in Payments Payments chrome High 2026-09 🔧
CVE-2026-87607 UAF in Device Device chrome High 2026-09 🔧
CVE-2026-87609 UAF in Sharing Sharing chrome Medium 2026-09 🔧
CVE-2026-87625 UAF in V8 V8 chrome Medium 2026-09 🔧
CVE-2026-87628 UAF in Cast Cast chrome Critical 2026-09 🔧
CVE-2026-87633 UAF in Views Views chrome High 2026-09 🔧
CVE-2026-87637 UAF in Extensions Extensions chrome Medium 2026-09 🔧
CVE-2026-87639 UAF in WebPackaging WebPackaging chrome High 2026-09 🔧
CVE-2026-87646 UAF in Web Authenticatio Web Authentication chrome High 2026-09 🔧
CVE-2026-91710 UAF in WebAppInstalls WebAppInstalls chrome High 2026-09 🔧
CVE-2026-91716 UAF in Auth Auth chrome High 2026-09 🔧
CVE-2026-91718 UAF in Core Core chrome High 2026-09 🔧
CVE-2026-91721 UAF in Internals Internals chrome Critical 2026-09 🔧
CVE-2026-91722 UAF in Input Input chrome Medium 2026-09 🔧
CVE-2026-91724 UAF in Input Input chrome High 2026-09 🔧
CVE-2026-91729 UAF in DigitalCredentials DigitalCredentials chrome High 2026-09 🔧
CVE-2026-91736 UAF in DOM DOM chrome High 2026-09 🔧
CVE-2026-91737 UAF in PDF PDF chrome High 2026-09 🔧
CVE-2026-93373 UAF in Extensions Extensions chrome High 2026-09 🔧
CVE-2026-95277 UAF in Views Views chrome High 2026-09 🔧
CVE-2026-95282 UAF in Platform Platform chrome High 2026-09 🔧
CVE-2026-95299 UAF in GPU GPU chrome High 2026-09 🔧
CVE-2026-95310 UAF in AdFilter AdFilter chrome Critical 2026-09 🔧
CVE-2026-95313 UAF in Fullscree Fullscreen chrome Critical 2026-09 🔧
CVE-2026-95333 UAF in Metrics Metrics chrome Medium 2026-09 🔧
CVE-2026-95335 UAF in HID HID chrome High 2026-09 🔧
CVE-2026-95338 UAF in PDFium PDFium chrome High 2026-09 🔧
CVE-2026-95339 UAF in ServiceWorker ServiceWorker chrome Critical 2026-09 🔧
CVE-2026-95345 UAF in Actor Actor chrome Medium 2026-09 🔧
CVE-2026-95351 UAF in Views Views chrome High 2026-09 🔧
CVE-2026-95356 UAF in WindowDialog WindowDialog chrome Critical 2026-09 🔧
CVE-2026-87460 UAF in Platform Platform chrome High 2026-09 🔧
CVE-2026-19149 UAF in Aura Aura chrome Critical 2026-08 🔧
CVE-2026-79052 UAF in Aura Aura chrome Critical 2026-08 🔧
CVE-2026-79200 UAF in Aura Aura chrome Critical 2026-08 🔧
CVE-2026-79232 UAF in Aura Aura chrome High 2026-08 🔧
CVE-2026-79290 UAF in Aura Aura chrome Critical 2026-08 🔧
CVE-2026-19172 UAF in Views Views chrome Critical 2026-08 🔧
CVE-2026-76017 UAF in Chromoting Chromoting chrome Critical 2026-08 🔧
CVE-2026-79012 UAF in Safebrowsing Safebrowsing chrome Critical 2026-08 🔧
CVE-2026-79150 UAF in Views Views chrome Critical 2026-08 🔧
CVE-2026-79224 UAF in Chromecast Chromecast chrome Critical 2026-08 🔧
CVE-2026-78951 UAF in ServiceWorker ServiceWorker chrome Medium 2026-08 🔧
CVE-2026-79198 UAF in Platform Platform chrome High 2026-08 🔧
CVE-2026-17656 UAF in Ozone Ozone chrome Critical 2026-07 🔧
CVE-2026-15904 UAF in Ozone Ozone chrome High 2026-07 🔧
CVE-2026-15765 UAF in Ozone Ozone chrome Critical 2026-07 🔧
CVE-2026-15112 UAF in Ozone Ozone chrome Critical 2026-07 🔧
CVE-2026-15764 UAF in Ozone Ozone chrome Critical 2026-07 🔧
CVE-2026-15901 UAF in Network Network chrome Critical 2026-07 🔧
CVE-2026-15129 UAF in Views Views chrome Critical 2026-07 🔧
CVE-2026-17650 UAF in Compositing Compositing chrome Critical 2026-07 🔧
CVE-2026-17652 UAF in Views Views chrome Critical 2026-07 🔧
CVE-2026-13786 UAF in Ozone Ozone chrome Critical 2026-06 🔧
CVE-2026-11628 UAF in Ozone Ozone chrome Critical 2026-06 🔧
CVE-2026-11629 UAF in Ozone Ozone chrome Critical 2026-06 🔧
CVE-2026-10972 UAF in Ozone Ozone chrome High 2026-06 🔧
CVE-2026-11631 UAF in Aura Aura chrome Critical 2026-06 🔧
CVE-2026-13785 UAF in Bluetooth Bluetooth chrome Critical 2026-06 🔧
CVE-2026-11633 UAF in Bluetooth Bluetooth chrome Critical 2026-06 🔧
CVE-2026-11635 UAF in Bluetooth Bluetooth chrome Critical 2026-06 🔧
CVE-2026-10882 UAF in Network Network chrome Critical 2026-06 🔧
CVE-2026-10905 UAF in Network Network chrome High 2026-06 🔧
CVE-2026-10954 UAF in Actor Actor chrome High 2026-06 🔧
CVE-2026-12008 UAF in Chromium Chromium chrome Critical 2026-06 🔧
CVE-2026-12439 UAF in Digital Credentials Digital Credentials chrome Critical 2026-06 🔧
CVE-2026-12440 UAF in DigitalCredentials DigitalCredentials chrome Critical 2026-06 🔧
CVE-2026-12442 UAF in Passwords Passwords chrome Critical 2026-06 🔧
CVE-2026-12443 UAF in Web Authenticatio Web Authentication chrome Critical 2026-06 🔧
CVE-2026-13038 UAF in Autofill Autofill chrome Critical 2026-06 🔧
CVE-2026-13774 UAF in Extensions Extensions chrome Critical 2026-06 🔧
CVE-2026-13779 UAF in Chromoting Chromoting chrome Critical 2026-06 🔧
CVE-2026-13782 UAF in Browser Browser chrome Critical 2026-06 🔧
CVE-2026-13783 UAF in Views Views chrome Critical 2026-06 🔧
CVE-2026-13784 UAF in Views Views chrome Critical 2026-06 🔧
CVE-2026-8514 UAF in Aura Aura chrome Critical 2026-05 🔧
CVE-2026-6310 UAF in Daw Dawn chrome High 2026-04 🔧
CVE-2026-2321 UAF in Ozone Ozone chrome Medium 2026-02 🔧
CVE-2026-2441 UAF in CSS CSS chrome High 2026-02 ⚠️ 🔧
CVE-2025-12438 UAF in Ozone Ozone chrome Medium 2025-10 🔧
CVE-2025-10200 UAF in Serviceworker Serviceworker chrome Critical 2025-09 🔧
CVE-2025-11219 UAF in V8 V8 chrome Low 2025-09 🔧
CVE-2025-1916 UAF in Profiles Profiles chrome Medium 2025-03 🔧
CVE-2025-2476 UAF in Lens Lens chrome Critical 2025-03 🔧

Hunt for siblings

All three are heuristics that need human triage: they surface re-entrant callouts and flag the ones with no WeakPtr liveness check in the same function. Start from the callout, then read up/down for a captured weak_this.

grep / ripgrep
# Candidate re-entrant callouts in UI/window code, minus the ones already guarded.
# Then, for each hit's enclosing function, confirm there is NO AsWeakPtr()/
# GetWeakPtr()/weak_this liveness check after the call.
rg -n --pcre2 \
  '(delegate\(\)->On|->OnStateUpdate\(|RequestStateFromServer\(|DispatchEvent\(|->Run\()' \
  ui/ozone ui/platform_window components/ \
  | rg -v 'weak'
weggli (structural)
# Structural: a call on $obj followed by a later deref of $obj in the same
# block, with no weak_this/AsWeakPtr captured in that block.
weggli --cpp '{
  not: weak_this;
  not: AsWeakPtr();
  $obj->$callout($a);
  $obj->$member;
}'
semgrep
rules:
  - id: reentrant-callout-frees-this-no-weakptr
    languages: [cpp]
    severity: WARNING
    message: >
      Method dispatches to a delegate/observer/callback that may synchronously
      destroy `this`, then accesses members without an AsWeakPtr()/GetWeakPtr()
      liveness check (WP-ASYNC-LIFETIME-UAF; e.g. CVE-2026-15112).
    patterns:
      - pattern-either:
          - pattern: $D->On$EV(...);
          - pattern: delegate()->$CB(...);
      - pattern-not-inside: |
          { ... $W = AsWeakPtr(); ... }
      - pattern-not-inside: |
          { ... $W = ...GetWeakPtr(); ... }

Mitigations that would catch this class

  • MiraclePtr / BackupRefPtr (raw_ptr) — turns these into safe crashes; several were found by the rewrite
  • WeakPtr liveness checks after every re-entrant callout (the canonical fix)
  • Prefer posting a task over synchronous delegate callouts where feasible