Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 87b3951978a0e00dd5ca5322deb6168843af91a9
https://github.com/WebKit/WebKit/commit/87b3951978a0e00dd5ca5322deb6168843af91a9
Author: Ian Gower <[email protected]>
Date: 2026-10-05 (Mon, 05 Oct 2026)
Changed paths:
A
LayoutTests/http/wpt/fetch/local-network-access/a-forged-client-is-judged-by-what-the-network-process-served-expected.txt
A
LayoutTests/http/wpt/fetch/local-network-access/a-forged-client-is-judged-by-what-the-network-process-served.html
A
LayoutTests/http/wpt/fetch/local-network-access/resources/lna-forging-frame.html
M LayoutTests/platform/glib/TestExpectations
M LayoutTests/platform/win/TestExpectations
M Source/WebCore/dom/Document.cpp
M Source/WebCore/dom/Document.h
M Source/WebCore/testing/Internals.cpp
M Source/WebCore/testing/Internals.h
M Source/WebCore/testing/Internals.idl
M Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp
M Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h
M Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.h
M Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp
M Source/WebKit/NetworkProcess/NetworkResourceLoader.h
M Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp
Log Message:
-----------
Local Network Access trusts the web process's description of the requesting
document
https://bugs.webkit.org/show_bug.cgi?id=326011
rdar://188953889
Reviewed by Alex Christensen.
This is Local Network Access feature work:
https://wicg.github.io/local-network-access/
The network process decided every Local Network Access check from client
details the web process
supplied: its address space, origin, top origin, secure-context state, and
whether the load is
top-level. A compromised web process could claim loopback, claim the target's
own origin to reach
the same-origin exemption, or label a subresource as a main frame load, and
reach the local network
without a prompt.
The network process now records the address space and origin of the response
that created each
frame's document, and judges the client against that record. A claim can only
make a request
stricter, an origin that does not match is treated as opaque, the top origin
must be a first party
the UI process allowed, and only a load that started at its own first party is
exempt as top-level.
The permissions policy state still comes from the web process, tracked in
https://bugs.webkit.org/show_bug.cgi?id=326009. Shared and service workers have
no frame record, so
they are refused until the worker support lands.
*
LayoutTests/http/wpt/fetch/local-network-access/a-forged-client-is-judged-by-what-the-network-process-served-expected.txt:
Added.
*
LayoutTests/http/wpt/fetch/local-network-access/a-forged-client-is-judged-by-what-the-network-process-served.html:
Added.
*
LayoutTests/http/wpt/fetch/local-network-access/resources/lna-forging-frame.html:
Added.
* LayoutTests/platform/glib/TestExpectations:
* LayoutTests/platform/win/TestExpectations:
* Source/WebCore/dom/Document.cpp:
(WebCore::Document::setLoadSourceOriginOverrideForTesting):
* Source/WebCore/dom/Document.h:
(WebCore::Document::loadSourceOriginOverrideForTesting const):
* Source/WebCore/testing/Internals.cpp:
(WebCore::Internals::setDocumentIPAddressSpace):
(WebCore::Internals::setLoadSourceOriginOverride):
* Source/WebCore/testing/Internals.h:
* Source/WebCore/testing/Internals.idl:
* Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::browsingContextRemoved):
(WebKit::NetworkConnectionToWebProcess::recordLocalNetworkAccessFrame):
(WebKit::NetworkConnectionToWebProcess::localNetworkAccessFrameRecord const):
* Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h:
* Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.h:
* Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::transferToNewWebProcess):
(WebKit::NetworkResourceLoader::recordLocalNetworkAccessFrame):
(WebKit::NetworkResourceLoader::checkLocalNetworkAccess):
(WebKit::NetworkResourceLoader::continueDidReceiveResponseAfterLocalNetworkAccessCheck):
(WebKit::NetworkResourceLoader::continueDidRetrieveCacheEntryAfterLocalNetworkAccessCheck):
* Source/WebKit/NetworkProcess/NetworkResourceLoader.h:
* Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess):
Canonical link: https://commits.webkit.org/322801@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications