Title: [264283] trunk/Source/WebKit
Revision
264283
Author
da...@apple.com
Date
2020-07-12 11:53:53 -0700 (Sun, 12 Jul 2020)

Log Message

REGRESSION (r261152): 9 blocks of critical sandboxing code disabled because they are guarded with HAVE(SANDBOX_ISSUE_READ_EXTENSION_TO_PROCESS_BY_AUDIT_TOKEN)
https://bugs.webkit.org/show_bug.cgi?id=214233

Reviewed by Per Arne Vollan.

* NetworkProcess/NetworkResourceLoadParameters.cpp:
(WebKit::NetworkResourceLoadParameters::encode const): Remove #if HAVE.
* UIProcess/Cocoa/WebPageProxyCocoa.mm:
(WebKit::WebPageProxy::createSandboxExtensionsIfNeeded): Ditto.
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::maybeInitializeSandboxExtensionHandle): Ditto.
(WebKit::WebPageProxy::loadRequestWithNavigationShared): Ditto.
(WebKit::WebPageProxy::loadFile): Ditto.
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::shouldSendPendingMessage): Ditto.
* WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:
(WebKit::MediaPlayerPrivateRemote::MediaPlayerPrivateRemote::load): Ditto.

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (264282 => 264283)


--- trunk/Source/WebKit/ChangeLog	2020-07-12 18:47:31 UTC (rev 264282)
+++ trunk/Source/WebKit/ChangeLog	2020-07-12 18:53:53 UTC (rev 264283)
@@ -1,3 +1,23 @@
+2020-07-12  Darin Adler  <da...@apple.com>
+
+        REGRESSION (r261152): 9 blocks of critical sandboxing code disabled because they are guarded with HAVE(SANDBOX_ISSUE_READ_EXTENSION_TO_PROCESS_BY_AUDIT_TOKEN)
+        https://bugs.webkit.org/show_bug.cgi?id=214233
+
+        Reviewed by Per Arne Vollan.
+
+        * NetworkProcess/NetworkResourceLoadParameters.cpp:
+        (WebKit::NetworkResourceLoadParameters::encode const): Remove #if HAVE.
+        * UIProcess/Cocoa/WebPageProxyCocoa.mm:
+        (WebKit::WebPageProxy::createSandboxExtensionsIfNeeded): Ditto.
+        * UIProcess/WebPageProxy.cpp:
+        (WebKit::WebPageProxy::maybeInitializeSandboxExtensionHandle): Ditto.
+        (WebKit::WebPageProxy::loadRequestWithNavigationShared): Ditto.
+        (WebKit::WebPageProxy::loadFile): Ditto.
+        * UIProcess/WebProcessProxy.cpp:
+        (WebKit::WebProcessProxy::shouldSendPendingMessage): Ditto.
+        * WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:
+        (WebKit::MediaPlayerPrivateRemote::MediaPlayerPrivateRemote::load): Ditto.
+
 2020-07-11  Darin Adler  <da...@apple.com>
 
         Remove live ranges from AccessibilityObject.h, AccessibilityObjectInterface.h, AccessibilityRenderObject.h, AXIsolatedObject.h

Modified: trunk/Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.cpp (264282 => 264283)


--- trunk/Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.cpp	2020-07-12 18:47:31 UTC (rev 264282)
+++ trunk/Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.cpp	2020-07-12 18:53:53 UTC (rev 264283)
@@ -66,13 +66,11 @@
 
     if (request.url().isLocalFile()) {
         SandboxExtension::Handle requestSandboxExtension;
-#if HAVE(SANDBOX_ISSUE_READ_EXTENSION_TO_PROCESS_BY_AUDIT_TOKEN)
+#if ENABLE(SANDBOX_EXTENSIONS)
         if (networkProcessAuditToken)
             SandboxExtension::createHandleForReadByAuditToken(request.url().fileSystemPath(), *networkProcessAuditToken, requestSandboxExtension);
         else
             SandboxExtension::createHandle(request.url().fileSystemPath(), SandboxExtension::Type::ReadOnly, requestSandboxExtension);
-#else
-        SandboxExtension::createHandle(request.url().fileSystemPath(), SandboxExtension::Type::ReadOnly, requestSandboxExtension);
 #endif
         encoder << requestSandboxExtension;
     }

Modified: trunk/Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm (264282 => 264283)


--- trunk/Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm	2020-07-12 18:47:31 UTC (rev 264282)
+++ trunk/Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm	2020-07-12 18:53:53 UTC (rev 264283)
@@ -184,15 +184,11 @@
     if (files.size() == 1) {
         BOOL isDirectory;
         if ([[NSFileManager defaultManager] fileExistsAtPath:files[0] isDirectory:&isDirectory] && !isDirectory) {
-#if HAVE(SANDBOX_ISSUE_READ_EXTENSION_TO_PROCESS_BY_AUDIT_TOKEN)
             ASSERT(process().connection() && process().connection()->getAuditToken());
             if (process().connection() && process().connection()->getAuditToken())
                 SandboxExtension::createHandleForReadByAuditToken("/", *(process().connection()->getAuditToken()), fileReadHandle);
             else
                 SandboxExtension::createHandle("/", SandboxExtension::Type::ReadOnly, fileReadHandle);
-#else
-            SandboxExtension::createHandle("/", SandboxExtension::Type::ReadOnly, fileReadHandle);
-#endif
             willAcquireUniversalFileReadSandboxExtension(m_process);
         }
     }

Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.cpp (264282 => 264283)


--- trunk/Source/WebKit/UIProcess/WebPageProxy.cpp	2020-07-12 18:47:31 UTC (rev 264282)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.cpp	2020-07-12 18:53:53 UTC (rev 264283)
@@ -1180,23 +1180,28 @@
     closePage();
 }
 
+#if !ENABLE(SANDBOX_EXTENSIONS)
+
+void WebPageProxy::maybeInitializeSandboxExtensionHandle(WebProcessProxy&, const URL&, const URL&, SandboxExtension::Handle&, bool)
+{
+}
+
+#else
+
 void WebPageProxy::maybeInitializeSandboxExtensionHandle(WebProcessProxy& process, const URL& url, const URL& resourceDirectoryURL, SandboxExtension::Handle& sandboxExtensionHandle, bool checkAssumedReadAccessToResourceURL)
 {
     if (!url.isLocalFile())
         return;
 
-#if HAVE(SANDBOX_ISSUE_READ_EXTENSION_TO_PROCESS_BY_AUDIT_TOKEN)
     // If the process is still launching then it does not have a PID yet. We will take care of creating the sandbox extension
     // once the process has finished launching.
     if (process.isLaunching() || process.wasTerminated())
         return;
-#endif
 
     if (!resourceDirectoryURL.isEmpty()) {
         if (checkAssumedReadAccessToResourceURL && process.hasAssumedReadAccessToURL(resourceDirectoryURL))
             return;
 
-#if HAVE(SANDBOX_ISSUE_READ_EXTENSION_TO_PROCESS_BY_AUDIT_TOKEN)
         ASSERT(process.connection() && process.connection()->getAuditToken());
         bool createdExtension = false;
         if (process.connection() && process.connection()->getAuditToken())
@@ -1208,12 +1213,6 @@
             process.assumeReadAccessToBaseURL(*this, resourceDirectoryURL.string());
             return;
         }
-#else
-        if (SandboxExtension::createHandle(resourceDirectoryURL.fileSystemPath(), SandboxExtension::Type::ReadOnly, sandboxExtensionHandle)) {
-            process.assumeReadAccessToBaseURL(*this, resourceDirectoryURL.string());
-            return;
-        }
-#endif
     }
 
     if (process.hasAssumedReadAccessToURL(url))
@@ -1222,7 +1221,6 @@
     // Inspector resources are in a directory with assumed access.
     RELEASE_ASSERT_WITH_SECURITY_IMPLICATION(!WebKit::isInspectorPage(*this));
 
-#if HAVE(SANDBOX_ISSUE_READ_EXTENSION_TO_PROCESS_BY_AUDIT_TOKEN)
     ASSERT(process.connection() && process.connection()->getAuditToken());
     bool createdExtension = false;
     if (process.connection() && process.connection()->getAuditToken())
@@ -1234,12 +1232,6 @@
         willAcquireUniversalFileReadSandboxExtension(process);
         return;
     }
-#else
-    if (SandboxExtension::createHandle("/", SandboxExtension::Type::ReadOnly, sandboxExtensionHandle)) {
-        willAcquireUniversalFileReadSandboxExtension(process);
-        return;
-    }
-#endif
 
 #if PLATFORM(COCOA)
     if (!linkedOnOrAfter(SDKVersion::FirstWithoutUnconditionalUniversalSandboxExtension))
@@ -1251,7 +1243,6 @@
     auto basePath = baseURL.fileSystemPath();
     if (basePath.isNull())
         return;
-#if HAVE(SANDBOX_ISSUE_READ_EXTENSION_TO_PROCESS_BY_AUDIT_TOKEN)
     if (process.connection() && process.connection()->getAuditToken())
         createdExtension = SandboxExtension::createHandleForReadByAuditToken(basePath, *(process.connection()->getAuditToken()), sandboxExtensionHandle);
     else
@@ -1259,16 +1250,16 @@
     
     if (createdExtension)
         process.assumeReadAccessToBaseURL(*this, baseURL.string());
-#else
-    if (SandboxExtension::createHandle(basePath, SandboxExtension::Type::ReadOnly, sandboxExtensionHandle))
-        process.assumeReadAccessToBaseURL(*this, baseURL.string());
-#endif
 }
 
+#endif
+
 #if !PLATFORM(COCOA)
+
 void WebPageProxy::addPlatformLoadParameters(WebProcessProxy&, LoadParameters&)
 {
 }
+
 #endif
 
 WebProcessProxy& WebPageProxy::ensureRunningProcess()
@@ -1329,14 +1320,10 @@
 
     navigation.setIsLoadedWithNavigationShared(true);
 
-#if HAVE(SANDBOX_ISSUE_READ_EXTENSION_TO_PROCESS_BY_AUDIT_TOKEN)
     if (!process->isLaunching() || !url.isLocalFile())
         process->send(Messages::WebPage::LoadRequest(loadParameters), webPageID);
     else
         process->send(Messages::WebPage::LoadRequestWaitingForProcessLaunch(loadParameters, m_pageLoadState.resourceDirectoryURL(), m_identifier, true), webPageID);
-#else
-    process->send(Messages::WebPage::LoadRequest(loadParameters), webPageID);
-#endif
     process->startResponsivenessTimer();
 }
 
@@ -1387,14 +1374,10 @@
     maybeInitializeSandboxExtensionHandle(m_process, fileURL, resourceDirectoryURL, loadParameters.sandboxExtensionHandle, checkAssumedReadAccessToResourceURL);
     addPlatformLoadParameters(m_process, loadParameters);
 
-#if HAVE(SANDBOX_ISSUE_READ_EXTENSION_TO_PROCESS_BY_AUDIT_TOKEN)
     if (m_process->isLaunching())
         send(Messages::WebPage::LoadRequestWaitingForProcessLaunch(loadParameters, resourceDirectoryURL, m_identifier, checkAssumedReadAccessToResourceURL));
     else
         send(Messages::WebPage::LoadRequest(loadParameters));
-#else
-    send(Messages::WebPage::LoadRequest(loadParameters));
-#endif
     m_process->startResponsivenessTimer();
 
     return navigation;

Modified: trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp (264282 => 264283)


--- trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp	2020-07-12 18:47:31 UTC (rev 264282)
+++ trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp	2020-07-12 18:53:53 UTC (rev 264283)
@@ -358,7 +358,6 @@
 
 bool WebProcessProxy::shouldSendPendingMessage(const PendingMessage& message)
 {
-#if HAVE(SANDBOX_ISSUE_READ_EXTENSION_TO_PROCESS_BY_AUDIT_TOKEN)
     if (message.encoder->messageName() == IPC::MessageName::WebPage_LoadRequestWaitingForProcessLaunch) {
         auto buffer = message.encoder->buffer();
         auto bufferSize = message.encoder->bufferSize();
@@ -376,7 +375,6 @@
             ASSERT_NOT_REACHED();
         return false;
     }
-#endif
     return true;
 }
 

Modified: trunk/Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp (264282 => 264283)


--- trunk/Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp	2020-07-12 18:47:31 UTC (rev 264282)
+++ trunk/Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp	2020-07-12 18:53:53 UTC (rev 264283)
@@ -139,16 +139,15 @@
 void MediaPlayerPrivateRemote::MediaPlayerPrivateRemote::load(const URL& url, const ContentType& contentType, const String& keySystem)
 {
     Optional<SandboxExtension::Handle> sandboxExtensionHandle;
+
+#if ENABLE(SANDBOX_EXTENSIONS)
     if (url.isLocalFile()) {
         SandboxExtension::Handle handle;
         auto fileSystemPath = url.fileSystemPath();
 
         auto createExtension = [&] {
-#if HAVE(SANDBOX_ISSUE_READ_EXTENSION_TO_PROCESS_BY_AUDIT_TOKEN)
             if (auto auditToken = m_manager.gpuProcessConnection().auditToken())
                 return SandboxExtension::createHandleForReadByAuditToken(fileSystemPath, auditToken.value(), handle);
-#endif
-
             return SandboxExtension::createHandle(fileSystemPath, SandboxExtension::Type::ReadOnly, handle);
         };
 
@@ -161,6 +160,7 @@
 
         sandboxExtensionHandle = WTFMove(handle);
     }
+#endif
 
     connection().sendWithAsyncReply(Messages::RemoteMediaPlayerProxy::Load(url, sandboxExtensionHandle, contentType, keySystem), [weakThis = makeWeakPtr(*this)](auto&& configuration) {
         if (weakThis)
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to