Branch: refs/heads/webkitglib/2.52
Home: https://github.com/WebKit/WebKit
Commit: 83f14e90b328a352631c69ca361b3d6181e3c0c8
https://github.com/WebKit/WebKit/commit/83f14e90b328a352631c69ca361b3d6181e3c0c8
Author: Sihui Liu <[email protected]>
Date: 2026-08-10 (Mon, 10 Aug 2026)
Changed paths:
M Source/WTF/Scripts/GeneratePreferences.rb
M Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml
M Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp
M Source/WebKit/NetworkProcess/storage/NetworkStorageManager.h
M
Source/WebKit/Scripts/PreferencesTemplates/SharedPreferencesForWebProcess.cpp.erb
M
Source/WebKit/Scripts/PreferencesTemplates/SharedPreferencesForWebProcess.h.erb
M
Source/WebKit/Scripts/PreferencesTemplates/SharedPreferencesForWebProcess.serialization.in.erb
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebsiteDatastore.mm
Log Message:
-----------
Cherry-pick fca31e67e9f6. https://bugs.webkit.org/show_bug.cgi?id=311535
Skip site validation in WebStorage messages if StorageBlockingPolicy is
AllowAll
rdar://174127236
https://bugs.webkit.org/show_bug.cgi?id=311535
Reviewed by Chris Dumez.
In current implementation, when StorageBlockingPolicy is AllowAll,
third-party context will use non-partitioned storage
for WebStorage. For example, apple.com iframe embedded in webkit.org will
have access to the same WebStorage data as
apple.com loaded in main frame. However,
NetworkStorageManager::m_allowedSitesForConnections only records sites of
first-party context -- if a web process loads webkit.org that has an
apple.com iframe, the web process will only have
access to webkit.org, but not apple.com; and when the process asks for data
of apple.com, the process can get killed for
failing site validation.
To fix this, we may have UI process also send third-party context sites to
network process; but StorageBlockingPolicy
AllowAll is not a common configuration (default value is BlockThirdParty),
and this information will be only used for
WebStorage (other types all use partitioned storage). Therefore, this patch
simply disables the validation in this case.
To make sure network process can check for StorageBlockingPolicy (which is
uint32_t instead of bool), this patch also
modifies script that generates SharedPreferencesForWebProcess to support
type uint32_t. With this change, some web
inspector tests like
WKWebExtensionAPIDevTools.MessagePassingFromPanelToDevToolsBackground start to
hit debug assertion
in WebExtensionContext::loadInspectorBackgroundPage. The direct cause is
extension inspector background page no longer
uses same web process as web inspector page, and the root cause is their
shared preferences don't match -- inspector
page uses AllowAll blocking policy, while extension page uses default
BlockThirdParty policy, which causes the
hasSameGPUAndNetworkProcessPreferencesAs check in
WebProcessPool::createWebPage to fail, even though the two pages are
marked as related page. To fix this, make sure the extension page also uses
the AllowAll policy.
API test: StorageSiteValidation.StorageBlockingPolicyAllowAll
* Source/WTF/Scripts/GeneratePreferences.rb:
* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:
* Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:
(WebKit::NetworkStorageManager::canConnectionAccessSiteForWebStorage const):
(WebKit::NetworkStorageManager::connectToStorageArea):
(WebKit::NetworkStorageManager::cancelConnectToStorageArea):
(WebKit::NetworkStorageManager::disconnectFromStorageArea):
(WebKit::NetworkStorageManager::setItem):
(WebKit::NetworkStorageManager::removeItem):
(WebKit::NetworkStorageManager::clear):
* Source/WebKit/NetworkProcess/storage/NetworkStorageManager.h:
*
Source/WebKit/Scripts/PreferencesTemplates/SharedPreferencesForWebProcess.cpp.erb:
*
Source/WebKit/Scripts/PreferencesTemplates/SharedPreferencesForWebProcess.h.erb:
*
Source/WebKit/Scripts/PreferencesTemplates/SharedPreferencesForWebProcess.serialization.in.erb:
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(WebKit::WebExtensionContext::webViewConfiguration):
* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WKWebsiteDatastore.mm:
(TestWebKitAPI::(StorageSiteValidation, StorageBlockingPolicyAllowAll)):
Canonical link: https://commits.webkit.org/310806@main
Canonical link: https://commits.webkit.org/[email protected]
Canonical link: https://commits.webkit.org/305877.1078@webkitglib/2.52
Commit: 8f6234b49fd57c0f0578814b964223fc46cfaebd
https://github.com/WebKit/WebKit/commit/8f6234b49fd57c0f0578814b964223fc46cfaebd
Author: Sihui Liu <[email protected]>
Date: 2026-08-10 (Mon, 10 Aug 2026)
Changed paths:
M Source/WebKit/NetworkProcess/NetworkProcess.cpp
M Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp
M Source/WebKit/NetworkProcess/storage/NetworkStorageManager.h
M Source/WebKit/UIProcess/WebPageProxy.cpp
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebsiteDatastore.mm
Log Message:
-----------
Cherry-pick b4a4fb0135c4. https://bugs.webkit.org/show_bug.cgi?id=311489
NetworkStorageManager should allow all sites for web process that loads
webarchive
https://bugs.webkit.org/show_bug.cgi?id=311489
rdar://174081815
Reviewed by Chris Dumez.
NetworkStorageManager::m_allowedSitesForConnections tracks sites allowed
for each web process, and it is used for
site validation in storage messages -- similar to
NetworkProcess::m_allowedFirstPartiesForCookies used for validating
cookies messages. After enabling validation in NetworkStorageManager, some
webarchive tests start to fail because web
process gets killed for message check failure in NetworkStorageManager
message handlers. So, a web process that loads
webarchive can technicaly load from any site by design, and network process
should skip validation for them -- this is
what happens for cookie messages, see
NetworkProcess::allowsFirstPartyForCookies. To fix this issue, this patch
updates
NetworkStorageManager::m_allowedSitesForConnections -- a webarchive process
connection will now be marked as allowed to
access all sites.
API test: StorageSiteValidation.LoadWebArchive
* Source/WebKit/NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::createNetworkConnectionToWebProcess):
(WebKit::NetworkProcess::addAllowedFirstPartyForCookies):
* Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:
(WebKit::NetworkStorageManager::startReceivingMessageFromConnection):
(WebKit::NetworkStorageManager::updateAllowedSitesForConnectionInternal):
(WebKit::NetworkStorageManager::updateAllowedSitesForConnection):
(WebKit::NetworkStorageManager::isSiteAllowedForConnection const):
(WebKit::NetworkStorageManager::openDatabase):
(WebKit::NetworkStorageManager::addAllowedSitesForConnectionInternal):
Deleted.
(WebKit::NetworkStorageManager::addAllowedSitesForConnection): Deleted.
* Source/WebKit/NetworkProcess/storage/NetworkStorageManager.h:
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::updateDataStoreForWebArchiveLoad):
* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WKWebsiteDatastore.mm:
(TestWebKitAPI::(StorageSiteValidation, LoadWebArchive)):
Canonical link: https://commits.webkit.org/310795@main
Canonical link: https://commits.webkit.org/[email protected]
Canonical link: https://commits.webkit.org/305877.1079@webkitglib/2.52
Commit: a01e0f7b65c37c43b74102cebf0c787f6d6c5d8e
https://github.com/WebKit/WebKit/commit/a01e0f7b65c37c43b74102cebf0c787f6d6c5d8e
Author: Sihui Liu <[email protected]>
Date: 2026-08-10 (Mon, 10 Aug 2026)
Changed paths:
M Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp
Log Message:
-----------
Cherry-pick deb934129d18. https://bugs.webkit.org/show_bug.cgi?id=312920
Update allowed sites for connection on work queue before processing messages
https://bugs.webkit.org/show_bug.cgi?id=312920
rdar://175266853
Reviewed by Per Arne Vollan.
In current implementation, startReceivingMessageFromConnection registers
the connection as a work queue message receiver
on the main thread, then dispatches updateAllowedSitesForConnection
separately. This creates a race where messages from
the connection could arrive on the work queue before the allowed sites list
was populated, causing site validation
checks to fail.
To fix this, move the allowed sites update into the same work queue
dispatch block that initializes the connection's
preferences, ensuring the allowed sites are set before any messages are
processed.
* Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:
(WebKit::NetworkStorageManager::startReceivingMessageFromConnection):
Canonical link: https://commits.webkit.org/311822@main
Canonical link: https://commits.webkit.org/[email protected]
Canonical link: https://commits.webkit.org/305877.1080@webkitglib/2.52
Commit: ccc3a9284a283e68ad97757691216d1762ef3230
https://github.com/WebKit/WebKit/commit/ccc3a9284a283e68ad97757691216d1762ef3230
Author: Sihui Liu <[email protected]>
Date: 2026-08-10 (Mon, 10 Aug 2026)
Changed paths:
M Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp
M Source/WebKit/NetworkProcess/storage/NetworkStorageManager.h
Log Message:
-----------
Cherry-pick 19b0c2ec06ff. https://bugs.webkit.org/show_bug.cgi?id=312926
Add site validation to StorageManager and FileSystem message handlers
https://bugs.webkit.org/show_bug.cgi?id=312926
rdar://175269987
Reviewed by Chris Dumez.
Ensure web process actually has access to site included in StorageManager
and FileSystem requests sent to network
process.
* Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:
(WebKit::NetworkStorageManager::persisted):
(WebKit::NetworkStorageManager::persist):
(WebKit::NetworkStorageManager::estimate):
(WebKit::NetworkStorageManager::fileSystemGetDirectory):
* Source/WebKit/NetworkProcess/storage/NetworkStorageManager.h:
Canonical link: https://commits.webkit.org/311823@main
Canonical link: https://commits.webkit.org/[email protected]
Canonical link: https://commits.webkit.org/305877.1081@webkitglib/2.52
Commit: 796ddbcb877586dfa7c68f1fcc445a02dfc8cbec
https://github.com/WebKit/WebKit/commit/796ddbcb877586dfa7c68f1fcc445a02dfc8cbec
Author: Sihui Liu <[email protected]>
Date: 2026-08-10 (Mon, 10 Aug 2026)
Changed paths:
M Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp
M Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h
Log Message:
-----------
Cherry-pick b2b34862739c. https://bugs.webkit.org/show_bug.cgi?id=312926
Enable storage site validation
rdar://172706201
Reviewed by Chris Dumez.
Enable WebsiteDataStore::m_storageSiteValidationEnabled by default so
NetworkStorageManager validates the site on
messages it receives.
Replace MESSAGE_CHECK with STORAGE_MESSAGE_CHECK for site validation
checks. STORAGE_MESSAGE_CHECK generates a simulated
crash and returns an error instead of terminating the sender process. This
blocks storage access from compromised
processes while allowing us to monitor for false positives before upgrading
to MESSAGE_CHECK.
* Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:
(WebKit::NetworkStorageManager::persisted):
(WebKit::NetworkStorageManager::persist):
(WebKit::NetworkStorageManager::estimate):
(WebKit::NetworkStorageManager::fileSystemGetDirectory):
(WebKit::NetworkStorageManager::connectToStorageArea):
(WebKit::NetworkStorageManager::cancelConnectToStorageArea):
(WebKit::NetworkStorageManager::disconnectFromStorageArea):
(WebKit::NetworkStorageManager::setItem):
(WebKit::NetworkStorageManager::removeItem):
(WebKit::NetworkStorageManager::clear):
(WebKit::NetworkStorageManager::openDBRequestCancelled):
(WebKit::NetworkStorageManager::deleteDatabase):
(WebKit::NetworkStorageManager::databaseConnectionClosed):
(WebKit::NetworkStorageManager::getAllDatabaseNamesAndVersions):
(WebKit::NetworkStorageManager::cacheStorageOpenCache):
(WebKit::NetworkStorageManager::cacheStorageRemoveCache):
(WebKit::NetworkStorageManager::cacheStorageAllCaches):
(WebKit::NetworkStorageManager::cacheStorageReference):
(WebKit::NetworkStorageManager::cacheStorageDereference):
(WebKit::NetworkStorageManager::lockCacheStorage):
(WebKit::NetworkStorageManager::unlockCacheStorage):
(WebKit::NetworkStorageManager::cacheStorageRetrieveRecords):
(WebKit::NetworkStorageManager::cacheStorageRemoveRecords):
(WebKit::NetworkStorageManager::cacheStoragePutRecords):
(WebKit::NetworkStorageManager::cacheStorageClearMemoryRepresentation):
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h:
Identifier: 305413.905@safari-7624-branch
Identifier: [email protected]
Canonical link: https://commits.webkit.org/305877.1082@webkitglib/2.52
Commit: 8dc28fa584c15149ed4a40497f8b93f18ca1c133
https://github.com/WebKit/WebKit/commit/8dc28fa584c15149ed4a40497f8b93f18ca1c133
Author: Sihui Liu <[email protected]>
Date: 2026-08-10 (Mon, 10 Aug 2026)
Changed paths:
M Source/WebKit/NetworkProcess/storage/FileSystemStorageHandle.cpp
M Source/WebKit/NetworkProcess/storage/FileSystemStorageHandle.h
M Source/WebKit/NetworkProcess/storage/FileSystemStorageManager.cpp
M Source/WebKit/NetworkProcess/storage/FileSystemStorageManager.h
M Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp
M Source/WebKit/NetworkProcess/storage/NetworkStorageManager.h
M Source/WebKit/NetworkProcess/storage/OriginStorageManager.cpp
M Source/WebKit/NetworkProcess/storage/OriginStorageManager.h
M Tools/TestWebKitAPI/Tests/WebKitCocoa/IPCTestingAPI.mm
Log Message:
-----------
Cherry-pick [email protected] (9945ade1f70a).
https://bugs.webkit.org/show_bug.cgi?id=312926
Unreviewed backport.
Validate connection access to FileSystem storage with
FileSystemHandleIdentifier
rdar://176773267
Reviewed by Chris Dumez.
Many FileSystem-related messages sent to NetworkStorageManager only carries
FileSystemHandleIdentifier when asking to
operate on FileSystem storage, and NetworkStorageManager does not check
whether the sender process actually has access
to requested handle. This lets a compromised process forge
FileSystemHandleIdentifier and access data from other
origins. To fix it, this patch stores the origin in
FileSystemStorageManager and adding an origin accessor to
FileSystemStorageHandle, so that NetworkStorageManager can run
isSiteAllowedForConnection in FileSystem-related message
handlers.
API test: IPCTestingAPI.FileSystemForgedHandleIdentifierRejected
* Source/WebKit/NetworkProcess/storage/FileSystemStorageHandle.cpp:
(WebKit::FileSystemStorageHandle::origin const):
* Source/WebKit/NetworkProcess/storage/FileSystemStorageHandle.h:
* Source/WebKit/NetworkProcess/storage/FileSystemStorageManager.cpp:
(WebKit::FileSystemStorageManager::create):
(WebKit::FileSystemStorageManager::FileSystemStorageManager):
* Source/WebKit/NetworkProcess/storage/FileSystemStorageManager.h:
* Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:
(WebKit::NetworkStorageManager::fileSystemGetDirectory):
(WebKit::NetworkStorageManager::closeHandle):
(WebKit::NetworkStorageManager::isSameEntry):
(WebKit::NetworkStorageManager::move):
(WebKit::NetworkStorageManager::getFileHandle):
(WebKit::NetworkStorageManager::getDirectoryHandle):
(WebKit::NetworkStorageManager::removeEntry):
(WebKit::NetworkStorageManager::resolve):
(WebKit::NetworkStorageManager::getFile):
(WebKit::NetworkStorageManager::createSyncAccessHandle):
(WebKit::NetworkStorageManager::closeSyncAccessHandle):
(WebKit::NetworkStorageManager::requestNewCapacityForSyncAccessHandle):
(WebKit::NetworkStorageManager::createWritable):
(WebKit::NetworkStorageManager::closeWritable):
(WebKit::NetworkStorageManager::executeCommandForWritable):
(WebKit::NetworkStorageManager::getHandleNames):
(WebKit::NetworkStorageManager::getHandle):
(WebKit::NetworkStorageManager::canConnectionAccessFileSystemHandle const):
* Source/WebKit/NetworkProcess/storage/NetworkStorageManager.h:
* Source/WebKit/NetworkProcess/storage/OriginStorageManager.cpp:
(WebKit::OriginStorageManager::StorageBucket::fileSystemStorageManager):
(WebKit::OriginStorageManager::fileSystemStorageManager):
* Source/WebKit/NetworkProcess/storage/OriginStorageManager.h:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/IPCTestingAPI.mm:
(function):
((IPCTestingAPI, FileSystemForgedHandleIdentifierRejected)):
(CGColorInNSSecureCoding)): Deleted.
(NSURLWithBaseURLInNSSecureCoding)): Deleted.
Identifier: [email protected]
Canonical link: https://commits.webkit.org/305877.1083@webkitglib/2.52
Compare: https://github.com/WebKit/WebKit/compare/a90706fe4a1b...8dc28fa584c1
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications