Chrome · DevTools › Inspector
CVE-2026-113116
UAF in DevTools (Inspector)
Overview
Low
Severity
—
CVSS
No
Exploited ITW
Fixed
Fix Status
Files Changed
src/inspector/v8-runtime-agent-impl.cctest/inspector/runtime/terminate-execution-expected.txttest/inspector/runtime/terminate-execution.js
Patch
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.
References
On This Page