Fix for <rdar://problem/8961580>.
[WebKit.git] / Source / WebKit2 / WebProcess / com.apple.WebProcess.sb
1 (version 1)
2 (deny default (with partial-symbolication))
3 (allow ipc-posix-shm system-audit system-socket file-read-metadata)
4
5 (import "system.sb")
6
7 ;; Read-only preferences and data
8 (allow file-read*
9    ;; Basic system paths
10    (subpath "/Library/Fonts")
11    (subpath "/Library/Frameworks")
12    (subpath "/Library/Keychains")
13    (subpath "/private/var/db/mds")
14    (regex #"^/private/etc/(hosts|group|passwd)$")
15
16    ;; Plugins
17    (subpath "/Library/Internet Plug-Ins")
18    (subpath (string-append (param "HOME_DIR") "/Library/Internet Plug-Ins"))
19
20    ;; System and user preferences
21    (literal "/Library/Preferences/.GlobalPreferences.plist")
22    (literal "/Library/Preferences/com.apple.security.plist")
23    (literal (string-append (param "HOME_DIR") "/Library/Preferences/.GlobalPreferences.plist"))
24    (regex (string-append "^" (param "HOME_DIR") "/Library/Preferences/ByHost/\.GlobalPreferences\."))
25    (literal (string-append (param "HOME_DIR") "/Library/Preferences/com.apple.ATS.plist"))
26    (literal (string-append (param "HOME_DIR") "/Library/Preferences/com.apple.HIToolbox.plist"))
27    (literal (string-append (param "HOME_DIR") "/Library/Preferences/com.apple.LaunchServices.plist"))
28    (literal (string-append (param "HOME_DIR") "/Library/Preferences/com.apple.WebFoundation.plist"))
29    (literal (string-append (param "HOME_DIR") "/Library/Preferences/com.apple.security.plist"))
30    (literal (string-append (param "HOME_DIR") "/Library/Preferences/com.apple.security.revocation.plist"))
31    (subpath (string-append (param "HOME_DIR") "/Library/Keychains"))
32
33    ;; On-disk WebKit2 framework location, to account for debug installations
34    ;; outside of /System/Library/Frameworks
35    (subpath (param "WEBKIT2_FRAMEWORK_DIR"))
36
37    ;; FIXME: This should be removed when <rdar://problem/8957845> is fixed.
38    (subpath (string-append (param "HOME_DIR") "/Library/Fonts"))
39
40    ;; Extensions from UIProcess
41    (extension)
42 )
43
44 (allow file-write*
45    ;; Extensions from UIProcess
46    (extension)
47 )
48
49 ;; Writable preferences and temporary files
50 (allow file*
51    (subpath (string-append (param "HOME_DIR") "/Library/Caches/com.apple.WebProcess"))
52    (regex (string-append "^" (param "HOME_DIR") "/Library/Preferences/ByHost/com\.apple\.HIToolbox\."))
53    (regex (string-append "^" (param "HOME_DIR") "/Library/Preferences/com\.apple\.WebProcess\."))
54 )
55
56 ;; Darwin temporary files and caches, if present
57 (if (positive? (string-length (param "DARWIN_USER_CACHE_DIR")))
58     (allow file* (subpath (param "DARWIN_USER_CACHE_DIR"))))
59 (if (positive? (string-length (param "DARWIN_USER_TEMP_DIR")))
60     (allow file* (subpath (param "DARWIN_USER_TEMP_DIR"))))
61
62 ;; Database dir
63 (if (positive? (string-length (param "WEBKIT_DATABASE_DIR")))
64     (allow file* (subpath (param "WEBKIT_DATABASE_DIR"))))
65
66 ;; The NSURLCache directory.
67 (if (positive? (string-length (param "NSURL_CACHE_DIR")))
68     (allow file* (subpath (param "NSURL_CACHE_DIR"))))
69
70 ;; The bundle resource path of the UI process.
71 (if (positive? (string-length (param "UI_PROCESS_BUNDLE_RESOURCE_DIR")))
72     (allow file-read* (subpath (param "UI_PROCESS_BUNDLE_RESOURCE_DIR"))))
73
74 ;; FIXME: overly permissive since we can't pre-enumerate the client
75 ;; classes for graphics cards
76 (allow iokit-open
77    ;;(iokit-user-client-class "IOHIDParamUserClient")
78    ;;(iokit-user-client-class "RootDomainUserClient")
79 )
80
81 ;; Various services required by AppKit and other frameworks
82 (allow mach-lookup
83    (global-name "com.apple.CoreServices.coreservicesd")
84    (global-name "com.apple.DiskArbitration.diskarbitrationd")
85    (global-name "com.apple.FileCoordination")
86    (global-name "com.apple.FontObjectsServer")
87    (global-name "com.apple.FontServer")
88    (global-name "com.apple.SecurityServer")
89    (global-name "com.apple.SystemConfiguration.configd")
90    (global-name "com.apple.audio.VDCAssistant")
91    (global-name "com.apple.audio.audiohald")
92    (global-name "com.apple.audio.coreaudiod")
93    (global-name "com.apple.cookied")
94    (global-name "com.apple.cvmsServ")
95    (global-name "com.apple.distributed_notifications.2")
96    (global-name "com.apple.dock.server")
97    (global-name "com.apple.ocspd")
98    (global-name "com.apple.pasteboard.1")
99    (global-name "com.apple.window_proxies")
100    (global-name "com.apple.windowserver.active")
101    (global-name-regex #"^com\.apple\.WebKit\.WebProcess-")
102    (global-name-regex #"^com\.apple\.qtkitserver\.")
103 )
104
105 ;; FIXME: These rules are required until <rdar://problem/8448410> is addressed. See <rdar://problem/8349882> for discussion.
106 (allow network-outbound)
107 (deny network-outbound (regex ""))
108 (deny network-outbound (local ip))
109 (allow network-outbound
110    ;; Local mDNSResponder for DNS, arbitrary outbound TCP
111    (literal "/private/var/run/mDNSResponder")
112    (remote tcp)
113 )
114
115 ;; FIXME: These rules are required until plug-ins are moved out of the web process.
116 (allow file-read*
117    (regex (string-append "^" (param "HOME_DIR") "/Library/Preferences/ByHost/com\.apple\.ist\."))
118    (literal (string-append (param "HOME_DIR") "/Library/Preferences/edu.mit.Kerberos"))
119    (literal "/Library/Preferences/edu.mit.Kerberos")
120 )
121
122 (allow mach-lookup
123    (global-name "org.h5l.kcm")
124    (global-name "com.apple.tsm.uiserver")
125    (global-name-regex #"^com\.apple\.ist")
126 )
127
128 (allow network-outbound (remote ip))
129
130 ;; These rules are required while QTKitServer is being launched directly via posix_spawn (<rdar://problem/6912494>).
131 (allow process-fork)
132 (allow process-exec (literal "/System/Library/Frameworks/QTKit.framework/Versions/A/Resources/QTKitServer") (with no-sandbox))
133
134 ;; FIXME: Once <rdar://problem/8900275> has been fixed, these rules can be removed.
135 (allow mach-lookup (global-name "com.apple.pubsub.ipc"))
136 (allow network-outbound (regex #"^/private/tmp/launch-[^/]+/Render"))
137 (allow file-read*
138    (literal (string-append (param "_HOME") "/Library/Preferences/com.apple.Safari.RSS.plist"))
139    (literal (string-append (param "_HOME") "/Library/Preferences/com.apple.Syndication.plist"))
140 )
141
142 ;; FIXME: Investigate these.
143 (allow appleevent-send (appleevent-destination "com.apple.WebProcess"))
144 (allow mach-lookup (global-name-regex #"^EPPC-"))