2011-01-24 Maciej Stachowiak <mjs@apple.com>
[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") "/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") "/Library/Preferences/.GlobalPreferences.plist"))
24    (regex (string-append "^" (param "_HOME") "/Library/Preferences/ByHost/\.GlobalPreferences\."))
25    (literal (string-append (param "_HOME") "/Library/Preferences/com.apple.ATS.plist"))
26    (literal (string-append (param "_HOME") "/Library/Preferences/com.apple.HIToolbox.plist"))
27    (literal (string-append (param "_HOME") "/Library/Preferences/com.apple.LaunchServices.plist"))
28    (literal (string-append (param "_HOME") "/Library/Preferences/com.apple.WebFoundation.plist"))
29    (literal (string-append (param "_HOME") "/Library/Preferences/com.apple.security.plist"))
30    (literal (string-append (param "_HOME") "/Library/Preferences/com.apple.security.revocation.plist"))
31    (subpath (string-append (param "_HOME") "/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    ;; Extensions from UIProcess
38    (extension)
39 )
40
41 (allow file-write*
42    ;; Extensions from UIProcess
43    (extension)
44 )
45
46 ;; Writable preferences and temporary files
47 (allow file*
48    (subpath (string-append (param "_HOME") "/Library/Caches/com.apple.WebProcess"))
49    (regex (string-append "^" (param "_HOME") "/Library/Preferences/ByHost/com\.apple\.HIToolbox\."))
50    (regex (string-append "^" (param "_HOME") "/Library/Preferences/com\.apple\.WebProcess\."))
51 )
52
53 ;; Darwin temporary files and caches, if present
54 (if (positive? (string-length (param "DARWIN_USER_CACHE_DIR")))
55     (allow file* (subpath (param "DARWIN_USER_CACHE_DIR"))))
56 (if (positive? (string-length (param "DARWIN_USER_TEMP_DIR")))
57     (allow file* (subpath (param "DARWIN_USER_TEMP_DIR"))))
58
59 ;; Database dir
60 (if (positive? (string-length (param "WEBKIT_DATABASE_DIR")))
61     (allow file* (subpath (param "WEBKIT_DATABASE_DIR"))))
62
63 ;; The NSURLCache directory.
64 (if (positive? (string-length (param "NSURL_CACHE_DIR")))
65     (allow file* (subpath (param "NSURL_CACHE_DIR"))))
66
67 ;; The bundle resource path of the UI process.
68 (if (positive? (string-length (param "UI_PROCESS_BUNDLE_RESOURCE_DIR")))
69     (allow file-read* (subpath (param "UI_PROCESS_BUNDLE_RESOURCE_DIR"))))
70
71 ;; FIXME: overly permissive since we can't pre-enumerate the client
72 ;; classes for graphics cards
73 (allow iokit-open
74    ;;(iokit-user-client-class "IOHIDParamUserClient")
75    ;;(iokit-user-client-class "RootDomainUserClient")
76 )
77
78 ;; Various services required by AppKit and other frameworks
79 (allow mach-lookup
80    (global-name "com.apple.CoreServices.coreservicesd")
81    (global-name "com.apple.DiskArbitration.diskarbitrationd")
82    (global-name "com.apple.FileCoordination")
83    (global-name "com.apple.FontObjectsServer")
84    (global-name "com.apple.FontServer")
85    (global-name "com.apple.SecurityServer")
86    (global-name "com.apple.SystemConfiguration.configd")
87    (global-name "com.apple.audio.VDCAssistant")
88    (global-name "com.apple.audio.audiohald")
89    (global-name "com.apple.audio.coreaudiod")
90    (global-name "com.apple.cookied")
91    (global-name "com.apple.cvmsServ")
92    (global-name "com.apple.distributed_notifications.2")
93    (global-name "com.apple.dock.server")
94    (global-name "com.apple.ocspd")
95    (global-name "com.apple.pasteboard.1")
96    (global-name "com.apple.window_proxies")
97    (global-name "com.apple.windowserver.active")
98    (global-name-regex #"^com\.apple\.WebKit\.WebProcess-")
99    (global-name-regex #"^com\.apple\.qtkitserver\.")
100 )
101
102 ;; FIXME: These rules are required until <rdar://problem/8448410> is addressed. See <rdar://problem/8349882> for discussion.
103 (allow network-outbound)
104 (deny network-outbound (regex ""))
105 (deny network-outbound (local ip))
106 (allow network-outbound
107    ;; Local mDNSResponder for DNS, arbitrary outbound TCP
108    (literal "/private/var/run/mDNSResponder")
109    (remote tcp)
110 )
111
112 ;; FIXME: These rules are required until plug-ins are moved out of the web process.
113 (allow file-read*
114    (regex (string-append "^" (param "_HOME") "/Library/Preferences/ByHost/com\.apple\.ist\."))
115    (literal (string-append (param "_HOME") "/Library/Preferences/edu.mit.Kerberos"))
116    (literal "/Library/Preferences/edu.mit.Kerberos")
117 )
118
119 (allow mach-lookup
120    (global-name "org.h5l.kcm")
121    (global-name "com.apple.tsm.uiserver")
122    (global-name-regex #"^com\.apple\.ist")
123 )
124
125 (allow network-outbound (remote ip))
126
127 ;; These rules are required while QTKitServer is being launched directly via posix_spawn (<rdar://problem/6912494>).
128 (allow process-fork)
129 (allow process-exec (literal "/System/Library/Frameworks/QTKit.framework/Versions/A/Resources/QTKitServer") (with no-sandbox))
130
131 ;; FIXME: Once <rdar://problem/8900275> has been fixed, these rules can be removed.
132 (allow mach-lookup (global-name "com.apple.pubsub.ipc"))
133 (allow network-outbound (regex #"^/private/tmp/launch-[^/]+/Render"))
134
135 ;; FIXME: Investigate these.
136 (allow appleevent-send (appleevent-destination "com.apple.WebProcess"))
137 (allow mach-lookup (global-name-regex #"^EPPC-"))