Firefox · DOM
CVE-2026-92017
Logic Error in DOM
Overview
High
Severity
—
CVSS
No
Exploited ITW
Fixed
Fix Status
Files Changed
dom/clients/manager/ClientHandleOpParent.cpp
Patch
diff --git a/dom/clients/manager/ClientHandleOpParent.cpp b/dom/clients/manager/ClientHandleOpParent.cpp
index 44fd9cf7881..fad5f033c1e 100644
--- a/dom/clients/manager/ClientHandleOpParent.cpp
+++ b/dom/clients/manager/ClientHandleOpParent.cpp
@@ -30,9 +30,22 @@ IPCResult ClientHandleOpParent::Init(ClientOpConstructorArgs&& aArgs) {
RefPtr<ClientHandleParent> handle =
static_cast<ClientHandleParent*>(Manager());
+ auto* backgroundActor = handle->Manager()->Manager();
+
+ // ClientControlledArgs and ClientEvictBFCacheArgs are only ever issued by the
+ // parent-process ServiceWorkerManager (via ClientHandle::Control and
+ // ClientHandle::EvictFromBFCache). A content process must never send them:
+ // forging a ClientControlledArgs installs attacker-chosen controller state on
+ // a client living in another process, which ClientManagerService::Navigate
+ // then trusts as its sole authorization.
+ if ((aArgs.type() == ClientOpConstructorArgs::TClientControlledArgs ||
+ aArgs.type() == ClientOpConstructorArgs::TClientEvictBFCacheArgs) &&
+ BackgroundParent::IsOtherProcessActor(backgroundActor)) {
+ return IPC_FAIL(this, "Parent-only ClientOp received from content!");
+ }
+
if (!IsValidClientOpConstructorArgs(
- aArgs,
- BackgroundParent::GetLoadedOrigins(handle->Manager()->Manager()))) {
+ aArgs, BackgroundParent::GetLoadedOrigins(backgroundActor))) {
return IPC_FAIL(this, "Invalid ClientOpConstructorArgs!");
}
Loading diff…
References
On This Page