Title: [283058] trunk/Source/WebKit
Revision
283058
Author
[email protected]
Date
2021-09-24 14:43:26 -0700 (Fri, 24 Sep 2021)

Log Message

Clean up preference rules in sandboxes
https://bugs.webkit.org/show_bug.cgi?id=230578
<rdar://problem/83371815>

Reviewed by Brent Fulgham.

We are currently duplicating many preference domains in the sandboxes after blocking cfprefsd by using CFPrefs direct mode.
This is addressed by adopting a pre-existing macro that adds the required file access privileges in CFPrefs direct mode.
This patch also creates a sandbox include file for preferences, which can be shared among WebKit processes.

* GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in:
* NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
* PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in:
* Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb:
* Resources/SandboxProfiles/ios/com.apple.WebKit.WebAuthn.sb:
* Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in:
* Shared/Sandbox: Added.
* Shared/Sandbox/preferences.sb: Added.
* WebAuthnProcess/mac/com.apple.WebKit.WebAuthnProcess.sb.in:
* WebKit.xcodeproj/project.pbxproj:
* WebProcess/com.apple.WebProcess.sb.in:

Modified Paths

Added Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (283057 => 283058)


--- trunk/Source/WebKit/ChangeLog	2021-09-24 21:25:45 UTC (rev 283057)
+++ trunk/Source/WebKit/ChangeLog	2021-09-24 21:43:26 UTC (rev 283058)
@@ -1,3 +1,27 @@
+2021-09-24  Per Arne Vollan  <[email protected]>
+
+        Clean up preference rules in sandboxes
+        https://bugs.webkit.org/show_bug.cgi?id=230578
+        <rdar://problem/83371815>
+
+        Reviewed by Brent Fulgham.
+
+        We are currently duplicating many preference domains in the sandboxes after blocking cfprefsd by using CFPrefs direct mode.
+        This is addressed by adopting a pre-existing macro that adds the required file access privileges in CFPrefs direct mode.
+        This patch also creates a sandbox include file for preferences, which can be shared among WebKit processes.
+
+        * GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in:
+        * NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
+        * PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in:
+        * Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb:
+        * Resources/SandboxProfiles/ios/com.apple.WebKit.WebAuthn.sb:
+        * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in:
+        * Shared/Sandbox: Added.
+        * Shared/Sandbox/preferences.sb: Added.
+        * WebAuthnProcess/mac/com.apple.WebKit.WebAuthnProcess.sb.in:
+        * WebKit.xcodeproj/project.pbxproj:
+        * WebProcess/com.apple.WebProcess.sb.in:
+
 2021-09-24  Devin Rousso  <[email protected]>
 
         Add typechecking `is` overloads for `std::unique_ptr`, `WTF::UniqueRef`, and `WTF::WeakPtr`

Modified: trunk/Source/WebKit/GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in (283057 => 283058)


--- trunk/Source/WebKit/GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in	2021-09-24 21:25:45 UTC (rev 283057)
+++ trunk/Source/WebKit/GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in	2021-09-24 21:43:26 UTC (rev 283058)
@@ -26,6 +26,8 @@
 (deny nvram*)
 (allow system-audit file-read-metadata)
 
+#include "Shared/Sandbox/preferences.sb"
+
 ;;;
 ;;; The following rules were originally contained in 'system.sb'. We are duplicating them here so we can
 ;;; remove unneeded sandbox extensions.
@@ -567,82 +569,38 @@
     (subpath "/Library/Audio/Plug-Ins/Components"))
 
 ;; Preferences support
-(allow user-preference-read
-    (preference-domain
-        "kCFPreferencesAnyApplication"
-        "com.apple.Accessibility"
-        "com.apple.ATS"
-        "com.apple.CoreGraphics"
-        "com.apple.DownloadAssessment"
-        "com.apple.HIToolbox"
-        "com.apple.LaunchServices"
-        "com.apple.MultitouchSupport" ;; FIXME: Remove when <rdar://problem/13011633> is fixed.
-        "com.apple.ServicesMenu.Services" ;; Needed for NSAttributedString <rdar://problem/10844321>
-        "com.apple.ViewBridge" ;; Needed for Input elements.
-        "com.apple.WebFoundation"
-        "com.apple.avfoundation"
-        "com.apple.avfoundation.frecents" ;; <rdar://problem/33137029>
-        "com.apple.avfoundation.videoperformancehud" ;; <rdar://problem/31594568>
-        "com.apple.coremedia"
-        "com.apple.crypto"
-        "com.apple.driver.AppleBluetoothMultitouch.mouse"
-        "com.apple.driver.AppleBluetoothMultitouch.trackpad"
-        "com.apple.driver.AppleHIDMouse"
-        "com.apple.lookup.shared"
-        "com.apple.mediaaccessibility" ;; Needed for custom caption styles
-        "com.apple.networkConnect"
-        "com.apple.speech.voice.prefs"
-        "com.apple.systemsound"
-        "com.apple.universalaccess"
-        "edu.mit.Kerberos"
-        "pbs" ;; Needed for NSAttributedString <rdar://problem/10844321>
-))
+(shared-preferences-read
+    "com.apple.Accessibility"
+    "com.apple.ATS"
+    "com.apple.CoreGraphics"
+    "com.apple.DownloadAssessment"
+    "com.apple.HIToolbox"
+    "com.apple.LaunchServices"
+    "com.apple.MultitouchSupport" ;; FIXME: Remove when <rdar://problem/13011633> is fixed.
+    "com.apple.ServicesMenu.Services" ;; Needed for NSAttributedString <rdar://problem/10844321>
+    "com.apple.ViewBridge" ;; Needed for Input elements.
+    "com.apple.WebFoundation"
+    "com.apple.WebKit"
+    "com.apple.avfoundation"
+    "com.apple.avfoundation.frecents" ;; <rdar://problem/33137029>
+    "com.apple.avfoundation.videoperformancehud" ;; <rdar://problem/31594568>
+    "com.apple.coremedia"
+    "com.apple.crypto"
+    "com.apple.driver.AppleBluetoothMultitouch.mouse"
+    "com.apple.driver.AppleBluetoothMultitouch.trackpad"
+    "com.apple.driver.AppleHIDMouse"
+    "com.apple.lookup.shared"
+    "com.apple.mediaaccessibility" ;; Needed for custom caption styles
+    "com.apple.networkConnect"
+    "com.apple.security"
+    "com.apple.speech.voice.prefs"
+    "com.apple.systemsound"
+    "com.apple.universalaccess"
+    "edu.mit.Kerberos"
+    "pbs") ;; Needed for NSAttributedString <rdar://problem/10844321>
 
-#if ENABLE(CFPREFS_DIRECT_MODE)
-(allow file-read*
-    (literal "/Library/Preferences/.GlobalPreferences.plist")
-    (home-subpath "/Library/Preferences/.GlobalPreferences.plist")
-    (home-subpath "/Library/Preferences/.GlobalPreferences_m.plist")
-    (home-subpath "/Library/Preferences/com.apple.security.plist")
-    (home-subpath "/Library/Preferences/com.apple.Accessibility.plist")
-    (home-subpath "/Library/Preferences/com.apple.ATS.plist")
-    (home-subpath "/Library/Preferences/com.apple.CoreGraphics.plist")
-    (home-subpath "/Library/Preferences/com.apple.DownloadAssessment.plist")
-    (home-subpath "/Library/Preferences/com.apple.HIToolbox.plist")
-    (home-subpath "/Library/Preferences/com.apple.LaunchServices.plist")
-    (home-subpath "/Library/Preferences/com.apple.MultitouchSupport.plist")
-    (home-subpath "/Library/Preferences/com.apple.ServicesMenu.Services.plist")
-    (home-subpath "/Library/Preferences/com.apple.ViewBridge.plist")
-    (home-subpath "/Library/Preferences/com.apple.WebKit.plist")
-    (home-subpath "/Library/Preferences/com.apple.WebFoundation.plist")
-    (home-subpath "/Library/Preferences/com.apple.avfoundation.plist")
-    (home-subpath "/Library/Preferences/com.apple.avfoundation.frecents.plist")
-    (home-subpath "/Library/Preferences/com.apple.avfoundation.videoperformancehud.plist")
-    (home-subpath "/Library/Preferences/com.apple.coremedia.plist")
-    (home-subpath "/Library/Preferences/com.apple.crypto.plist")
-    (home-subpath "/Library/Preferences/com.apple.driver.AppleBluetoothMultitouch.mouse.plist")
-    (home-subpath "/Library/Preferences/com.apple.driver.AppleBluetoothMultitouch.trackpad.plist")
-    (home-subpath "/Library/Preferences/com.apple.driver.AppleHIDMouse.plist")
-    (home-subpath "/Library/Preferences/com.apple.lookup.shared.plist")
-    (home-subpath "/Library/Preferences/com.apple.mediaaccessibility.plist")
-    (home-subpath "/Library/Preferences/com.apple.networkConnect.plist")
-    (home-subpath "/Library/Preferences/com.apple.speech.voice.prefs.plist")
-    (home-subpath "/Library/Preferences/com.apple.systemsound.plist")
-    (home-subpath "/Library/Preferences/com.apple.universalaccess.plist")
-    (home-subpath "/Library/Preferences/edu.mit.Kerberos.plist")
-    (home-subpath "/Library/Preferences/pbs.plist")
-)
-#endif
+(allow-reading-global-preferences)
 
-; (Temporary) backward compatibility with non-CFPreferences readers.
-(allow file-read*
-    (literal "/Library/Preferences/com.apple.ViewBridge.plist"))
-
-; FIXME: This is needed for some security framework calls (that use non-CFPreferences readers)
-(allow file-read-data
-    (literal "/Library/Preferences/com.apple.security.plist")
-    (home-subpath "/Library/Preferences/com.apple.security.plist"))
-
 ;; On-disk WebKit2 framework location, to account for debug installations outside of /System/Library/Frameworks,
 ;; and to allow issuing extensions.
 (allow-read-directory-and-issue-read-extensions (param "WEBKIT2_FRAMEWORK_DIR"))
@@ -911,24 +869,6 @@
         (set! deny orig-deny)
         (set! allow orig-allow))))
 
-(define (home-library-preferences-regex home-library-preferences-relative-regex)
-    (regex (string-append "^" (regex-quote (param "HOME_LIBRARY_PREFERENCES_DIR")) home-library-preferences-relative-regex)))
-
-(define (home-library-preferences-literal home-library-preferences-relative-literal)
-    (literal (string-append (param "HOME_LIBRARY_PREFERENCES_DIR") home-library-preferences-relative-literal)))
-
-(define (shared-preferences-read . domains)
-  (for-each (lambda (domain)
-              (begin
-                (if (defined? `user-preference-read)
-                    (allow user-preference-read (preference-domain domain)))
-                ; (Temporary) backward compatibility with non-CFPreferences readers.
-                (allow file-read*
-                       (literal (string-append "/Library/Preferences/" domain ".plist"))
-                       (home-library-preferences-literal (string-append "/" domain ".plist"))
-                       (home-library-preferences-regex (string-append #"/ByHost/" (regex-quote domain) #"\..*\.plist$")))))
-            domains))
-
 ;; Media capture, microphone access
 (with-filter (extension "com.apple.webkit.microphone")
     (allow device-microphone))

Modified: trunk/Source/WebKit/NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in (283057 => 283058)


--- trunk/Source/WebKit/NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in	2021-09-24 21:25:45 UTC (rev 283057)
+++ trunk/Source/WebKit/NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in	2021-09-24 21:43:26 UTC (rev 283058)
@@ -26,6 +26,8 @@
 (deny nvram*)
 (allow system-audit file-read-metadata)
 
+#include "Shared/Sandbox/preferences.sb"
+
 #if __MAC_OS_X_VERSION_MIN_REQUIRED >= 101500
 ;;;
 ;;; The following rules were originally contained in 'common.sb'. We are duplicating them here so we can
@@ -264,15 +266,15 @@
     *uuid-pattern*)
 
 ;; Read-only preferences and data
-(allow user-preference-read
-    (preference-domain
-        "kCFPreferencesAnyApplication"
-        "com.apple.CFNetwork"
-        "com.apple.DownloadAssessment"
-        "com.apple.WebFoundation"
-        "com.apple.ist.ds.appleconnect2.uat" ;; Remove after <rdar://problem/35542803> ships
-        "com.apple.networkConnect"))
+(allow-reading-global-preferences)
 
+(shared-preferences-read
+    "com.apple.CFNetwork"
+    "com.apple.DownloadAssessment"
+    "com.apple.WebFoundation"
+    "com.apple.ist.ds.appleconnect2.uat" ;; Remove after <rdar://problem/35542803> ships
+    "com.apple.networkConnect")
+
 (allow file-read*
     ;; Basic system paths
     (subpath "/Library/Frameworks")
@@ -378,12 +380,11 @@
         (subpath "/private/var/db/mds/system")) ;; FIXME: This should be removed when <rdar://problem/9538414> is fixed.
 )
 
-(allow user-preference-read
-    (preference-domain
-        "com.apple.crypto"
-        "com.apple.security"
-        "com.apple.security.common"
-        "com.apple.security.revocation"))
+(shared-preferences-read
+    "com.apple.crypto"
+    "com.apple.security"
+    "com.apple.security.common"
+    "com.apple.security.revocation")
 
 (allow file-read*
        (subpath "/private/var/db/mds")
@@ -423,11 +424,10 @@
     (global-name "com.apple.system.logger"))
 (allow network-outbound
     (remote udp))
-(allow user-preference-read
-    (preference-domain
-        "com.apple.GSS"
-        "com.apple.Kerberos"
-        "edu.mit.Kerberos"))
+(shared-preferences-read
+    "com.apple.GSS"
+    "com.apple.Kerberos"
+    "edu.mit.Kerberos")
 (allow file-read*
     (literal "/private/etc/krb5.conf")
     (literal "/private/etc/services")

Modified: trunk/Source/WebKit/PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in (283057 => 283058)


--- trunk/Source/WebKit/PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in	2021-09-24 21:25:45 UTC (rev 283057)
+++ trunk/Source/WebKit/PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in	2021-09-24 21:43:26 UTC (rev 283058)
@@ -27,6 +27,8 @@
 
 (import "system.sb")
 
+#include "Shared/Sandbox/preferences.sb"
+
 ;;; process-info* defaults to allow; deny it and then allow operations we actually need.
 (deny process-info*)
 (allow process-info-pidinfo)
@@ -193,18 +195,6 @@
 (define (home-library-preferences-literal home-library-preferences-relative-literal)
     (literal (string-append (param "HOME_LIBRARY_PREFERENCES_DIR") home-library-preferences-relative-literal)))
 
-(define (shared-preferences-read . domains)
-  (for-each (lambda (domain)
-              (begin
-                (if (defined? `user-preference-read)
-                    (allow user-preference-read (preference-domain domain)))
-                ; (Temporary) backward compatibility with non-CFPreferences readers.
-                (allow file-read*
-                       (literal (string-append "/Library/Preferences/" domain ".plist"))
-                       (home-library-preferences-literal (string-append "/" domain ".plist"))
-                       (home-library-preferences-regex (string-append #"/ByHost/" (regex-quote domain) #"\..*\.plist$")))))
-            domains))
-
 (define (shared-preferences-read-write . domains)
   (for-each (lambda (domain)
               (begin

Modified: trunk/Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb (283057 => 283058)


--- trunk/Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb	2021-09-24 21:25:45 UTC (rev 283057)
+++ trunk/Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb	2021-09-24 21:43:26 UTC (rev 283058)
@@ -80,7 +80,12 @@
 
 (define-once (mobile-preferences-read . domains)
     (allow-preferences-common)
-    (allow user-preference-read (apply preference-domain domains)))
+    (for-each (lambda (domain)
+        (begin
+            (allow user-preference-read (preference-domain domain))
+            (allow file-read*
+                (home-literal (string-append "/Library/Preferences/" domain ".plist")))))
+        domains))
 
 (define-once (framebuffer-access)
     (allow iokit-open
@@ -456,7 +461,7 @@
     (allow file-read*
            (subpath "/private/var/preferences/Logging"))
 
-    (mobile-preferences-read "kCFPreferencesAnyApplication")
+    (allow user-preference-read (preference-domain "kCFPreferencesAnyApplication"))
     (allow file-read*
            (front-user-home-literal "/Library/Preferences/.GlobalPreferences.plist")
            (front-user-home-literal "/Library/Preferences/.GlobalPreferences_m.plist"))
@@ -715,9 +720,6 @@
 
 (uikit-requirements)
 
-;; <rdar://problem/9404009>
-(mobile-preferences-read "kCFPreferencesAnyApplication")
-
 (dictionary-support)
 
 ; <rdar://problem/8440231>
@@ -748,51 +750,7 @@
 ;;; End UIKit-apps.sb content
 ;;;
 
-;; In CFPrefs direct mode, access to preference files is required.
-(allow file-read*
-    (home-literal
-        "/Library/Preferences/com.apple.Accessibility.plist"
-        "/Library/Preferences/com.apple.AdLib.plist"
-        "/Library/Preferences/com.apple.EmojiPreferences.plist"
-        "/Library/Preferences/com.apple.InputModePreferences.plist"
-        "/Library/Preferences/com.apple.LaunchServices.plist"
-        "/Library/Preferences/com.apple.Metal.plist"
-        "/Library/Preferences/com.apple.MobileAsset.plist"
-        "/Library/Preferences/com.apple.Preferences.plist"
-        "/Library/Preferences/com.apple.PrototypeTools.plist"
-        "/Library/Preferences/com.apple.SpeakSelection.plist"
-        "/Library/Preferences/com.apple.UIKit.plist"
-        "/Library/Preferences/com.apple.VoiceOverTouch.plist"
-        "/Library/Preferences/com.apple.WebFoundation.plist"
-        "/Library/Preferences/com.apple.WebUI.plist"
-        "/Library/Preferences/com.apple.airplay.plist"
-        "/Library/Preferences/com.apple.audio.virtualaudio.plist"
-        "/Library/Preferences/com.apple.avfoundation.plist"
-        "/Library/Preferences/com.apple.avfoundation.frecents.plist"
-        "/Library/Preferences/com.apple.avfoundation.videoperformancehud.plist"
-        "/Library/Preferences/com.apple.avkit.plist"
-        "/Library/Preferences/com.apple.coreanimation.plist"
-        "/Library/Preferences/com.apple.coreaudio.plist"
-        "/Library/Preferences/com.apple.coremedia.plist"
-        "/Library/Preferences/com.apple.corevideo.plist"
-        "/Library/Preferences/com.apple.da.plist"
-        "/Library/Preferences/com.apple.keyboard.plist"
-        "/Library/Preferences/com.apple.lookup.shared.plist"
-        "/Library/Preferences/com.apple.mediaaccessibility.plist"
-        "/Library/Preferences/com.apple.mediaaccessibility.public.plist"
-        "/Library/Preferences/com.apple.mediaremote.plist"
-        "/Library/Preferences/com.apple.mobileipod.plist"
-        "/Library/Preferences/com.apple.mt.plist"
-        "/Library/Preferences/com.apple.hangtracer.plist"
-        "/Library/Preferences/com.apple.iokit.IOMobileGraphicsFamily.plist"
-        "/Library/Preferences/com.apple.itunesstored.plist"
-        "/Library/Preferences/com.apple.opengl.plist"
-        "/Library/Preferences/com.apple.preferences.sounds.plist"
-        "/Library/Preferences/com.apple.security.plist"
-        "/Library/Preferences/com.apple.voiceservices.plist"
-        "/Library/Preferences/com.apple.voiceservices.logging.plist"
-    )
-)
+(mobile-preferences-read "com.apple.AdLib.plist")
 
 (deny sysctl*)
 (allow sysctl-read

Modified: trunk/Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb (283057 => 283058)


--- trunk/Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb	2021-09-24 21:25:45 UTC (rev 283057)
+++ trunk/Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb	2021-09-24 21:43:26 UTC (rev 283058)
@@ -331,7 +331,7 @@
     (allow file-read*
         (subpath "/private/var/preferences/Logging"))
 
-    (mobile-preferences-read "kCFPreferencesAnyApplication")
+    (allow user-preference-read (preference-domain "kCFPreferencesAnyApplication"))
     (allow file-read*
         (front-user-home-literal "/Library/Preferences/.GlobalPreferences.plist"))
 

Modified: trunk/Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.WebAuthn.sb (283057 => 283058)


--- trunk/Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.WebAuthn.sb	2021-09-24 21:25:45 UTC (rev 283057)
+++ trunk/Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.WebAuthn.sb	2021-09-24 21:43:26 UTC (rev 283058)
@@ -45,7 +45,12 @@
 
 (define-once (mobile-preferences-read . domains)
     (allow-preferences-common)
-    (allow user-preference-read (apply preference-domain domains)))
+    (for-each (lambda (domain)
+        (begin
+            (allow user-preference-read (preference-domain domain))
+            (allow file-read*
+                (home-literal (string-append "/Library/Preferences/" domain ".plist")))))
+        domains))
 
 (define-once (internal-debugging-support)
     (allow file-read* file-map-executable
@@ -180,7 +185,9 @@
         )
     )
 
-    (mobile-preferences-read "kCFPreferencesAnyApplication")
+    (allow user-preference-read (preference-domain "kCFPreferencesAnyApplication"))
+    (allow file-read*
+        (front-user-home-literal "/Library/Preferences/.GlobalPreferences.plist"))
     (allow managed-preference-read (preference-domain "kCFPreferencesAnyApplication"))
     
     (allow file-read*

Modified: trunk/Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in (283057 => 283058)


--- trunk/Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in	2021-09-24 21:25:45 UTC (rev 283057)
+++ trunk/Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in	2021-09-24 21:43:26 UTC (rev 283058)
@@ -80,7 +80,12 @@
 
 (define-once (mobile-preferences-read . domains)
     (allow-preferences-common)
-    (allow user-preference-read (apply preference-domain domains)))
+    (for-each (lambda (domain)
+        (begin
+            (allow user-preference-read (preference-domain domain))
+            (allow file-read*
+                (home-literal (string-append "/Library/Preferences/" domain ".plist")))))
+        domains))
 
 (define-once (framebuffer-access)
     (allow iokit-open
@@ -571,7 +576,7 @@
     (allow file-read*
            (subpath "/private/var/preferences/Logging"))
 
-    (mobile-preferences-read "kCFPreferencesAnyApplication")
+    (allow user-preference-read (preference-domain "kCFPreferencesAnyApplication"))
     (allow file-read*
            (front-user-home-literal "/Library/Preferences/.GlobalPreferences.plist")
            (front-user-home-literal "/Library/Preferences/.GlobalPreferences_m.plist"))
@@ -838,9 +843,6 @@
 
 (uikit-requirements)
 
-;; <rdar://problem/9404009>
-(mobile-preferences-read "kCFPreferencesAnyApplication")
-
 (dictionary-support)
 
 ; <rdar://problem/8440231>
@@ -871,51 +873,7 @@
 ;;; End UIKit-apps.sb content
 ;;;
 
-;; In CFPrefs direct mode, access to preference files is required.
-(allow file-read*
-    (home-literal
-        "/Library/Preferences/com.apple.Accessibility.plist"
-        "/Library/Preferences/com.apple.AdLib.plist"
-        "/Library/Preferences/com.apple.EmojiPreferences.plist"
-        "/Library/Preferences/com.apple.InputModePreferences.plist"
-        "/Library/Preferences/com.apple.LaunchServices.plist"
-        "/Library/Preferences/com.apple.Metal.plist"
-        "/Library/Preferences/com.apple.MobileAsset.plist"
-        "/Library/Preferences/com.apple.Preferences.plist"
-        "/Library/Preferences/com.apple.PrototypeTools.plist"
-        "/Library/Preferences/com.apple.SpeakSelection.plist"
-        "/Library/Preferences/com.apple.UIKit.plist"
-        "/Library/Preferences/com.apple.VoiceOverTouch.plist"
-        "/Library/Preferences/com.apple.WebFoundation.plist"
-        "/Library/Preferences/com.apple.WebUI.plist"
-        "/Library/Preferences/com.apple.airplay.plist"
-        "/Library/Preferences/com.apple.audio.virtualaudio.plist"
-        "/Library/Preferences/com.apple.avfoundation.plist"
-        "/Library/Preferences/com.apple.avfoundation.frecents.plist"
-        "/Library/Preferences/com.apple.avfoundation.videoperformancehud.plist"
-        "/Library/Preferences/com.apple.avkit.plist"
-        "/Library/Preferences/com.apple.coreanimation.plist"
-        "/Library/Preferences/com.apple.coreaudio.plist"
-        "/Library/Preferences/com.apple.coremedia.plist"
-        "/Library/Preferences/com.apple.corevideo.plist"
-        "/Library/Preferences/com.apple.da.plist"
-        "/Library/Preferences/com.apple.keyboard.plist"
-        "/Library/Preferences/com.apple.lookup.shared.plist"
-        "/Library/Preferences/com.apple.mediaaccessibility.plist"
-        "/Library/Preferences/com.apple.mediaaccessibility.public.plist"
-        "/Library/Preferences/com.apple.mediaremote.plist"
-        "/Library/Preferences/com.apple.mobileipod.plist"
-        "/Library/Preferences/com.apple.mt.plist"
-        "/Library/Preferences/com.apple.hangtracer.plist"
-        "/Library/Preferences/com.apple.iokit.IOMobileGraphicsFamily.plist"
-        "/Library/Preferences/com.apple.itunesstored.plist"
-        "/Library/Preferences/com.apple.opengl.plist"
-        "/Library/Preferences/com.apple.preferences.sounds.plist"
-        "/Library/Preferences/com.apple.security.plist"
-        "/Library/Preferences/com.apple.voiceservices.plist"
-        "/Library/Preferences/com.apple.voiceservices.logging.plist"
-    )
-)
+(mobile-preferences-read "com.apple.AdLib.plist")
 
 (deny file-read* (with no-report)
     (home-literal

Added: trunk/Source/WebKit/Shared/Sandbox/preferences.sb (0 => 283058)


--- trunk/Source/WebKit/Shared/Sandbox/preferences.sb	                        (rev 0)
+++ trunk/Source/WebKit/Shared/Sandbox/preferences.sb	2021-09-24 21:43:26 UTC (rev 283058)
@@ -0,0 +1,54 @@
+; Copyright (C) 2021 Apple Inc. All rights reserved.
+;
+; Redistribution and use in source and binary forms, with or without
+; modification, are permitted provided that the following conditions
+; are met:
+; 1. Redistributions of source code must retain the above copyright
+;    notice, this list of conditions and the following disclaimer.
+; 2. Redistributions in binary form must reproduce the above copyright
+;    notice, this list of conditions and the following disclaimer in the
+;    documentation and/or other materials provided with the distribution.
+;
+; THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+; THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+; PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+; BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+; CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+; SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+; CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+; ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+; THE POSSIBILITY OF SUCH DAMAGE.
+
+(define (home-library-preferences-regex home-library-preferences-relative-regex)
+    (regex (string-append "^" (regex-quote (param "HOME_LIBRARY_PREFERENCES_DIR")) home-library-preferences-relative-regex)))
+
+(define (home-library-preferences-literal home-library-preferences-relative-literal)
+    (literal (string-append (param "HOME_LIBRARY_PREFERENCES_DIR") home-library-preferences-relative-literal)))
+
+(define (shared-preferences-read . domains)
+    (for-each (lambda (domain)
+        (begin
+            (allow user-preference-read (preference-domain domain))
+            (allow file-read*
+                (literal (string-append "/Library/Preferences/" domain ".plist"))
+                (home-library-preferences-literal (string-append "/" domain ".plist"))
+                (home-library-preferences-regex (string-append #"/ByHost/" (regex-quote domain) #"\..*\.plist$")))))
+        domains))
+
+(define (allow-reading-global-preferences)
+    (allow user-preference-read (preference-domain "kCFPreferencesAnyApplication"))
+#if ENABLE(CFPREFS_DIRECT_MODE)
+    (allow file-read*
+        (literal "/Library/Preferences/.GlobalPreferences.plist")
+        (home-subpath "/Library/Preferences/.GlobalPreferences.plist")
+        (home-subpath "/Library/Preferences/.GlobalPreferences_m.plist")
+        (home-regex #"/Library/Preferences/ByHost/\.GlobalPreferences\..*\.plist$")
+    )
+#endif
+)
+
+
+
+

Modified: trunk/Source/WebKit/WebAuthnProcess/mac/com.apple.WebKit.WebAuthnProcess.sb.in (283057 => 283058)


--- trunk/Source/WebKit/WebAuthnProcess/mac/com.apple.WebKit.WebAuthnProcess.sb.in	2021-09-24 21:25:45 UTC (rev 283057)
+++ trunk/Source/WebKit/WebAuthnProcess/mac/com.apple.WebKit.WebAuthnProcess.sb.in	2021-09-24 21:43:26 UTC (rev 283058)
@@ -26,6 +26,8 @@
 (deny nvram*)
 (allow system-audit file-read-metadata)
 
+#include "Shared/Sandbox/preferences.sb"
+
 ;;;
 ;;; The following rules were originally contained in 'system.sb'. We are duplicating them here so we can
 ;;; remove unneeded sandbox extensions.
@@ -249,37 +251,36 @@
     (subpath "/Library/Audio/Plug-Ins/Components"))
 
 ;; Preferences support
-(allow user-preference-read
-    (preference-domain
-        "kCFPreferencesAnyApplication"
-        "com.apple.Accessibility"
-        "com.apple.ATS"
-        "com.apple.CoreGraphics"
-        "com.apple.DownloadAssessment"
-        "com.apple.HIToolbox"
-        "com.apple.LaunchServices"
-        "com.apple.MultitouchSupport" ;; FIXME: Remove when <rdar://problem/13011633> is fixed.
-        "com.apple.ServicesMenu.Services" ;; Needed for NSAttributedString <rdar://problem/10844321>
-        "com.apple.ViewBridge" ;; Needed for Input elements.
-        "com.apple.WebFoundation"
-        "com.apple.avfoundation"
-        "com.apple.avfoundation.frecents" ;; <rdar://problem/33137029>
-        "com.apple.avfoundation.videoperformancehud" ;; <rdar://problem/31594568>
-        "com.apple.coremedia"
-        "com.apple.crypto"
-        "com.apple.driver.AppleBluetoothMultitouch.mouse"
-        "com.apple.driver.AppleBluetoothMultitouch.trackpad"
-        "com.apple.driver.AppleHIDMouse"
-        "com.apple.lookup.shared"
-        "com.apple.mediaaccessibility" ;; Needed for custom caption styles
-        "com.apple.networkConnect"
-        "com.apple.speech.voice.prefs"
-        "com.apple.systemsound"
-        "com.apple.universalaccess"
-        "edu.mit.Kerberos"
-        "pbs" ;; Needed for NSAttributedString <rdar://problem/10844321>
-))
+(shared-preferences-read
+    "com.apple.Accessibility"
+    "com.apple.ATS"
+    "com.apple.CoreGraphics"
+    "com.apple.DownloadAssessment"
+    "com.apple.HIToolbox"
+    "com.apple.LaunchServices"
+    "com.apple.MultitouchSupport" ;; FIXME: Remove when <rdar://problem/13011633> is fixed.
+    "com.apple.ServicesMenu.Services" ;; Needed for NSAttributedString <rdar://problem/10844321>
+    "com.apple.ViewBridge" ;; Needed for Input elements.
+    "com.apple.WebFoundation"
+    "com.apple.avfoundation"
+    "com.apple.avfoundation.frecents" ;; <rdar://problem/33137029>
+    "com.apple.avfoundation.videoperformancehud" ;; <rdar://problem/31594568>
+    "com.apple.coremedia"
+    "com.apple.crypto"
+    "com.apple.driver.AppleBluetoothMultitouch.mouse"
+    "com.apple.driver.AppleBluetoothMultitouch.trackpad"
+    "com.apple.driver.AppleHIDMouse"
+    "com.apple.lookup.shared"
+    "com.apple.mediaaccessibility" ;; Needed for custom caption styles
+    "com.apple.networkConnect"
+    "com.apple.speech.voice.prefs"
+    "com.apple.systemsound"
+    "com.apple.universalaccess"
+    "edu.mit.Kerberos"
+    "pbs") ;; Needed for NSAttributedString <rdar://problem/10844321>
 
+(allow-reading-global-preferences)
+
 ; (Temporary) backward compatibility with non-CFPreferences readers.
 (allow file-read*
     (literal "/Library/Preferences/com.apple.ViewBridge.plist"))

Modified: trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj (283057 => 283058)


--- trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj	2021-09-24 21:25:45 UTC (rev 283057)
+++ trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj	2021-09-24 21:43:26 UTC (rev 283058)
@@ -6013,6 +6013,7 @@
 		E30CFB9D2660663C0094D9C0 /* com.apple.WebKit.WebContent.sb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = com.apple.WebKit.WebContent.sb; path = DerivedSources/WebKit2/com.apple.WebKit.WebContent.sb; sourceTree = BUILT_PRODUCTS_DIR; };
 		E313664D265EE5AF0051084F /* com.apple.WebKit.WebContent.sb.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = com.apple.WebKit.WebContent.sb.in; sourceTree = "<group>"; };
 		E3439B632345463A0011DE0B /* NetworkProcessConnectionInfo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = NetworkProcessConnectionInfo.h; path = Network/NetworkProcessConnectionInfo.h; sourceTree = "<group>"; };
+		E3612FF026F90862007B1175 /* Sandbox */ = {isa = PBXFileReference; lastKnownFileType = folder; path = Sandbox; sourceTree = "<group>"; };
 		E3866AE42397400400F88FE9 /* WebDeviceOrientationUpdateProviderProxy.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = WebDeviceOrientationUpdateProviderProxy.mm; path = ios/WebDeviceOrientationUpdateProviderProxy.mm; sourceTree = "<group>"; };
 		E3866AE62397405300F88FE9 /* WebDeviceOrientationUpdateProviderProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebDeviceOrientationUpdateProviderProxy.h; path = ios/WebDeviceOrientationUpdateProviderProxy.h; sourceTree = "<group>"; };
 		E3866AED2398471A00F88FE9 /* WebDeviceOrientationUpdateProviderProxy.messages.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = WebDeviceOrientationUpdateProviderProxy.messages.in; path = ios/WebDeviceOrientationUpdateProviderProxy.messages.in; sourceTree = "<group>"; };
@@ -6856,6 +6857,7 @@
 				BC111B5A112F628200337BAB /* mac */,
 				1AAE058C1279DCD400852418 /* Plugins */,
 				2D2E04761F5BEC4F00BB25ED /* RemoteLayerTree */,
+				E3612FF026F90862007B1175 /* Sandbox */,
 				1ABF43781A368035003FB0E6 /* WebsiteData */,
 				118502602673B0DA00A6425E /* XR */,
 				E3BCE877267252120011D8DB /* AccessibilityPreferences.cpp */,

Modified: trunk/Source/WebKit/WebProcess/com.apple.WebProcess.sb.in (283057 => 283058)


--- trunk/Source/WebKit/WebProcess/com.apple.WebProcess.sb.in	2021-09-24 21:25:45 UTC (rev 283057)
+++ trunk/Source/WebKit/WebProcess/com.apple.WebProcess.sb.in	2021-09-24 21:43:26 UTC (rev 283058)
@@ -26,6 +26,8 @@
 (deny nvram*)
 (allow system-audit file-read-metadata)
 
+#include "Shared/Sandbox/preferences.sb"
+
 ;;;
 ;;; The following rules were originally contained in 'system.sb'. We are duplicating them here so we can
 ;;; remove unneeded sandbox extensions.
@@ -987,84 +989,40 @@
     ;; Needed for AES3 support
     (subpath "/Library/Audio/Plug-Ins/Components"))
 
+
 ;; Preferences support
-(allow user-preference-read
-    (preference-domain
-        "kCFPreferencesAnyApplication"
-        "com.apple.Accessibility"
-        "com.apple.ATS"
-        "com.apple.CoreGraphics"
-        "com.apple.DownloadAssessment"
-        "com.apple.HIToolbox"
-        "com.apple.LaunchServices"
-        "com.apple.MultitouchSupport" ;; FIXME: Remove when <rdar://problem/13011633> is fixed.
-        "com.apple.ServicesMenu.Services" ;; Needed for NSAttributedString <rdar://problem/10844321>
-        "com.apple.ViewBridge" ;; Needed for Input elements.
-        "com.apple.WebFoundation"
-        "com.apple.avfoundation"
-        "com.apple.avfoundation.frecents" ;; <rdar://problem/33137029>
-        "com.apple.avfoundation.videoperformancehud" ;; <rdar://problem/31594568>
-        "com.apple.coremedia"
-        "com.apple.crypto"
-        "com.apple.driver.AppleBluetoothMultitouch.mouse"
-        "com.apple.driver.AppleBluetoothMultitouch.trackpad"
-        "com.apple.driver.AppleHIDMouse"
-        "com.apple.lookup.shared"
-        "com.apple.mediaaccessibility" ;; Needed for custom caption styles
-        "com.apple.networkConnect"
-        "com.apple.speech.voice.prefs"
-        "com.apple.systemsound"
-        "com.apple.universalaccess"
-        "edu.mit.Kerberos"
-        "pbs" ;; Needed for NSAttributedString <rdar://problem/10844321>
-))
+(shared-preferences-read
+    "com.apple.Accessibility"
+    "com.apple.ATS"
+    "com.apple.CoreGraphics"
+    "com.apple.DownloadAssessment"
+    "com.apple.HIToolbox"
+    "com.apple.LaunchServices"
+    "com.apple.MultitouchSupport" ;; FIXME: Remove when <rdar://problem/13011633> is fixed.
+    "com.apple.ServicesMenu.Services" ;; Needed for NSAttributedString <rdar://problem/10844321>
+    "com.apple.ViewBridge" ;; Needed for Input elements.
+    "com.apple.WebFoundation"
+    "com.apple.WebKit"
+    "com.apple.avfoundation"
+    "com.apple.avfoundation.frecents" ;; <rdar://problem/33137029>
+    "com.apple.avfoundation.videoperformancehud" ;; <rdar://problem/31594568>
+    "com.apple.coremedia"
+    "com.apple.crypto"
+    "com.apple.driver.AppleBluetoothMultitouch.mouse"
+    "com.apple.driver.AppleBluetoothMultitouch.trackpad"
+    "com.apple.driver.AppleHIDMouse"
+    "com.apple.lookup.shared"
+    "com.apple.mediaaccessibility" ;; Needed for custom caption styles
+    "com.apple.networkConnect"
+    "com.apple.security"
+    "com.apple.speech.voice.prefs"
+    "com.apple.systemsound"
+    "com.apple.universalaccess"
+    "edu.mit.Kerberos"
+    "pbs") ;; Needed for NSAttributedString <rdar://problem/10844321>
 
-#if ENABLE(CFPREFS_DIRECT_MODE)
-(allow file-read*
-    (literal "/Library/Preferences/.GlobalPreferences.plist")
-    (home-subpath "/Library/Preferences/.GlobalPreferences.plist")
-    (home-subpath "/Library/Preferences/.GlobalPreferences_m.plist")
-    (home-subpath "/Library/Preferences/com.apple.security.plist")
-    (home-subpath "/Library/Preferences/com.apple.Accessibility.plist")
-    (home-subpath "/Library/Preferences/com.apple.ATS.plist")
-    (home-subpath "/Library/Preferences/com.apple.CoreGraphics.plist")
-    (home-subpath "/Library/Preferences/com.apple.DownloadAssessment.plist")
-    (home-subpath "/Library/Preferences/com.apple.HIToolbox.plist")
-    (home-subpath "/Library/Preferences/com.apple.LaunchServices.plist")
-    (home-subpath "/Library/Preferences/com.apple.MultitouchSupport.plist")
-    (home-subpath "/Library/Preferences/com.apple.ServicesMenu.Services.plist")
-    (home-subpath "/Library/Preferences/com.apple.ViewBridge.plist")
-    (home-subpath "/Library/Preferences/com.apple.WebKit.plist")
-    (home-subpath "/Library/Preferences/com.apple.WebFoundation.plist")
-    (home-subpath "/Library/Preferences/com.apple.avfoundation.plist")
-    (home-subpath "/Library/Preferences/com.apple.avfoundation.frecents.plist")
-    (home-subpath "/Library/Preferences/com.apple.avfoundation.videoperformancehud.plist")
-    (home-subpath "/Library/Preferences/com.apple.coremedia.plist")
-    (home-subpath "/Library/Preferences/com.apple.crypto.plist")
-    (home-subpath "/Library/Preferences/com.apple.driver.AppleBluetoothMultitouch.mouse.plist")
-    (home-subpath "/Library/Preferences/com.apple.driver.AppleBluetoothMultitouch.trackpad.plist")
-    (home-subpath "/Library/Preferences/com.apple.driver.AppleHIDMouse.plist")
-    (home-subpath "/Library/Preferences/com.apple.lookup.shared.plist")
-    (home-subpath "/Library/Preferences/com.apple.mediaaccessibility.plist")
-    (home-subpath "/Library/Preferences/com.apple.networkConnect.plist")
-    (home-subpath "/Library/Preferences/com.apple.speech.voice.prefs.plist")
-    (home-subpath "/Library/Preferences/com.apple.systemsound.plist")
-    (home-subpath "/Library/Preferences/com.apple.universalaccess.plist")
-    (home-subpath "/Library/Preferences/edu.mit.Kerberos.plist")
-    (home-subpath "/Library/Preferences/pbs.plist")
-    (home-regex #"/Library/Preferences/ByHost/\.GlobalPreferences\..*\.plist$")
-)
-#endif
+(allow-reading-global-preferences)
 
-; (Temporary) backward compatibility with non-CFPreferences readers.
-(allow file-read*
-    (literal "/Library/Preferences/com.apple.ViewBridge.plist"))
-
-; FIXME: This is needed for some security framework calls (that use non-CFPreferences readers)
-(allow file-read-data
-    (literal "/Library/Preferences/com.apple.security.plist")
-    (home-subpath "/Library/Preferences/com.apple.security.plist"))
-
 ;; On-disk WebKit2 framework location, to account for debug installations outside of /System/Library/Frameworks,
 ;; and to allow issuing extensions.
 (allow-read-directory-and-issue-read-extensions (param "WEBKIT2_FRAMEWORK_DIR"))
@@ -1650,24 +1608,6 @@
         (set! deny orig-deny)
         (set! allow orig-allow))))
 
-(define (home-library-preferences-regex home-library-preferences-relative-regex)
-    (regex (string-append "^" (regex-quote (param "HOME_LIBRARY_PREFERENCES_DIR")) home-library-preferences-relative-regex)))
-
-(define (home-library-preferences-literal home-library-preferences-relative-literal)
-    (literal (string-append (param "HOME_LIBRARY_PREFERENCES_DIR") home-library-preferences-relative-literal)))
-
-(define (shared-preferences-read . domains)
-  (for-each (lambda (domain)
-              (begin
-                (if (defined? `user-preference-read)
-                    (allow user-preference-read (preference-domain domain)))
-                ; (Temporary) backward compatibility with non-CFPreferences readers.
-                (allow file-read*
-                       (literal (string-append "/Library/Preferences/" domain ".plist"))
-                       (home-library-preferences-literal (string-append "/" domain ".plist"))
-                       (home-library-preferences-regex (string-append #"/ByHost/" (regex-quote domain) #"\..*\.plist$")))))
-            domains))
-
 ;; Media capture, camera access
 (with-filter (extension "com.apple.webkit.camera")
     (shared-preferences-read "com.apple.cmio")
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to