Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 841ad59485b9991f47dd40dc1c9652bc714f7231
      
https://github.com/WebKit/WebKit/commit/841ad59485b9991f47dd40dc1c9652bc714f7231
  Author: Chris Dumez <[email protected]>
  Date:   2026-06-05 (Fri, 05 Jun 2026)

  Changed paths:
    M Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp
    M Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h
    M Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in
    M Source/WebKit/NetworkProcess/NetworkProcess.cpp
    M Source/WebKit/NetworkProcess/NetworkProcess.h
    M Source/WebKit/NetworkProcess/NetworkProcess.messages.in
    M Source/WebKit/Shared/NetworkProcessConnectionParameters.h
    M Source/WebKit/Shared/NetworkProcessConnectionParameters.serialization.in
    M Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp
    M Source/WebKit/UIProcess/WebPageProxy.cpp
    M Source/WebKit/UIProcess/WebPageProxy.h
    M Source/WebKit/WebProcess/WebPage/WebPage.cpp
    M Source/WebKit/WebProcess/WebPage/WebPage.h
    M Source/WebKit/WebProcess/WebProcess.cpp

  Log Message:
  -----------
  WebKit NetworkProcess: CORS bypass via unvalidated SetCORSDisablingPatterns 
IPC
https://bugs.webkit.org/show_bug.cgi?id=314378
rdar://173180461

Reviewed by Per Arne Vollan.

Previously, _corsDisablingPatterns flowed from UIProcess through the
WebContent process to the NetworkProcess via
Messages::NetworkConnectionToWebProcess::SetCORSDisablingPatterns. A
compromised WebContent process could send that IPC with attacker-chosen
patterns (e.g. "*://*/*") to disable CORS for arbitrary cross-origin URLs
and read the content of any site the user was authenticated to.

This patch routes the patterns directly from the trusted UIProcess to the
NetworkProcess, removing the WebContent process from the trust path:
  - WebPageProxy sends Messages::NetworkProcess::SetCORSDisablingPatternsForPage
    directly to the NetworkProcess (in addition to
    Messages::WebPage::UpdateCORSDisablingPatterns which is still used so the
    WebContent process can populate its own OriginAccessPatternsForWebProcess
    singleton for WebCore-side same-origin checks).
  - WebPageProxy::finishAttachingToWebProcess replays the patterns after the
    page attaches to a WebProcess, covering process swaps.
  - When the NetworkProcess has not yet been launched, the patterns are
    delivered as part of NetworkProcessConnectionParameters when the
    per-WebProcess connection is created.

The WebProcess-side IPC and synchronization code is removed:
NetworkConnectionToWebProcess::SetCORSDisablingPatterns and its handler,
WebPage::synchronizeCORSDisablingPatternsWithNetworkProcess, and its callers
in WebPage and WebProcess.

WebExtensions continue to work unchanged — the SPI still accepts the same
patterns.

* Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::setCORSDisablingPatterns): Deleted.
* Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h:
* Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in:
* Source/WebKit/NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::createNetworkConnectionToWebProcess):
(WebKit::NetworkProcess::setCORSDisablingPatternsForPage):
(WebKit::NetworkProcess::setCORSDisablingPatterns): Deleted.
* Source/WebKit/NetworkProcess/NetworkProcess.h:
* Source/WebKit/NetworkProcess/NetworkProcess.messages.in:
* Source/WebKit/Shared/NetworkProcessConnectionParameters.h:
* Source/WebKit/Shared/NetworkProcessConnectionParameters.serialization.in:
* Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::getNetworkProcessConnection):
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::finishAttachingToWebProcess):
(WebKit::WebPageProxy::setCORSDisablingPatterns):
(WebKit::WebPageProxy::sendCORSDisablingPatternsToNetworkProcessIfNecessary):
* Source/WebKit/UIProcess/WebPageProxy.h:
* Source/WebKit/WebProcess/WebPage/WebPage.cpp:
(WebKit::m_allowsImmersiveEnvironments):
(WebKit::WebPage::~WebPage):
(WebKit::WebPage::updateCORSDisablingPatterns):
(WebKit::WebPage::synchronizeCORSDisablingPatternsWithNetworkProcess): Deleted.
* Source/WebKit/WebProcess/WebPage/WebPage.h:
* Source/WebKit/WebProcess/WebProcess.cpp:
(WebKit::WebProcess::ensureNetworkProcessConnection):

Originally-landed-as: 305413.866@safari-7624-branch (916c2fe83dd8). 
rdar://173180461
Canonical link: https://commits.webkit.org/314644@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to