Changeset 251511 in webkit


Ignore:
Timestamp:
Oct 23, 2019, 5:02:25 PM (6 years ago)
Author:
Brent Fulgham
Message:

[iOS] Stop including 'common.sb'
https://bugs.webkit.org/show_bug.cgi?id=203318

Reviewed by Per Arne Vollan.

Replace the 'import' of common.sb with the equivalent statements. This is the
first step in a task to remove uneeded sandbox rules.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
Location:
trunk/Source/WebKit
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r251501 r251511  
     12019-10-23  Brent Fulgham  <bfulgham@apple.com>
     2
     3        [iOS] Stop including 'common.sb'
     4        https://bugs.webkit.org/show_bug.cgi?id=203318
     5
     6        Reviewed by Per Arne Vollan.
     7
     8        Replace the 'import' of common.sb with the equivalent statements. This is the
     9        first step in a task to remove uneeded sandbox rules.
     10
     11        * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
     12
    1132019-10-23  Kate Cheney  <katherine_cheney@apple.com>
    214
  • trunk/Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb

    r251219 r251511  
    2626(allow system-audit file-read-metadata)
    2727
    28 (import "common.sb")
     28;;;
     29;;; The following rules were originally contained in 'common.sb'. We are duplicating them here so we can
     30;;; remove unneeded sandbox extensions.
     31;;;
     32
     33(import "util.sb")
     34(import "carrier-bundle-allowed.sb")
     35
     36(define-once (allow-read-and-issue-generic-extensions . filters)
     37    (allow file-read*
     38           (apply require-any filters))
     39    (allow file-issue-extension
     40        (require-all
     41            (extension-class "com.apple.app-sandbox.read")
     42            (apply require-any filters))))
     43
     44(define-once (allow-read-write-and-issue-generic-extensions . filters)
     45    (allow file-read* file-write*
     46           (apply require-any filters))
     47    (allow file-read-metadata
     48           (apply require-any filters))
     49    (allow file-issue-extension
     50        (require-all
     51            (extension-class "com.apple.app-sandbox.read-write" "com.apple.app-sandbox.read")
     52            (apply require-any filters))))
     53
     54(define-once (managed-configuration-read-public)
     55    (allow file-read*
     56           (well-known-system-group-container-subpath "/systemgroup.com.apple.configurationprofiles/Library/ConfigurationProfiles/PublicInfo")
     57           (front-user-home-subpath "/Library/ConfigurationProfiles/PublicInfo")
     58           (front-user-home-subpath "/Library/UserConfigurationProfiles/PublicInfo")))
     59
     60(define-once (managed-configuration-read . files)
     61    (if (null? files)
     62        (allow file-read*
     63               (well-known-system-group-container-subpath "/systemgroup.com.apple.configurationprofiles/Library/ConfigurationProfiles")
     64               (front-user-home-subpath "/Library/ConfigurationProfiles")
     65               (front-user-home-subpath "/Library/UserConfigurationProfiles"))
     66        (for-each
     67            (lambda (file)
     68                (allow file-read*
     69                    (well-known-system-group-container-literal
     70                        (string-append "/systemgroup.com.apple.configurationprofiles/Library/ConfigurationProfiles/" file))
     71                    (front-user-home-literal
     72                        (string-append "/Library/ConfigurationProfiles/" file)
     73                        (string-append "/Library/UserConfigurationProfiles/" file))))
     74            files)))
     75
     76(define-once (allow-preferences-common)
     77    (allow file-read-metadata
     78           (home-literal "")
     79           (home-literal "/Library/Preferences")))
     80
     81(define-once (mobile-preferences-read . domains)
     82    (allow-preferences-common)
     83    (allow user-preference-read (apply preference-domain domains)))
     84
     85(define-once (mobile-preferences-read-write . domains)
     86    (allow-preferences-common)
     87    (allow user-preference-read user-preference-write (apply preference-domain domains)))
     88
     89(define-once (framebuffer-access)
     90    (allow iokit-open
     91           (iokit-user-client-class "IOMobileFramebufferUserClient"))
     92    (mobile-preferences-read "com.apple.iokit.IOMobileGraphicsFamily"))
     93
     94(define-once (asset-access . options)
     95    (let ((asset-access-filter
     96            (require-all
     97              (require-any
     98                (home-subpath "/Library/Assets")
     99                (subpath "/private/var/MobileAsset"))
     100              (extension "com.apple.assets.read"))))
     101        ;; <rdar://problem/10710883>
     102        ;; <rdar://problem/11569106>
     103        (allow file-read* asset-access-filter)
     104        (if (memq 'with-media-playback options)
     105            (play-media asset-access-filter))
     106        (allow mach-lookup
     107               (global-name "com.apple.mobileassetd" "com.apple.mobileassetd.v2"))
     108        (mobile-preferences-read "com.apple.MobileAsset")))
     109
     110(define-once (mobile-keybag-access)
     111     (allow iokit-open
     112            (iokit-user-client-class "AppleKeyStoreUserClient")))
     113
     114(define-once (location-services)
     115    (allow mach-lookup
     116           (global-name "com.apple.locationd.registration"))
     117    (allow-carrier-bundle) ;; <rdar://problem/21192365>
     118    (mobile-preferences-read
     119        "com.apple.AppSupport"
     120        "com.apple.GEO"
     121        "com.apple.locationd"))
     122
     123(define-once (play-audio)
     124    (allow mach-lookup
     125           (global-name "com.apple.audio.AURemoteIOServer")
     126           (xpc-service-name "com.apple.audio.toolbox.reporting.service")))
     127
     128(define-once (play-media . filters)
     129    (if (not (null? filters))
     130        ;; <rdar://problem/9875794>
     131        (allow file-issue-extension
     132            (require-all
     133                (apply require-any filters)
     134                (extension-class "com.apple.mediaserverd.read"))))
     135    (allow file-issue-extension
     136        (require-all
     137            (extension-class "com.apple.mediaserverd.read")
     138            (extension "com.apple.security.exception.files.absolute-path.read-only"
     139                       "com.apple.security.exception.files.absolute-path.read-write"
     140                       "com.apple.security.exception.files.home-relative-path.read-only"
     141                       "com.apple.security.exception.files.home-relative-path.read-write")))
     142    (allow file-issue-extension
     143        (require-all
     144            (extension-class "com.apple.mediaserverd.read-write")
     145            (extension "com.apple.security.exception.files.absolute-path.read-write"
     146                       "com.apple.security.exception.files.home-relative-path.read-write")))
     147    ;; CoreMedia framework.
     148    (allow mach-lookup
     149           (global-name "com.apple.mediaserverd")
     150           (global-name "com.apple.coremedia.admin")
     151           (global-name "com.apple.coremedia.asset.xpc")
     152           (global-name "com.apple.coremedia.assetcacheinspector")
     153           (global-name "com.apple.coremedia.assetimagegenerator.xpc")
     154           (global-name "com.apple.coremedia.audiodeviceclock.xpc")
     155           (global-name "com.apple.coremedia.audioprocessingtap.xpc")
     156           (global-name "com.apple.coremedia.capturesession")      ; Actually for video capture
     157           (global-name "com.apple.coremedia.capturesource")       ; Also for video capture (<rdar://problem/15794291>).
     158           (global-name "com.apple.coremedia.cpeprotector.xpc")
     159           (global-name "com.apple.coremedia.customurlloader.xpc")
     160           (global-name "com.apple.coremedia.endpoint.xpc")
     161           (global-name "com.apple.coremedia.endpointremotecontrolsession.xpc")
     162           (global-name "com.apple.coremedia.figcpecryptor")
     163           (global-name "com.apple.coremedia.figcontentkeysession.xpc")
     164           (global-name "com.apple.coremedia.formatreader.xpc")
     165           (global-name "com.apple.coremedia.player.xpc")
     166           (global-name "com.apple.coremedia.remaker")
     167           (global-name "com.apple.coremedia.remotequeue")
     168           (global-name "com.apple.coremedia.routediscoverer.xpc")
     169           (global-name "com.apple.coremedia.routingcontext.xpc")
     170           (global-name "com.apple.coremedia.routingsessionmanager.xpc")
     171           (global-name "com.apple.coremedia.samplebufferaudiorenderer.xpc")
     172           (global-name "com.apple.coremedia.samplebufferrendersynchronizer.xpc")
     173           (global-name "com.apple.coremedia.sandboxserver")
     174           (global-name "com.apple.coremedia.sandboxserver.xpc")
     175           (global-name "com.apple.coremedia.systemcontroller.xpc")
     176           (global-name "com.apple.coremedia.sts")
     177           ;; <rdar://problem/13239958>
     178           (global-name "com.apple.coremedia.videocompositor")
     179           (global-name "com.apple.coremedia.visualcontext.xpc")
     180           (global-name "com.apple.coremedia.volumecontroller.xpc")
     181           (global-name "com.apple.pegasus"))
     182    (mobile-preferences-read
     183        "com.apple.avfoundation"
     184        "com.apple.coreaudio"
     185        "com.apple.coremedia"
     186        "com.apple.corevideo")
     187    ;; Required by the MediaPlayer framework.
     188    (allow mach-lookup
     189           (global-name "com.apple.airplay.apsynccontroller.xpc")
     190           (global-name "com.apple.audio.AudioSession")
     191           (global-name "com.apple.springboard.backgroundappservices"))
     192    (mobile-preferences-read "com.apple.mobileipod")
     193    ;; Needed by the MediaPlayer framework:
     194    (allow mach-lookup
     195           (global-name "com.apple.itunescloudd.xpc")
     196           (global-name "com.apple.itunesstored.xpc"))
     197    (mobile-preferences-read "com.apple.itunesstored"))
     198
     199(define-once (media-remote)
     200    (mobile-preferences-read
     201        "com.apple.mediaremote"
     202        "com.apple.mobileipod")
     203    (allow mach-lookup
     204           (global-name "com.apple.mediaremoted.xpc")
     205           (xpc-service-name "com.apple.MediaPlayer.RemotePlayerService")))
     206
     207(define-once (url-translation)
     208    ;; For translating http:// & https:// URLs referencing itms:// URLs.
     209    ;; <rdar://problem/11587338>
     210    (allow file-read*
     211           (home-literal "/Library/Caches/com.apple.itunesstored/url-resolution.plist")))
     212
     213;;;
     214;;; Declare that the application uses the OpenGL, Metal, and CoreML hardware & frameworks.
     215;;;
     216(define-once (opengl)
     217    (allow iokit-open
     218           (iokit-connection "IOGPU")
     219           (iokit-user-client-class
     220                "AGXCommandQueue"
     221                "AGXDevice"
     222                "AGXDeviceUserClient"
     223                "AGXSharedUserClient"
     224                "IOAccelContext"
     225                "IOAccelDevice"
     226                "IOAccelSharedUserClient"
     227                "IOAccelSubmitter2"
     228                "IOAccelContext2"
     229                "IOAccelDevice2"
     230                "IOAccelSharedUserClient2"))
     231    (allow sysctl-read
     232           (sysctl-name #"kern.bootsessionuuid"))
     233    (allow mach-lookup
     234           (global-name "com.apple.cvmsServ")
     235           (global-name "com.apple.gpumemd.source"))
     236    (allow mach-lookup
     237           (xpc-service-name-prefix "com.apple.AGXCompilerService"))
     238
     239    ;; <rdar://problem/25535471>
     240    (mobile-preferences-read "com.apple.Metal")
     241
     242    ;; <rdar://problem/23321675>
     243    (mobile-preferences-read "com.apple.opengl"))
     244
     245(define-once (debugging-support)
     246        (allow file-read* file-map-executable
     247               (subpath "/Developer"))
     248
     249        (allow ipc-posix-shm
     250               (ipc-posix-name-regex #"^stack-logs")
     251               (ipc-posix-name-regex #"^OA-")
     252               (ipc-posix-name-regex #"^/FSM-"))
     253
     254        (allow ipc-posix-shm-read* ipc-posix-shm-write-data ipc-posix-shm-write-unlink
     255               (ipc-posix-name-regex #"^gdt-[A-Za-z0-9]+-(c|s)$"))
     256
     257        (with-filter (system-attribute apple-internal)
     258            ;; <rdar://problem/8565035>
     259            ;; <rdar://problem/23857452>
     260            (allow file-read* file-map-executable
     261                   (subpath "/AppleInternal")
     262                   (subpath "/usr/local/lib")))
     263            (with-elevated-precedence
     264                (allow file-read* file-map-executable file-issue-extension
     265                   (front-user-home-subpath "/XcodeBuiltProducts")))
     266
     267        ;; <rdar://problem/8107758>
     268        (allow file-read* file-map-executable
     269               (subpath "/System/Library/Frameworks")
     270               (subpath "/System/Library/PrivateFrameworks"))
     271
     272        ;; <rdar://problem/32544921>
     273        (mobile-preferences-read "com.apple.hangtracer"))
     274
     275(define-once (device-access)
     276    (deny file-read* file-write*
     277          (vnode-type BLOCK-DEVICE CHARACTER-DEVICE))
     278
     279    (allow file-read* file-write-data
     280           (literal "/dev/null")
     281           (literal "/dev/zero"))
     282
     283    (allow file-read* file-write-data file-ioctl
     284           (literal "/dev/dtracehelper"))
     285
     286    (allow file-read*
     287           (literal "/dev/random")
     288           (literal "/dev/urandom"))
     289    ;; <rdar://problem/14215718>
     290    (deny file-write-data (with no-report)
     291          (literal "/dev/random")
     292          (literal "/dev/urandom"))
     293
     294    (allow file-read* file-write-data file-ioctl
     295           (literal "/dev/aes_0")))
     296
     297(define-once (awd-log-directory daemon-name)
     298    (let*
     299        ((base-directory (home-relative-path "/Library/Logs/awd")))
     300        (allow-create-directory (literal base-directory))
     301        (allow file-read* file-write*
     302            (prefix (string-append base-directory "/awd-" daemon-name ".log")))
     303        (allow mach-lookup
     304               (global-name "com.apple.awdd"))))
     305
     306(define-once (logd-diagnostic-paths)
     307    (require-any
     308        (subpath "/private/var/db/diagnostics")
     309        (subpath "/private/var/db/timesync")
     310        (subpath "/private/var/db/uuidtext")
     311        (subpath "/private/var/userdata/diagnostics")))
     312(define-once (logd-diagnostic-client)
     313    (with-filter
     314        (require-all
     315            (require-any
     316                (require-entitlement "com.apple.private.logging.diagnostic")
     317                (require-entitlement "com.apple.diagnosticd.diagnostic"))
     318            (extension "com.apple.logd.read-only"))
     319        (allow file-read*
     320               (logd-diagnostic-paths))))
     321
     322(define required-etc-files
     323  (literal "/private/etc/fstab"
     324           "/private/etc/hosts"
     325           "/private/etc/group"
     326           "/private/etc/passwd"
     327           "/private/etc/protocols"
     328           "/private/etc/services"))
     329
     330(deny file-map-executable)
     331
     332(deny file-write-mount file-write-unmount)
     333
     334(allow file-read-metadata (with no-times)
     335       (vnode-type DIRECTORY))
     336(with-filter (apple-signed-executable?)
     337  (allow file-read-metadata
     338         (vnode-type DIRECTORY)))
     339
     340(with-filter (apple-signed-executable?)
     341  (managed-configuration-read "CloudConfigurationDetails.plist")
     342  (managed-configuration-read "CloudConfigurationSetAsideDetails.plist")
     343  (mobile-preferences-read "com.apple.security"))
     344
     345(with-filter (system-attribute apple-internal)
     346  (mobile-preferences-read "com.apple.PrototypeTools"))
     347
     348(with-elevated-precedence
     349    (allow file-read*
     350           (subpath "/usr/lib"
     351                    "/usr/share"
     352                    "/private/var/db/timezone"))
     353    (allow-read-and-issue-generic-extensions
     354        (subpath "/Library/RegionFeatures"
     355                 "/System/Library"))
     356    (allow file-issue-extension
     357        (require-all
     358            (extension-class "com.apple.mediaserverd.read")
     359            (subpath "/System/Library")))
     360    (let ((hw-identifying-paths
     361            (require-any
     362                (literal "/System/Library/Caches/apticket.der")
     363                (subpath "/System/Library/Caches/com.apple.kernelcaches")
     364                (subpath "/System/Library/Caches/com.apple.factorydata"))))
     365        (deny file-issue-extension file-read* hw-identifying-paths))
     366   
     367    (allow file-map-executable
     368           (subpath "/System/Library")
     369           (subpath "/usr/lib"))
     370    (allow file-read-metadata
     371           (vnode-type SYMLINK))
     372
     373    ;;; <rdar://problem/24144418>
     374    (allow file-read*
     375           (subpath "/private/var/preferences/Logging"))
     376
     377    (mobile-preferences-read "kCFPreferencesAnyApplication")
     378    (allow file-read*
     379           (front-user-home-literal "/Library/Preferences/.GlobalPreferences.plist"))
     380
     381    (allow file-read*
     382           (literal "/private/var/Managed Preferences/mobile/.GlobalPreferences.plist"))
     383    (allow managed-preference-read (preference-domain "kCFPreferencesAnyApplication"))
     384
     385    (allow file-read-metadata
     386           (home-literal "/Library/Caches/powerlog.launchd"))
     387
     388    (allow-read-and-issue-generic-extensions (executable-bundle))
     389    (allow file-map-executable (executable-bundle))
     390
     391    ;; <rdar://problem/13963294>
     392    (deny file-read-data file-issue-extension file-map-executable
     393        (require-all
     394            (executable-bundle)
     395            (regex #"/[^/]+/SC_Info/")))
     396
     397    (unless (defined? 'restrictive-extension)
     398        (with-filter
     399            (extension
     400                "com.apple.app-sandbox.read"
     401                "com.apple.app-sandbox.read-write"
     402                "com.apple.quicklook.readonly"
     403                "com.apple.security.exception.files.absolute-path.read-only"
     404                "com.apple.security.exception.files.absolute-path.read-write"
     405                "com.apple.security.exception.files.home-relative-path.read-only"
     406                "com.apple.security.exception.files.home-relative-path.read-write"
     407                "com.apple.sharing.airdrop.readonly")
     408            (allow file-read* file-read-metadata)
     409            (allow file-issue-extension
     410                   (extension-class "com.apple.app-sandbox.read"
     411                                    "com.apple.mediaserverd.read"
     412                                    "com.apple.quicklook.readonly"
     413                                    "com.apple.sharing.airdrop.readonly")))
     414        (with-filter
     415            (extension
     416                "com.apple.app-sandbox.read-write"
     417                "com.apple.security.exception.files.absolute-path.read-write"
     418                "com.apple.security.exception.files.home-relative-path.read-write")
     419            (allow file-write*)
     420            (allow file-issue-extension
     421                   (extension-class "com.apple.app-sandbox.read-write"
     422                                    "com.apple.mediaserverd.read-write"))))
     423
     424    ;; <rdar://problem/16079361>
     425    (with-filter (global-name-prefix "")
     426        (allow mach-register
     427               (extension "com.apple.security.exception.mach-register.global-name")))
     428    (with-filter (local-name-prefix "")
     429        (allow mach-register
     430               (extension "com.apple.security.exception.mach-register.local-name")))
     431    (allow-read-and-issue-generic-extensions
     432           (extension "com.apple.security.exception.files.absolute-path.read-only")
     433           (extension "com.apple.security.exception.files.home-relative-path.read-only"))
     434    (allow-read-write-and-issue-generic-extensions
     435           (extension "com.apple.security.exception.files.absolute-path.read-write")
     436           (extension "com.apple.security.exception.files.home-relative-path.read-write"))
     437    (allow iokit-open
     438           (extension "com.apple.security.exception.iokit-user-client-class"))
     439    (allow managed-preference-read
     440           (extension "com.apple.security.exception.managed-preference.read-only"))
     441    (allow user-preference-read
     442           (extension "com.apple.security.exception.shared-preference.read-only"))
     443    (allow user-preference-read user-preference-write
     444           (extension "com.apple.security.exception.shared-preference.read-write"))
     445
     446    (allow file-issue-extension
     447          (require-all
     448              (extension-class "com.apple.nsurlstorage.extension-cache")
     449              (extension "com.apple.security.exception.files.home-relative-path.read-write")
     450              (require-any
     451                  (prefix "/private/var/root/Library/Caches/")
     452                  (front-user-home-prefix "/Library/Caches/"))))
     453)
     454
     455(debugging-support)
     456
     457(allow file-read*
     458    required-etc-files
     459    (literal "/"))
     460
     461(allow file-read*
     462       (subpath "/private/var/MobileAsset/PreinstalledAssetsV2/InstallWithOs"))
     463
     464(device-access)
     465
     466(allow file-issue-extension
     467    (require-all
     468        (extension-class "com.apple.app-sandbox.read-write" "com.apple.app-sandbox.read")
     469        (extension "com.apple.fileprovider.read-write")))
     470
     471(when (defined? 'restrictive-extension)
     472      (with-filter (require-not (require-entitlement "get-task-allow"))
     473          (deny mach-lookup (with no-report)
     474                (global-name "com.apple.logd")
     475                (global-name "com.apple.logd.events"))))
     476
     477(allow ipc-posix-shm-read*
     478       (ipc-posix-name-prefix "apple.cfprefs."))
     479
     480;; <rdar://problem/12413942>
     481(allow file-read*
     482       (well-known-system-group-container-literal "/systemgroup.com.apple.mobilegestaltcache/Library/Caches/com.apple.MobileGestalt.plist"))
     483(allow iokit-get-properties
     484       (iokit-property "IORegistryEntryPropertyKeys"))
     485
     486(allow ipc-posix-sem-open
     487       (ipc-posix-name "containermanagerd.fb_check"))
     488
     489(with-filter (ipc-posix-name "purplebuddy.sentinel")
     490    (deny ipc-posix-sem-create ipc-posix-sem-post ipc-posix-sem-unlink ipc-posix-sem-wait)
     491    (allow ipc-posix-sem-open))
     492
     493(allow system-sched
     494       (require-entitlement "com.apple.private.kernel.override-cpumon"))
     495
     496(deny sysctl-read (with no-report)
     497      (sysctl-name "sysctl.proc_native"))
     498
     499(allow file-read-metadata network-outbound
     500       (literal "/private/var/run/syslog"))
     501
     502(if (defined? 'restrictive-extension)
     503    (begin
     504        (deny mach-lookup (with no-report)
     505               (global-name "com.apple.system.notification_center"))
     506        (deny ipc-posix-shm-read* (with no-report)
     507               (ipc-posix-name "apple.shm.notification_center")))
     508; else
     509    (begin
     510        (allow ipc-posix-shm-read*
     511               (ipc-posix-name "apple.shm.notification_center"))))
     512
     513(logd-diagnostic-client)
     514
     515(managed-configuration-read-public)
     516
     517(deny system-info (with no-report)
     518      (info-type "net.link.addr"))
     519
     520(allow file-read*
     521       (subpath "/private/var/db/datadetectors/sys"))
     522
     523(allow-well-known-system-group-container-subpath-read
     524       "/systemgroup.com.apple.icloud.findmydevice.managed/Library")
     525
     526(allow mach-task-name (target self))
     527
     528(allow process-info-pidinfo (target self))
     529(allow process-info-pidfdinfo (target self))
     530(allow process-info-pidfileportinfo (target self))
     531(allow process-info-setcontrol (target self))
     532(allow process-info-dirtycontrol (target self))
     533(allow process-info-rusage (target self))
     534(allow process-info-codesignature (target self))
     535
     536(with-filter (apple-signed-executable?)
     537    (mobile-preferences-read "com.apple.demo-settings"))
     538
     539(with-filter (uid 0)
     540    (allow file-read*
     541           (literal "/private/etc/master.passwd")))
     542
     543(mobile-preferences-read "com.apple.Accessibility")
     544
     545;;;
     546;;; End common.sb content
     547;;;
    29548
    30549(deny mach-lookup (xpc-service-name-prefix ""))
Note: See TracChangeset for help on using the changeset viewer.