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 <[email protected]> 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. [email protected] Fixed: 553259748 Change-Id: Id787530c22a84e1ac7b3f0cdfd6790e5c461d12f Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/8438296 Reviewed-by: Yang Guo <[email protected]> Commit-Queue: Simon Zünd <[email protected]> Auto-Submit: Simon Zünd <[email protected]> Commit-Queue: Yang Guo <[email protected]> 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