Low chrome UAF 🔧 Commit mapped

Overview

Low
Severity
—
CVSS
No
Exploited ITW
Fixed
Fix Status
ImpactUse after free in DevTools
DescriptionUse after free in DevTools
ComponentDevTools
Sub-componentInspector
Bug ClassUAF
Tracker553259748
Fix commitf2f0a6e1d170 (v8/v8) +31/-0
CISA KEVNot listed
CreditedGoogle
Disclosed2026-10-20

Files Changed

  • src/inspector/v8-runtime-agent-impl.cc
  • test/inspector/runtime/terminate-execution-expected.txt
  • test/inspector/runtime/terminate-execution.js
From f2f0a6e1d170fbad85c7e5db15e2ef4aa8b7ad87 Mon Sep 17 00:00:00 2001
From: Simon Zünd <szuend@chromium.org>
Date: Tue, 22 Sep 2026 06:27:22 +0000
Subject: [PATCH] [inspector] Restrict Runtime.terminateExecution to fully trusted clients

v8::Isolate::TerminateExecution() acts on the entire isolate rather than
a specific context group. Restrict Runtime.terminateExecution to fully
trusted CDP clients so untrusted clients cannot terminate execution in
other context groups sharing the isolate.

R=yangguo@chromium.org

Fixed: 553259748
Change-Id: Id787530c22a84e1ac7b3f0cdfd6790e5c461d12f
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/8438296
Reviewed-by: Yang Guo <yangguo@chromium.org>
Commit-Queue: Simon Zünd <szuend@chromium.org>
Auto-Submit: Simon Zünd <szuend@chromium.org>
Commit-Queue: Yang Guo <yangguo@chromium.org>
Cr-Commit-Position: refs/heads/main@{#109983}
---
diff --git a/src/inspector/v8-runtime-agent-impl.cc b/src/inspector/v8-runtime-agent-impl.cc
index a8478f0..e3fda62 100644
--- a/src/inspector/v8-runtime-agent-impl.cc
+++ b/src/inspector/v8-runtime-agent-impl.cc
@@ -883,6 +883,11 @@
 
 void V8RuntimeAgentImpl::terminateExecution(
     std::unique_ptr<TerminateExecutionCallback> callback) {
+  if (m_session->clientTrustLevel() != V8Inspector::kFullyTrusted) {
+    callback->sendFailure(Response::ServerError(
+        "Runtime.terminateExecution is not allowed for untrusted clients"));
+    return;
+  }
   v8::HandleScope handles(m_inspector->isolate());
   v8::Local<v8::Context> defaultContext =
       m_inspector->client()->ensureDefaultContextInGroup(
diff --git a/test/inspector/runtime/terminate-execution-expected.txt b/test/inspector/runtime/terminate-execution-expected.txt
index ccd85fa..5ce2345 100644
--- a/test/inspector/runtime/terminate-execution-expected.txt
+++ b/test/inspector/runtime/terminate-execution-expected.txt
@@ -70,4 +70,22 @@
     result : {
     }
 }
+Terminate execution is not allowed for untrusted clients
+{
+    error : {
+        code : -32000
+        message : Runtime.terminateExecution is not allowed for untrusted clients
+    }
+    id : <messageId>
+}
+{
+    id : <messageId>
+    result : {
+        result : {
+            description : 42
+            type : number
+            value : 42
+        }
+    }
+}
 Terminate execution does not crash on destroy
diff --git a/test/inspector/runtime/terminate-execution.js b/test/inspector/runtime/terminate-execution.js
index 3fd6b60..9a5268f 100644
--- a/test/inspector/runtime/terminate-execution.js
+++ b/test/inspector/runtime/terminate-execution.js
@@ -68,6 +68,14 @@
   await Protocol.Debugger.resume();
   await Protocol.Runtime.disable();
 
+  InspectorTest.log('Terminate execution is not allowed for untrusted clients');
+  const untrustedSession = contextGroup.connect(/* isFullyTrusted */ false);
+  InspectorTest.logMessage(
+      await untrustedSession.Protocol.Runtime.terminateExecution());
+  InspectorTest.logMessage(
+      await untrustedSession.Protocol.Runtime.evaluate({expression: '42'}));
+  untrustedSession.disconnect();
+
   InspectorTest.log('Terminate execution does not crash on destroy');
   Protocol.Debugger.enable();
   Protocol.Runtime.evaluate({
Loading diff…

Original Bug Report

The reporter's bug is still restricted on the tracker. Chrome de-restricts security bugs ~30–90 days after the fix ships; a later run will backfill it here.