blob: bf5bc8ec98e04fa3b62c5ed20c5e98c98d9fc7ce [file] [log] [blame]
; Copyright (C) 2010-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.
(version 1)
(deny default (with partial-symbolication))
(deny nvram*)
(deny system-privilege)
(allow system-audit file-read-metadata)
;; Silence spurious logging due to rdar://20117923 and rdar://72366475
(deny system-privilege (privilege-id PRIV_GLOBAL_PROC_INFO) (with no-report))
#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.
;;;
;;; Allow registration of per-pid services.
(allow mach-register
(local-name
"com.apple.axserver"
"com.apple.tsm.portname"))
#if __MAC_OS_X_VERSION_MIN_REQUIRED < 110000
(allow mach-register (local-name-prefix ""))
#endif
;;; Allow read access to standard system paths.
(allow file-read*
(require-all (file-mode #o0004)
(require-any (subpath "/Library/Filesystems/NetFSPlugins")
(subpath "/Library/Apple/System")
(subpath "/Library/Preferences/Logging") ; Logging Rethink
(subpath "/System")
#if __MAC_OS_X_VERSION_MIN_REQUIRED < 110000
(subpath "/private/var/db/dyld")
#endif
(subpath "/private/var/db/timezone")
(subpath "/usr/lib")
(subpath "/usr/share"))))
;;; Allow reading internal profiles on development builds
(allow file-read*
(require-all (file-mode #o0004)
(subpath "/AppleInternal/Library/Preferences/Logging")
(system-attribute apple-internal)))
;;; Allow mapping of system frameworks + dylibs
(allow file-map-executable
(subpath "/Library/Apple/System/Library/Frameworks")
(subpath "/Library/Apple/System/Library/PrivateFrameworks")
(subpath "/System/Library/Frameworks")
(subpath "/System/Library/PrivateFrameworks")
(subpath "/usr/lib")
(subpath "/usr/local/lib/sanitizers") ;; FIXME(209820)
(subpath "/usr/appleinternal/lib") ;; <rdar://problem/72317112>
)
(allow file-read-metadata
(literal "/etc")
(literal "/tmp")
(literal "/var")
(literal "/private/etc/localtime"))
;;; Allow access to standard special files.
(allow file-read*
(literal "/dev/autofs_nowait")
(literal "/dev/random")
(literal "/dev/urandom")
(literal "/private/etc/master.passwd")
(literal "/private/etc/passwd")
)
(allow file-read*
file-write-data
(literal "/dev/null")
(literal "/dev/zero"))
(allow file-read*
file-write-data
file-ioctl
(require-all
(literal "/dev/dtracehelper")
(require-any
(csr CSR_ALLOW_APPLE_INTERNAL)
(csr CSR_ALLOW_UNRESTRICTED_DTRACE)))
)
;;; Allow creation of core dumps.
(allow file-write-create
(require-all (prefix "/cores/")
(vnode-type REGULAR-FILE)))
;;; Allow IPC to standard system agents.
(allow ipc-posix-shm-read*
(ipc-posix-name "apple.shm.notification_center")
(ipc-posix-name-prefix "apple.cfprefs."))
(define (IOAcceleratorMessageFilter)
(apply-message-filter
(deny (with telemetry) (with message "IOAccelerator")
iokit-async-external-method
iokit-external-method
)
(allow iokit-async-external-method
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 120000 && __MAC_OS_X_VERSION_MIN_REQUIRED < 130000
(iokit-method-number
0
47
48
)
#endif
)
(allow iokit-external-method
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 120000 && __MAC_OS_X_VERSION_MIN_REQUIRED < 130000
(iokit-method-number
0
1
2
3
4
5
6
7
8
9
10
11
12
13
15
16
17
18
22
23
24
28
29
30
31
40
41
42
43
48
49
256
257
258
259
260
261
262
263
264
265
266
267
268
269
512
513
)
#endif
)
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 120000 && __MAC_OS_X_VERSION_MIN_REQUIRED < 130000
(if (equal? (param "CPU") "arm64")
(allow iokit-external-method
(iokit-method-number
43
44
45
46
47
)
)
)
#endif
(deny (with telemetry)
iokit-external-trap
)
)
)
(define (IOSurfaceRootUserClientMessageFilter)
(apply-message-filter
(deny (with telemetry) (with message "IOSurfaceRootUserClient")
iokit-async-external-method
iokit-external-method
)
(allow iokit-async-external-method
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 120000
(iokit-method-number
17
40
)
#endif
)
(allow iokit-external-method
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 120000
(iokit-method-number
0
1
2
3
9
10
11
12
13
14
15
20
23
27
31
32
34
35
36
38
39
44
)
#endif
)
(deny (with telemetry)
iokit-external-trap
)
)
)
(define (AppleAVDUserClientMessageFilter)
(apply-message-filter
(deny (with telemetry) (with message "AppleAVDUserClient")
iokit-async-external-method
iokit-external-method
iokit-external-trap
)
)
)
(define (IOSurfaceAcceleratorClientMessageFilter)
(apply-message-filter
(deny (with telemetry) (with message "IOSurfaceAcceleratorClient")
iokit-async-external-method
iokit-external-trap
)
(allow iokit-external-method
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 120000
(iokit-method-number
1
)
#endif
)
)
)
(define (IOMobileFramebufferUserClientMessageFilter)
(apply-message-filter
(deny (with telemetry) (with message "IOMobileFramebufferUserClient")
iokit-async-external-method
iokit-external-trap
)
(allow (with telemetry-backtrace) iokit-external-method
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 120000
(iokit-method-number
8
28
)
#endif
)
)
)
;;; (system-graphics) - Allow access to graphics hardware.
(define (system-graphics)
;; Preferences
(allow user-preference-read
(preference-domain "com.apple.opengl")
(preference-domain "com.nvidia.OpenGL"))
;; CVMS
(allow mach-lookup
(require-all
(extension "com.apple.webkit.extension.mach")
(global-name "com.apple.cvmsServ")
)
)
(deny mach-lookup
(require-all
(require-not (extension "com.apple.webkit.extension.mach"))
(global-name "com.apple.cvmsServ")
)
)
(allow file-read*
(prefix "/private/var/db/CVMS/cvmsCodeSignObj"))
;; OpenCL
(if (equal? (param "ENABLE_SANDBOX_MESSAGE_FILTER") "YES")
(allow iokit-open
(require-all
(extension "com.apple.webkit.extension.iokit")
(iokit-connection "IOAccelerator")
)
(IOAcceleratorMessageFilter)
)
; else
(allow iokit-open
(require-all
(extension "com.apple.webkit.extension.iokit")
(iokit-connection "IOAccelerator")
)
)
)
(if (equal? (param "ENABLE_SANDBOX_MESSAGE_FILTER") "YES")
(allow iokit-open
(require-all
(extension "com.apple.webkit.extension.iokit")
(iokit-registry-entry-class "IOAccelerationUserClient")
)
(apply-message-filter
(deny (with telemetry)
iokit-async-external-method
iokit-external-trap
iokit-external-method
)
)
)
; else
(allow iokit-open
(require-all
(extension "com.apple.webkit.extension.iokit")
(iokit-registry-entry-class "IOAccelerationUserClient")
)
)
)
(if (equal? (param "ENABLE_SANDBOX_MESSAGE_FILTER") "YES")
(allow iokit-open
(require-all
(extension "com.apple.webkit.extension.iokit")
(iokit-registry-entry-class "IOSurfaceRootUserClient")
)
(IOSurfaceRootUserClientMessageFilter)
)
; else
(allow iokit-open
(require-all
(extension "com.apple.webkit.extension.iokit")
(iokit-registry-entry-class "IOSurfaceRootUserClient")
)
)
)
#if __MAC_OS_X_VERSION_MIN_REQUIRED < 110000
;; CoreVideo CVCGDisplayLink
(allow iokit-open
(iokit-registry-entry-class "IOFramebufferSharedUserClient"))
#endif
;; This is needed for Encrypted Media on some hardware (MacMini8,1 for example)
(if (equal? (param "ENABLE_SANDBOX_MESSAGE_FILTER") "YES")
(allow iokit-open
(require-all
(extension "com.apple.webkit.extension.iokit")
(iokit-registry-entry-class "AppleIntelMEUserClient")
)
(apply-message-filter
(deny (with telemetry) (with message "AppleIntelMEUserClient")
iokit-external-method
)
(allow iokit-external-method
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 120000
(iokit-method-number
120
)
#endif
)
(deny (with telemetry)
iokit-async-external-method
iokit-external-trap
)
)
)
; else
(allow iokit-open
(require-all
(extension "com.apple.webkit.extension.iokit")
(iokit-registry-entry-class "AppleIntelMEUserClient")
)
)
)
;; This is needed for Encrypted Media on some hardware (MacMini8,1 for example)
(if (equal? (param "ENABLE_SANDBOX_MESSAGE_FILTER") "YES")
(allow iokit-open
(require-all
(extension "com.apple.webkit.extension.iokit")
(iokit-registry-entry-class "AppleSNBFBUserClient")
)
(apply-message-filter
(deny (with telemetry) (with message "AppleSNBFBUserClient")
iokit-external-method
)
(allow iokit-external-method
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 120000
(iokit-method-number
120
)
#endif
)
(deny (with telemetry)
iokit-async-external-method
iokit-external-trap
)
)
)
; else
(allow iokit-open
(require-all
(extension "com.apple.webkit.extension.iokit")
(iokit-registry-entry-class "AppleSNBFBUserClient")
)
)
)
;; QuartzCore
(if (equal? (param "ENABLE_SANDBOX_MESSAGE_FILTER") "YES")
(allow iokit-open
(require-all
(extension "com.apple.webkit.extension.iokit")
(iokit-registry-entry-class "AGPMClient")
)
(apply-message-filter
(deny (with telemetry)
iokit-async-external-method
iokit-external-trap
iokit-external-method
)
)
)
; else
(allow iokit-open
(require-all
(extension "com.apple.webkit.extension.iokit")
(iokit-registry-entry-class "AGPMClient")
)
)
)
(if (equal? (param "ENABLE_SANDBOX_MESSAGE_FILTER") "YES")
(allow iokit-open
(require-all
(extension "com.apple.webkit.extension.iokit")
(iokit-registry-entry-class "AppleGraphicsControlClient")
)
(apply-message-filter
(deny (with telemetry) (with message "AppleGraphicsControlClient")
iokit-async-external-method
iokit-external-method
)
(allow iokit-external-method
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 120000
(iokit-method-number
0
1
3
11
)
#endif
)
(deny (with telemetry)
iokit-external-trap
)
)
)
; else
(allow iokit-open
(require-all
(extension "com.apple.webkit.extension.iokit")
(iokit-registry-entry-class "AppleGraphicsControlClient")
)
)
)
(if (equal? (param "ENABLE_SANDBOX_MESSAGE_FILTER") "YES")
(allow iokit-open
(require-all
(extension "com.apple.webkit.extension.iokit")
(iokit-registry-entry-class "AppleGraphicsPolicyClient")
)
(apply-message-filter
(deny (with telemetry)
iokit-async-external-method
iokit-external-trap
iokit-external-method
)
)
)
; else
(allow iokit-open
(require-all
(extension "com.apple.webkit.extension.iokit")
(iokit-registry-entry-class "AppleGraphicsPolicyClient")
)
)
)
;; OpenGL
(if (equal? (param "ENABLE_SANDBOX_MESSAGE_FILTER") "YES")
(allow iokit-open
(require-all
(extension "com.apple.webkit.extension.iokit")
(iokit-registry-entry-class "AppleMGPUPowerControlClient")
)
(apply-message-filter
(deny (with telemetry) (with message "AppleMGPUPowerControlClient")
iokit-external-method
)
(allow iokit-external-method
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 120000
(iokit-method-number
0
1
3
)
#endif
)
(deny (with telemetry)
iokit-async-external-method
iokit-external-trap
)
)
)
; else
(allow iokit-open
(require-all
(extension "com.apple.webkit.extension.iokit")
(iokit-registry-entry-class "AppleMGPUPowerControlClient")
)
)
)
;; GPU bundles
(allow file-read*
(subpath "/Library/GPUBundles"))
)
;;;
;;; End rules originally copied from 'system.sb'
;;;
;;; process-info* defaults to allow; deny it and then allow operations we actually need.
(deny process-info*)
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 110000
(allow process-info-pidinfo (target self))
#else
(allow process-info-pidinfo)
#endif
(allow process-info-setcontrol (target self))
(allow process-info-dirtycontrol (target self))
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 110000
(allow process-codesigning-status* (target self))
#else
(allow process-codesigning-status*)
#endif
(deny sysctl*)
(allow sysctl-read
(sysctl-name
"hw.activecpu" ;; <rdar://problem/56795575>
"hw.availcpu"
"hw.byteorder"
"hw.busfrequency"
"hw.busfrequency_max"
"hw.cacheconfig" ;; <rdar://problem/78213563>
"hw.cachelinesize" ;; <rdar://problem/56795575>
"hw.cachesize" ;; <rdar://problem/78213563>
"hw.cpufamily" ;; <rdar://problem/58416475>
"hw.cpufrequency"
"hw.cpufrequency_max"
"hw.cpusubfamily"
"hw.cputhreadtype"
"hw.cputype"
"hw.l1dcachesize" ;; <rdar://problem/56795575>
"hw.l1icachesize" ;; <rdar://problem/56795575>
"hw.l2cachesize" ;; <rdar://problem/56795575>
"hw.l3cachesize" ;; <rdar://problem/56795575>
"hw.logicalcpu" ;; <rdar://problem/56795575>
"hw.logicalcpu_max" ;; <rdar://problem/56795575>
"hw.machine"
"hw.memsize"
"hw.model"
"hw.ncpu"
"hw.nperflevels" ;; <rdar://problem/76783596>
"hw.pagesize" ;; <rdar://problem/76783596>
"hw.pagesize_compat" ;; <rdar://problem/76783596>
"hw.physicalcpu" ;; <rdar://problem/58416475>
"hw.physicalcpu_max" ;; <rdar://problem/58416475>
"hw.tbfrequency"
"hw.tbfrequency_compat"
"hw.vectorunit"
"kern.bootargs" ;; <rdar://problem/47738015>
"kern.hostname"
"kern.hv_vmm_present"
"kern.maxfilesperproc"
"kern.memorystatus_level"
"kern.osproductversion" ;; <rdar://problem/51756739>
"kern.osrelease"
"kern.ostype"
"kern.osvariant_status"
"kern.osversion"
"kern.safeboot"
"kern.version"
"machdep.cpu.brand_string"
"security.mac.sandbox.sentinel"
"sysctl.name2oid"
"kern.tcsm_enable"
"kern.tcsm_available"
"vm.footprint_suspend")
(sysctl-name-prefix "net.routetable")
(sysctl-name-prefix "hw.optional.") ;; <rdar://problem/71462790>
(sysctl-name-prefix "hw.perflevel") ;; <rdar://problem/76783596>
)
(allow sysctl-write
(sysctl-name
"kern.tcsm_enable"))
(deny iokit-get-properties)
(allow iokit-get-properties
(iokit-property "AAPL,LCD-PowerState-ON") ;; <rdar://problem/47738015>
(iokit-property "AGCInfo")
(iokit-property "AccelCaps")
(iokit-property "AccelNativeDMARowByteAlignment")
(iokit-property "AccurateMaxDigitizerPressureValue")
(iokit-property "ActivationThresholds")
(iokit-property "ActuationSupported")
(iokit-property "AnimationThresholds")
(iokit-property "AllowDisplaySleep")
(iokit-property "AlwaysNeedsVelocityCalculated")
(iokit-property "AppleGVAKeyDoesNotExist")
(iokit-property "AppleIntelMEVABundleName")
(iokit-property "AAPL,DisplayPipe")
(iokit-property "AAPL,OpenCLdisabled")
(iokit-property-prefix "AAPL,IOGraphics_LER")
(iokit-property "AAPL,alias-policy")
(iokit-property "AAPL,boot-display")
(iokit-property "AAPL,display-alias")
(iokit-property "AAPL,mux-switch-state")
(iokit-property "AAPL,ndrv-dev")
(iokit-property "AAPL,primary-display")
(iokit-property "AAPL,slot-name")
(iokit-property "ATY,cbits")
(iokit-property "ATY,fb_linebytes")
(iokit-property "ATY,fb_offset")
(iokit-property "ATY,fb_size")
(iokit-property "ATY,intrev")
(iokit-property "ATY,DeviceName") ;; Needed by Metal compilers
(iokit-property "ATY,EFIDisplay")
(iokit-property "ATY,FamilyName") ;; Ditto
(iokit-property "AVCSupported")
(iokit-property "BacklightHandle")
(iokit-property "BlockSize")
(iokit-property "CEAModeID")
(iokit-property "CEAPixelRepetition")
(iokit-property "CFBundleIdentifier")
(iokit-property "CFBundleIdentifierKernel") ;; <rdar://problem/47738015>
(iokit-property "CapsLockDelay")
(iokit-property "CaseSensitive")
(iokit-property "ConfigState")
(iokit-property "DPLanes")
(iokit-property "DPLinkBit")
(iokit-property "DPLinkRate")
(iokit-property "Description")
(iokit-property "Development")
(iokit-property "Device Characteristics")
(iokit-property "DeviceEqID")
(iokit-property "DiskImageURL")
(iokit-property "DisplayRouting")
(iokit-property "Driver is Ready")
(iokit-property "Ejectable")
(iokit-property "EnableLPVP")
(iokit-property "Encrypted")
(iokit-property "Endianness")
(iokit-property "ExtendedMaxDigitizerPressureValue")
(iokit-property "Family ID")
(iokit-property "ForceSupported")
(iokit-property "Formats")
(iokit-property "FramebufferEnabled")
(iokit-property "FramebufferStarted")
(iokit-property "GPUConfigurationVariable")
(iokit-property "GPUDCCDisplayable")
(iokit-property "GPUDebugNullClientMask")
(iokit-property "GpuDebugPolicy")
(iokit-property "GPURawCounterBundleName")
(iokit-property "GPURawCounterPluginClassName")
(iokit-property "HEVCSupported")
(iokit-property "HIDPointerAccelerationType")
(iokit-property "HwCtxCacheUpdate")
(iokit-property "IOAccelDisplayPipeCapabilities")
(iokit-property "IOAccelIndex")
(iokit-property "IOAccelTypes")
(iokit-property "IOAccelRevision")
(iokit-property-prefix "IOAudioControl")
(iokit-property "IOAudioDeviceCanBeDefaults")
(iokit-property "IOAudioDeviceTransportType")
(iokit-property-prefix "IOAudioEngine")
(iokit-property "IOAudioSampleRate")
(iokit-property "IOAudioStreamSampleFormatByteOrder")
(iokit-property-prefix "IOAV")
(iokit-property "IOBacklightHandlerID")
(iokit-property "IOBusyInterest")
(iokit-property "IOCFPlugInTypes")
(iokit-property "IOChildIndex")
(iokit-property "IOClass")
(iokit-property "IOClassNameOverride")
(iokit-property "IOConsoleUsers")
(iokit-property "IODVDBundleName")
(iokit-property "IODeviceMemory")
(iokit-property "IODisplayParameters")
(iokit-property-prefix "IOFB")
(iokit-property "IOFramebufferOpenGLIndex")
(iokit-property "IOGeneralInterest")
(iokit-property "IOGLBundleName")
(iokit-property-prefix "IOGVA")
(iokit-property "IOHibernateState")
(iokit-property "IOI2CTransactionTypes")
(iokit-property "IOInterruptControllers")
(iokit-property "IOInterruptSpecifiers")
(iokit-property "IOKitDebug")
(iokit-property "IOMatchCategory")
(iokit-property "IOMediaIcon")
(iokit-property "IONDRVFramebufferGeneration")
(iokit-property "IONVRAMProperty")
(iokit-property "IOName")
(iokit-property "IONameMatch")
(iokit-property "IONameMatched")
(iokit-property "IOOCDBundleName")
(iokit-property "IOPCITunnelled")
(iokit-property "IOPCITunnelCompatible")
(iokit-property "IOPMStrictTreeOrder")
(iokit-property "IOParentMatch")
(iokit-property-prefix "IOPCI")
(iokit-property "IOPMIsPowerManaged")
(iokit-property "IOPersonalityPublisher")
(iokit-property "IOPlatformSerialNumber")
(iokit-property "IOPlatformUUID")
(iokit-property "IOPowerManagement")
(iokit-property "IOProbeScore")
(iokit-property "IOPropertyMatch")
(iokit-property "IOProviderClass")
(iokit-property "IOReportLures")
(iokit-property "IOReportLegend")
(iokit-property "IOReportLegendPublic")
(iokit-property "IOScreenRestoreState")
(iokit-property "IOSourceVersion")
(iokit-property "IOVABundleName")
(iokit-property "IOVARendererID")
(iokit-property "IOVARendererSubID")
(iokit-property "InternalStatistics")
(iokit-property "InternalStatisticsAccm")
(iokit-property "MetalPluginClassName")
(iokit-property "MetalPluginName")
(iokit-property "MetalStatisticsName")
(iokit-property "MTHIDDevice")
(iokit-property "MT Built-In")
(iokit-property "MaintainPowerInUILock")
(iokit-property "Max Packet Size")
(iokit-property "MaximumBootBeepVolume")
(iokit-property "MinDigitizerPressureValue")
(iokit-property "Multitouch ID")
(iokit-property "Multitouch Serial Number")
(iokit-property "Multitouch Subdevice ID")
(iokit-property "NVArch")
(iokit-property "NVCAP")
(iokit-property "NVCLASS")
(iokit-property "NVDA,Enable-A2R10G10B10Format")
(iokit-property "NVDA,Features")
(iokit-property "NVDA,NVPresentment-version")
(iokit-property "NVDA,accel-loaded")
(iokit-property "NVDA,invalid-config")
(iokit-property "NVDA,mm-version")
(iokit-property "NVDAType")
(iokit-property "NVDAinitgl_created")
(iokit-property "NVRAMProperty")
(iokit-property "NXSystemInfo")
(iokit-property "VRAM,memvendorID")
(iokit-property "VRAM,totalsize")
(iokit-property "NoAutoRoute")
(iokit-property "NumBlocks")
(iokit-property "NumStreams")
(iokit-property "PerformanceStatistics")
(iokit-property "PerformanceStatisticsAccum")
(iokit-property "PinConfigurations")
(iokit-property "Protocol Characteristics")
(iokit-property "Removable")
(iokit-property "ResetOnLockMs")
(iokit-property "ResetOnUnlockMs")
(iokit-property "SWIP_properties")
(iokit-property "SafeEjectRequested")
(iokit-property "SampleRates")
(iokit-property "Sensor Columns")
(iokit-property "Sensor Rows")
(iokit-property "Sensor Region Descriptor")
(iokit-property "Sensor Region Param")
(iokit-property "Sensor Region Rows")
(iokit-property "Sensor Surface Descriptor")
(iokit-property "Sensor Surface Height")
(iokit-property "Sensor Surface Width")
(iokit-property "Serial Number")
(iokit-property "StartupDisplay")
(iokit-property "SurfaceList")
(iokit-property "SupportAudioAUUC")
(iokit-property "SupportsSilentClick")
(iokit-property "SupportTapToWake")
(iokit-property "TimeStampFiltering")
(iokit-property "Transport")
(iokit-property "USBADC") ;; Needed for Audio support on older hardware
(iokit-property "UserClientEnabled")
(iokit-property "VRAM,totalMB")
(iokit-property "WANTS_FRAMES_IGNORED")
(iokit-property "acpi-device")
(iokit-property "acpi-path")
(iokit-property "assigned-addresses")
(iokit-property "attached-gpu-control-path")
(iokit-property "audio-codec-info")
(iokit-property "audio-device-mvalue")
(iokit-property "audio-device-nvalue")
(iokit-property "audio-selector")
(iokit-property "av-signal-type")
(iokit-property "backlight-PWM-freq")
(iokit-property "bcdVersion")
(iokit-property "board-id")
(iokit-property "boot-gamma-restored")
(iokit-property "built-in")
(iokit-property "cail_properties")
(iokit-property "canvas-height")
(iokit-property "canvas-width")
(iokit-property "class-code")
(iokit-property "color-accuracy-index")
(iokit-property "compatible")
(iokit-property "connector-type")
(iokit-property "device-id")
(iokit-property "device_type")
(iokit-property "display-bpc")
(iokit-property "display-connect-flags")
(iokit-property "display-link-component-bits")
(iokit-property "display-pixel-component-bits")
(iokit-property "display-type")
(iokit-property "dpm")
(iokit-property "errordb") ;; Needed for OpenGL on older hardware
(iokit-property "filevault-image") ;; Needed by LaunchServices
(iokit-property "graphic-options")
(iokit-property "hda-gfx")
(iokit-property "housing-color")
(iokit-property "idProduct")
(iokit-property "idVendor")
(iokit-property "iofb_version")
(iokit-property "image-encrypted")
(iokit-property "image-path") ;; Needed by LaunchServices
(iokit-property "layout-id")
(iokit-property "locationID") ;; Needed for Audio support on older hardware
(iokit-property "model")
(iokit-property "mt-device-id")
(iokit-property "name")
(iokit-property "nv-stats")
#if __MAC_OS_X_VERSION_MIN_REQUIRED < 110000
(iokit-property "od-server-name") ;; Needed by LaunchServices
#endif
(iokit-property "parser-options")
(iokit-property "parser-type")
(iokit-property "pci-aspm-default")
(iokit-property "pcidebug")
(iokit-property "port-number")
(iokit-property "reg")
(iokit-property "revision-id")
(iokit-property "rm_board_number")
(iokit-property "rom-revision")
(iokit-property "saved-config")
(iokit-property "startup-timing")
(iokit-property "subsystem-id")
(iokit-property "subsystem-vendor-id")
(iokit-property "touch-size-id")
(iokit-property "vendor-id")
(iokit-property "vbios-revision")
(iokit-property "CompactVRAM")
(iokit-property "EnableBlitLib")
(iokit-property "ForceDisableEDRAM")
(iokit-property "IOPCIMatch")
(iokit-property "MetalStatisticsScriptName")
(iokit-property "MetalCoalesce")
(iokit-property "PanicOnGPUHang")
(iokit-property "TelemetryDisable")
(iokit-property "IOGVAH264EncodeCapabilities") ;; <rdar://problem/49498040>
#if !PLATFORM(MAC) || __MAC_OS_X_VERSION_MIN_REQUIRED > 101500
(iokit-property "IOAVDHEVCDecodeCapabilities") ;; <rdar://problem/71100188>
#endif
)
;; <rdar://problem/60088861>
(if (equal? (param "CPU") "arm64")
(allow iokit-get-properties
(iokit-property "ADSSupported")
(iokit-property "IOAVDHEVCDecodeCapabilities")
(iokit-property "IOGLESBundleName") ;; <rdar://problem/67473780>
(iokit-property "MetalPluginClassName") ;; <rdar://problem/67473780>
(iokit-property "MetalPluginName") ;; <rdar://problem/67473780>
(iokit-property "IOSurfaceAcceleratorCapabilitiesDict") ;; <rdar://problem/63696732>
(iokit-property "acoustic-id") ;; <rdar://problem/65290967>
))
(if (equal? (param "CPU") "arm64")
(with-filter (iokit-registry-entry-class "IOService")
(allow iokit-get-properties
(iokit-property "IORegistryEntryPropertyKeys"))))
(if (equal? (param "CPU") "arm64")
(with-filter (iokit-registry-entry-class "IOMobileFramebuffer")
(allow iokit-get-properties
(iokit-property "AppleTV"
"DisplayPipePlaneBaseAlignment"
"DisplayPipeStrideRequirements"
"dfr"
"external"
"hdcp-hoover-protocol"))))
(if (equal? (param "CPU") "arm64")
(with-filter (iokit-registry-entry-class "IOPlatformDevice")
(allow iokit-get-properties
(iokit-property "soc-generation"))))
(if (equal? (param "CPU") "arm64")
(with-filter (iokit-registry-entry-class "IOService")
(allow iokit-get-properties
(iokit-property "chip-id"
"display-rotation"
"display-scale"))))
(deny mach-lookup (xpc-service-name-prefix ""))
#if __MAC_OS_X_VERSION_MIN_REQUIRED <= 110000
(allow mach-lookup
(xpc-service-name "com.apple.audio.SandboxHelper")
)
#endif
#if __MAC_OS_X_VERSION_MIN_REQUIRED < 110000
(allow mach-lookup
(xpc-service-name-regex #"\.apple-extension-service$")
)
#endif
#if !ENABLE(CFPREFS_DIRECT_MODE)
(allow mach-lookup
(global-name "com.apple.cfprefsd.agent")
(global-name "com.apple.cfprefsd.daemon")
)
#endif
;; Utility functions for home directory relative path filters
(define (home-regex home-relative-regex)
(regex (string-append "^" (regex-quote (param "HOME_DIR")) home-relative-regex)))
(define (home-subpath home-relative-subpath)
(subpath (string-append (param "HOME_DIR") home-relative-subpath)))
(define (home-literal home-relative-literal)
(literal (string-append (param "HOME_DIR") home-relative-literal)))
(define (allow-read-directory-and-issue-read-extensions path)
(if path
(begin
(allow file-read* (subpath path))
(allow file-issue-extension (require-all (extension-class "com.apple.app-sandbox.read") (subpath path))))))
(define (allow-read-write-directory-and-issue-read-write-extensions path)
(if path
(begin
(allow file-read* file-write* (subpath path))
(allow file-issue-extension (require-all (extension-class "com.apple.app-sandbox.read") (subpath path)))
(allow file-issue-extension (require-all (extension-class "com.apple.app-sandbox.read-write") (subpath path))))))
;; Remove when <rdar://problem/29646094> is fixed.
(define (HEX-pattern-match-generator pattern-descriptor)
(letrec ((pattern-string ""))
(for-each (lambda (repeat-count)
(if (zero? repeat-count)
(set! pattern-string (string-append pattern-string "-"))
(let appender ((count repeat-count))
(if (> count 0)
(begin
(set! pattern-string (string-append pattern-string "[0-9A-F]"))
(appender (- count 1)))))))
pattern-descriptor)
pattern-string))
;; return a regex pattern matching string for 8-4-4-4-12 UUIDs:
(define (uuid-HEX-pattern-match-string)
(HEX-pattern-match-generator '(8 0 4 0 4 0 4 0 12)))
;; global to hold the computed UUID matching pattern.
(define *uuid-pattern* "")
(define (uuid-regex-string)
(if (zero? (string-length *uuid-pattern*))
(set! *uuid-pattern* (uuid-HEX-pattern-match-string)))
*uuid-pattern*)
;; Read-only preferences and data
(allow file-read*
;; Basic system paths
(subpath "/Library/Dictionaries")
(subpath "/Library/Fonts")
(subpath "/Library/Frameworks")
(subpath "/Library/Managed Preferences")
(subpath "/Library/Speech/Synthesizers")
(regex #"^/private/etc/(hosts|group|passwd)$")
;; System and user preferences
(home-literal "/.CFUserTextEncoding")
;; FIXME: This should be removed when <rdar://problem/8957845> is fixed.
(home-subpath "/Library/Fonts")
(subpath "/Library/Audio/Plug-Ins/HAL")
(home-subpath "/Library/Dictionaries"))
(allow file-read-data
(literal "/usr/local/lib/log") ; <rdar://problem/36629495>
;; Needed for AES3 support
(subpath "/Library/Audio/Plug-Ins/Components"))
;; Preferences support
(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>
(allow-reading-global-preferences)
;; 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"))
;; Allow issuing extensions to system libraries that the Network process can already read.
;; This is to avoid warnings attempting to create extensions for these resources.
(allow-read-directory-and-issue-read-extensions "/System/Library/PrivateFrameworks/WebInspectorUI.framework")
;; Sandbox extensions
(define (apply-read-and-issue-extension op path-filter)
(op file-read* path-filter)
(op file-issue-extension (require-all (extension-class "com.apple.app-sandbox.read") path-filter)))
(define (apply-write-and-issue-extension op path-filter)
(op file-write* path-filter)
(op file-issue-extension (require-all (extension-class "com.apple.app-sandbox.read-write") path-filter)))
(define (read-only-and-issue-extensions path-filter)
(apply-read-and-issue-extension allow path-filter))
(define (read-write-and-issue-extensions path-filter)
(apply-read-and-issue-extension allow path-filter)
(apply-write-and-issue-extension allow path-filter))
(read-only-and-issue-extensions (extension "com.apple.app-sandbox.read"))
(read-write-and-issue-extensions (extension "com.apple.app-sandbox.read-write"))
;; Allow certain Mach extensions. See <rdar://87850345>.
(allow mach-lookup
(require-all
(extension "com.apple.app-sandbox.mach")
(global-name "com.apple.commerce")))
;; Allow the OpenGL Profiler to attach.
(with-filter (system-attribute apple-internal)
(allow mach-register
(global-name-regex #"^_oglprof_attach_<[0-9]+>$"))
)
(if (positive? (string-length (param "DARWIN_USER_CACHE_DIR")))
(allow-read-write-directory-and-issue-read-write-extensions (param "DARWIN_USER_CACHE_DIR")))
(if (positive? (string-length (param "DARWIN_USER_TEMP_DIR")))
(allow-read-write-directory-and-issue-read-write-extensions (param "DARWIN_USER_TEMP_DIR")))
;; IOKit user clients
#if __MAC_OS_X_VERSION_MIN_REQUIRED < 110000
(allow iokit-open
(iokit-user-client-class "AppleMultitouchDeviceUserClient")
(iokit-user-client-class "IOHIDParamUserClient")
)
#endif
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 110000
(deny iokit-open
(with send-signal SIGKILL)
(iokit-user-client-class "AppleMultitouchDeviceUserClient")
(iokit-user-client-class "IOHIDParamUserClient")
(iokit-registry-entry-class "IOFramebufferSharedUserClient")
)
#endif
(if (equal? (param "ENABLE_SANDBOX_MESSAGE_FILTER") "YES")
(allow iokit-open
(require-all
(extension "com.apple.webkit.extension.iokit")
(iokit-user-client-class "AppleUpstreamUserClient")
)
(apply-message-filter
(deny (with telemetry) (with message "AppleUpstreamUserClient")
iokit-external-method
)
(allow iokit-external-method
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 120000
(iokit-method-number
0
1
3
4
5
)
#endif
)
(deny (with telemetry)
iokit-async-external-method
iokit-external-trap
)
)
)
; else
(allow iokit-open
(require-all
(extension "com.apple.webkit.extension.iokit")
(iokit-user-client-class "AppleUpstreamUserClient")
)
)
)
(if (equal? (param "ENABLE_SANDBOX_MESSAGE_FILTER") "YES")
(allow iokit-open
(require-all
(extension "com.apple.webkit.extension.iokit")
(iokit-user-client-class "RootDomainUserClient") ;; Needed by Media playback
)
(apply-message-filter
(deny (with telemetry) (with message "RootDomainUserClient")
iokit-external-method
)
(allow iokit-external-method
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 120000
(iokit-method-number
3
)
#endif
)
(deny (with telemetry)
iokit-async-external-method
iokit-external-trap
)
)
)
; else
(allow iokit-open
(require-all
(extension "com.apple.webkit.extension.iokit")
(iokit-user-client-class "RootDomainUserClient") ;; Needed by Media playback
)
)
)
;; <rdar://problem/10427451> && <rdar://problem/10808817>
(if (equal? (param "ENABLE_SANDBOX_MESSAGE_FILTER") "YES")
(allow iokit-open
(require-all
(extension "com.apple.webkit.extension.iokit")
(iokit-user-client-class "AudioAUUC")
)
(apply-message-filter
(deny (with telemetry) (with message "AudioAUUC")
iokit-external-method
)
(allow iokit-external-method
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 120000
(iokit-method-number
0
1
3
4
5
)
#endif
)
(deny (with telemetry)
iokit-async-external-method
iokit-external-trap
)
)
)
; else
(allow iokit-open
(require-all
(extension "com.apple.webkit.extension.iokit")
(iokit-user-client-class "AudioAUUC")
)
)
)
(if (equal? (param "ENABLE_SANDBOX_MESSAGE_FILTER") "YES")
(allow iokit-open
(require-all
(extension "com.apple.webkit.extension.iokit")
(iokit-user-client-class "IOAudioControlUserClient")
)
(apply-message-filter
(deny (with telemetry)
iokit-async-external-method
iokit-external-trap
iokit-external-method
)
)
)
; else
(allow iokit-open
(require-all
(extension "com.apple.webkit.extension.iokit")
(iokit-user-client-class "IOAudioControlUserClient")
)
)
)
(if (equal? (param "ENABLE_SANDBOX_MESSAGE_FILTER") "YES")
(allow iokit-open
(require-all
(extension "com.apple.webkit.extension.iokit")
(iokit-user-client-class "IOAudioEngineUserClient")
)
(apply-message-filter
(deny (with telemetry)
iokit-async-external-method
iokit-external-trap
iokit-external-method
)
)
)
; else
(allow iokit-open
(require-all
(extension "com.apple.webkit.extension.iokit")
(iokit-user-client-class "IOAudioEngineUserClient")
)
)
)
;; <rdar://problem/60088861>
(when (equal? (param "CPU") "arm64")
(if (equal? (param "ENABLE_SANDBOX_MESSAGE_FILTER") "YES")
(allow iokit-open
(require-all
(extension "com.apple.webkit.extension.iokit")
(iokit-user-client-class
"AppleAVDUserClient"
)
)
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 120000
(AppleAVDUserClientMessageFilter)
#endif
)
; else
(allow iokit-open
(require-all
(extension "com.apple.webkit.extension.iokit")
(iokit-user-client-class
"AppleAVDUserClient"
)
)
)
)
(if (equal? (param "ENABLE_SANDBOX_MESSAGE_FILTER") "YES")
(allow iokit-open
(require-all
(extension "com.apple.webkit.extension.iokit")
(iokit-user-client-class
"IOMobileFramebufferUserClient"
)
)
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 120000
(IOMobileFramebufferUserClientMessageFilter)
#endif
)
; else
(allow iokit-open
(require-all
(extension "com.apple.webkit.extension.iokit")
(iokit-user-client-class
"IOMobileFramebufferUserClient"
)
)
)
)
(if (equal? (param "ENABLE_SANDBOX_MESSAGE_FILTER") "YES")
(allow iokit-open
(require-all
(extension "com.apple.webkit.extension.iokit")
(iokit-user-client-class
"IOSurfaceAcceleratorClient" ;; <rdar://problem/63696732>
)
)
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 120000
(IOSurfaceAcceleratorClientMessageFilter)
#endif
)
; else
(allow iokit-open
(require-all
(extension "com.apple.webkit.extension.iokit")
(iokit-user-client-class
"IOSurfaceAcceleratorClient" ;; <rdar://problem/63696732>
)
)
)
)
)
#if __MAC_OS_X_VERSION_MIN_REQUIRED < 110000
;; cookied.
;; FIXME: Update for <rdar://problem/13642852>.
(allow ipc-posix-shm-read-data
(ipc-posix-name "FNetwork.defaultStorageSession")
(ipc-posix-name-regex #"\.PrivateBrowsing-")
(ipc-posix-name-prefix "WebKit Test-"))
#endif
;; Audio
(allow ipc-posix-shm-read* ipc-posix-shm-write-data
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 110000
(with telemetry)
#endif
(ipc-posix-name-prefix "AudioIO"))
#if !ENABLE(SET_WEBCONTENT_PROCESS_INFORMATION_IN_NETWORK_PROCESS)
(allow mach-lookup
(global-name "com.apple.coreservices.launchservicesd")
)
#endif
#if __MAC_OS_X_VERSION_MIN_REQUIRED < 120000
(allow mach-lookup
(global-name "com.apple.tccd.system")
)
#endif
#if __MAC_OS_X_VERSION_MIN_REQUIRED <= 110000
(allow mach-lookup
(require-all
(extension "com.apple.webkit.extension.mach")
(global-name
"com.apple.mobileassetd"
"com.apple.mobileassetd.v2"
)))
#else
(allow mach-lookup
(require-all
(extension "com.apple.webkit.extension.mach")
(global-name "com.apple.mobileassetd.v2")
))
#endif
;; Various services required by AppKit and other frameworks
(allow mach-lookup
(global-name "com.apple.logd")
(global-name "com.apple.logd.events")
(global-name "com.apple.CARenderServer") ; Needed for [CAContext remoteContextWithOptions]
)
#if __MAC_OS_X_VERSION_MIN_REQUIRED <= 110000
(allow mach-lookup
(global-name "com.apple.PowerManagement.control")
(global-name "com.apple.SystemConfiguration.configd")
(global-name "com.apple.assertiond.processassertionconnection")
)
#endif
#if HAVE(STATIC_FONT_REGISTRY)
(allow mach-lookup
(require-all
(extension "com.apple.webkit.extension.mach")
(global-name "com.apple.fonts")
)
)
#else
(allow mach-lookup
(global-name "com.apple.fonts")
)
#endif
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 110000
(deny mach-lookup
#else
(allow mach-lookup
#endif
(global-name "com.apple.lsd.mapdb")
)
;; <rdar://problem/47268166>
(allow mach-lookup
(require-all
(extension "com.apple.webkit.extension.mach")
(xpc-service-name "com.apple.MTLCompilerService")
)
)
;; This is just for logging. Remove when GPU process is enabled by default.
(allow mach-lookup
(require-all
(require-not (extension "com.apple.webkit.extension.mach"))
(xpc-service-name "com.apple.MTLCompilerService")
)
)
(deny mach-lookup (with no-log)
(global-name "com.apple.CoreServices.coreservicesd")
(global-name "com.apple.DiskArbitration.diskarbitrationd")
(global-name "com.apple.ViewBridgeAuxiliary")
(global-name "com.apple.windowserver.active"))
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 110000
(deny mach-lookup (with no-log)
(global-name "com.apple.CoreDisplay.Notification"))
#endif
#if __MAC_OS_X_VERSION_MIN_REQUIRED < 110000
;; Needed to support encrypted media playback <rdar://problem/40038478>
(allow mach-lookup
(global-name "com.apple.SecurityServer")
(global-name "com.apple.ocspd"))
#endif
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 110000
(allow file-read* (subpath "/private/var/db/mds/system")) ;; FIXME: This should be removed when <rdar://problem/9538414> is fixed.
(with-filter (uid 0)
(allow file-write*
(subpath "/private/var/db/mds/system")) ;; FIXME: This should be removed when <rdar://problem/9538414> is fixed.
(allow mach-lookup
(global-name "com.apple.system.opendirectoryd.libinfo")
(global-name "com.apple.system.opendirectoryd.membership"))
)
#else
(allow file-read* file-write* (subpath "/private/var/db/mds/system")) ;; FIXME: This should be removed when <rdar://problem/9538414> is fixed.
#endif
(allow file-read*
(subpath "/private/var/db/mds")
(literal "/private/var/db/DetachedSignatures"))
;; CoreFoundation. We don't import com.apple.corefoundation.sb, because it allows unnecessary access to pasteboard.
#if !HAVE(CSCHECKFIXDISABLE)
(allow mach-lookup
(global-name "com.apple.CoreServices.coreservicesd")
)
#endif
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 120000
(deny mach-lookup
(global-name-prefix "com.apple.distributed_notifications")
)
#else
(allow mach-lookup
(global-name-prefix "com.apple.distributed_notifications")
)
#endif
(allow file-read-data
(literal "/dev/autofs_nowait")) ; Used by CF to circumvent automount triggers
#if __MAC_OS_X_VERSION_MIN_REQUIRED <= 110000
(allow ipc-posix-shm
(ipc-posix-name-prefix "CFPBS:")) ; <rdar://problem/13757475>
#endif
;; Graphics
(system-graphics)
;; Networking
#if __MAC_OS_X_VERSION_MIN_REQUIRED <= 101500
(allow network-outbound
;; Local mDNSResponder for DNS, arbitrary outbound TCP
;; Note: This is needed for some media playback features. <rdar://problem/38191574>
;; Remove this permission when <rdar://problem/38240572> is fixed.
(literal "/private/var/run/mDNSResponder")
(remote tcp)
)
#endif
;; ObjC map_images needs to send logging data to syslog. <rdar://problem/39778918>
(with-filter (system-attribute apple-internal)
(allow network-outbound
(literal "/private/var/run/syslog")
)
)
;; CFNetwork
(allow file-read-data (path "/private/var/db/nsurlstoraged/dafsaData.bin"))
#if PLATFORM(MAC)
;; FIXME should be removed when <rdar://problem/9347205> + related radar in Safari is fixed
(if (equal? (param "ENABLE_SANDBOX_MESSAGE_FILTER") "NO")
(allow mach-lookup
(global-name "com.apple.system.notification_center"))
;; else
(allow mach-lookup
(global-name "com.apple.system.notification_center")
(apply-message-filter
(deny mach-message-send (with telemetry))
(deny mach-message-send (with no-report) (message-number 1023))
(allow mach-message-send (message-number
1002
1010
1011
1012
1016
1017
1018
1021
1022
1025
1026
1028
1029
1030
1031
1032
))
)
)
)
#endif
;; <rdar://problem/63943836>
(deny mach-lookup
(global-name "com.apple.system.logger")
(with no-report))
(with-filter (uid 0)
(allow mach-lookup
(global-name "com.apple.system.logger"))
)
(deny file-write-create (vnode-type SYMLINK))
;; Reserve a namespace for additional protected extended attributes.
(deny file-read-xattr file-write-xattr (xattr-prefix "com.apple.security.private."))
(deny file-read* file-write* (with no-log)
;; FIXME: Should be removed after <rdar://problem/10463881> is fixed.
(home-literal "/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2")
(home-literal "/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2-journal"))
;; Deny access needed for unnecessary NSApplication initialization.
;; FIXME: This can be removed once <rdar://problem/13011633> is fixed.
(deny file-read* (with no-log)
(subpath "/Library/InputManagers")
(home-subpath "/Library/InputManagers"))
(deny user-preference-read (with no-log)
(preference-domain "com.apple.speech.recognition.AppleSpeechRecognition.prefs"))
(deny mach-lookup (with no-log)
(global-name "com.apple.coreservices.appleevents")
(global-name "com.apple.pasteboard.1")
(global-name "com.apple.speech.recognitionserver"))
#if PLATFORM(MAC)
;; Also part of unnecessary NSApplication initialization, but we can't block access to these yet, see <rdar://problem/13869765>.
(allow file-read*
(subpath "/Library/Components")
(subpath "/Library/Keyboard Layouts")
(subpath "/Library/Input Methods")
(home-subpath "/Library/Components")
(home-subpath "/Library/Keyboard Layouts")
(home-subpath "/Library/Input Methods"))
#endif
;; Data Detectors
(allow file-read* (subpath "/private/var/db/datadetectors/sys"))
#if PLATFORM(MAC)
;; Media capture, utilities
(if (not (defined? 'sbpl-filter?))
(define (sbpl-filter? x)
(and (list? x)
(eq? (car x) 'filter))))
(macro (with-filter form)
(let* ((ps (cdr form))
(extra-filter (car ps))
(rules (cdr ps)))
`(letrec
((collect
(lambda (l filters non-filters)
(if (null? l)
(list filters non-filters)
(let*
((x (car l))
(rest (cdr l)))
(if (sbpl-filter? x)
(collect rest (cons x filters) non-filters)
(collect rest filters (cons x non-filters)))))))
(inject-filter
(lambda args
(let* ((collected (collect args '() '()))
(filters (car collected))
(non-filters (cadr collected)))
(if (null? filters)
(cons ,extra-filter non-filters)
(cons (require-all (apply require-any filters) ,extra-filter) non-filters)))))
(orig-allow allow)
(orig-deny deny)
(wrapper
(lambda (action)
(lambda args (apply action (apply inject-filter args))))))
(set! allow (wrapper orig-allow))
(set! deny (wrapper orig-deny))
,@rules
(set! deny orig-deny)
(set! allow orig-allow))))
;; Media capture, camera access
(with-filter (extension "com.apple.webkit.camera")
(shared-preferences-read "com.apple.cmio")
(shared-preferences-read "com.apple.coremedia")
(allow file-read* (subpath "/Library/CoreMediaIO/Plug-Ins/DAL"))
(allow mach-lookup
(global-name "com.apple.cmio.AppleCameraAssistant")
(global-name "com.apple.cmio.registerassistantservice")
(global-name "com.apple.cmio.registerassistantservice.system-extensions")
;; Apple DAL assistants
(global-name "com.apple.cmio.VDCAssistant")
(global-name "com.apple.cmio.AVCAssistant")
(global-name "com.apple.cmio.IIDCVideoAssistant")
;; QuickTimeIIDCDigitizer assistant
(global-name "com.apple.IIDCAssistant")
;; applecamerad
(require-all
(extension "com.apple.webkit.extension.mach")
(global-name "com.apple.applecamerad")
))
;; QuickTimeUSBVDCDigitizer
(if (equal? (param "ENABLE_SANDBOX_MESSAGE_FILTER") "YES")
(allow iokit-open
(require-all
(iokit-usb-interface-class kUSBVideoInterfaceClass)
(iokit-user-client-class "IOUSBDeviceUserClientV2")
)
(apply-message-filter
(allow (with telemetry)
iokit-external-method
)
(deny (with telemetry)
iokit-async-external-method
iokit-external-trap
)
)
)
; else
(allow iokit-open
(require-all
(iokit-usb-interface-class kUSBVideoInterfaceClass)
(iokit-user-client-class "IOUSBDeviceUserClientV2")
)
)
)
(if (equal? (param "ENABLE_SANDBOX_MESSAGE_FILTER") "YES")
(allow iokit-open
(require-all
(iokit-usb-interface-class kUSBVideoInterfaceClass)
(iokit-user-client-class "IOUSBInterfaceUserClientV2")
)
(apply-message-filter
(allow (with telemetry)
iokit-external-method
)
(deny (with telemetry)
iokit-async-external-method
iokit-external-trap
)
)
)
; else
(allow iokit-open
(require-all
(iokit-usb-interface-class kUSBVideoInterfaceClass)
(iokit-user-client-class "IOUSBInterfaceUserClientV2")
)
)
)
(allow device-camera))
#endif // PLATFORM(MAC)
;; <rdar://problem/60983812>
(deny file-write*
(home-subpath "/Library/Preferences/")
(with no-log))
(deny mach-lookup (with no-log)
(xpc-service-name "com.apple.audio.toolbox.reporting.service")
)
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 110000
(deny mach-lookup
(global-name "com.apple.audio.SystemSoundServer-OSX")
(global-name "com.apple.containermanagerd")
(global-name "com.apple.cookied")
(global-name "com.apple.coreservices.launchservicesd")
)
#endif
(with-filter (system-attribute apple-internal)
(allow mach-lookup
(global-name "com.apple.analyticsd")
(global-name "com.apple.diagnosticd")))
(allow mach-lookup
(require-all
(extension "com.apple.webkit.extension.mach")
(global-name
"com.apple.nehelper"
"com.apple.nesessionmanager.content-filter"
"com.apple.webinspector"
"com.apple.cfprefsd.agent"
"com.apple.cfprefsd.daemon"
"com.apple.coreservices.launchservicesd"
"com.apple.iconservices"
"com.apple.iconservices.store"
"com.apple.tccd"
;;; FIXME(207716): The following should be removed when the GPU process is complete
"com.apple.accessibility.mediaaccessibilityd"
"com.apple.audio.AudioComponentRegistrar" "com.apple.audio.audiohald" "com.apple.coremedia.endpoint.xpc" "com.apple.coremedia.endpointstream.xpc"
"com.apple.coremedia.endpointplaybacksession.xpc" "com.apple.coremedia.endpointremotecontrolsession.xpc" "com.apple.coremedia.routediscoverer.xpc"
"com.apple.coremedia.routingcontext.xpc" "com.apple.coremedia.volumecontroller.xpc" "com.apple.lskdd" "com.apple.mediaremoted.xpc" "com.apple.trustd.agent"
#if __MAC_OS_X_VERSION_MIN_REQUIRED > 120000
"com.apple.coremedia.samplebufferconsumer.xpc"
#endif
;;; FIXME(207716): End services to remove.
)
)
)
#if __MAC_OS_X_VERSION_MIN_REQUIRED < 110000
(allow mach-lookup
(require-all
(require-not (extension "com.apple.webkit.extension.mach"))
(global-name "com.apple.audio.AudioComponentRegistrar")))
#endif
(allow mach-lookup
(require-all
(extension "com.apple.webkit.extension.mach")
(xpc-service-name
;;; FIXME(207716): The following should be removed when the GPU process is complete
"com.apple.audio.SandboxHelper"
"com.apple.coremedia.videodecoder"
"com.apple.coremedia.videoencoder"
;;; FIXME(207716): End services to remove.
)
)
)
;; Caches for LaunchServices data needs to be able to mark the directory as 'hot'.
(allow system-fsctl
(fsctl-command (_IO "h" 47))) ;; See <rdar://74387453>
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 110000
(deny file-ioctl (with telemetry))
(allow file-ioctl (literal "/dev/dtracehelper"))
(deny socket-ioctl (with telemetry))
(when (defined? 'system-fcntl)
(deny system-fcntl (with telemetry))
(allow system-fcntl
(fcntl-command
F_GETPATH)) ;; used by dyld4 and CGFontURLCreate, getcwd (at least)
(allow system-fcntl (with report) (with telemetry)
(fcntl-command
F_BARRIERFSYNC
F_GETCONFINED
F_GETFL ;; LibJPEGReadPlugin::copyImageBlockSetStandard
F_GETSIGSINFO
F_NOCACHE
F_RDADVISE
F_SETCONFINED
F_ADDFILESIGS_RETURN ;; ImageLoaderMachO::loadCodeSignature
F_CHECK_LV ;; ImageLoaderMachO::loadCodeSignature
F_SPECULATIVE_READ ;; ImageLoaderMachO::mapSegments
F_SETFD ;; libwebrtc.dylib (no backtrace)
F_GETFD ;; libwebrtc.dylib (no backtrace)
F_RDADVISE ;; CoreNLP::ReadOnlyFile <- +[DDScannerService scanString:range:configuration:] <- WebCore::DictionaryLookup::rangeAtHitTestResult(WebCore::HitTestResult const&)
F_NOCACHE ;; Security::UnixPlusPlus::FileDesc::fcnt <- MTRegisterPluginFormatReaderBundleDirectory <- invocation function for block in WebCore::registerFormatReaderIfNecessary()
F_SETFL ;; CMCapture uses when camera is enabled
F_SETNOSIGPIPE)) ;; CMCapture uses when camera is enabled
(define (appcache-fcntl-commands)
(fcntl-command
F_GETLK
F_OFD_GETLK
F_OFD_SETLK
F_OFD_SETLKWTIMEOUT))
#if HAVE(SANDBOX_STATE_FLAGS)
;; This rule enables the WebContent process to flip the "AppCacheDisabled" sandbox variable
;; by reading a preference from the domain "com.apple.WebKit.WebContent.AppCacheDisabled".
(deny user-preference-read (with enable-state-flag "AppCacheDisabled")
(preference-domain "com.apple.WebKit.WebContent.AppCacheDisabled"))
(with-filter (require-not (state-flag "AppCacheDisabled"))
(allow system-fcntl (appcache-fcntl-commands)))
(with-filter (state-flag "AppCacheDisabled")
(allow system-fcntl (with report) (with telemetry) (appcache-fcntl-commands)))
#else
(allow system-fcntl (with report) (with telemetry) (appcache-fcntl-commands))
#endif
(allow system-fcntl
(fcntl-command F_GETPROTECTIONCLASS)
(fcntl-command F_SETPROTECTIONCLASS))
)
(when (defined? 'process-codesigning*)
;; csops/csops_audittoken
(deny process-codesigning-text-offset-get (with telemetry))
(deny process-codesigning-cdhash-get (with telemetry))
(deny process-codesigning-blob-get (with telemetry))
(deny process-codesigning-teamid-get (with telemetry))
(allow process-codesigning-identity-get (with telemetry)) ;; codeSigningIdentifierForCurrentProcess
(allow process-codesigning-entitlements-blob-get) ;; WK reading entitlments via SecTaskCopyValueForEntitlement and _getSelfParsedEntitlements (accessibility)
(allow process-codesigning-status-get) ;; _xpc_get_entitlements
(allow process-codesigning-status-set (target self))
(deny process-info-codesignature (with no-report)) ;; SecTaskCopyValueForEntitlement - granting this grants all the process-codesign-* checks
)
(when (defined? 'socket-option-get)
;; getsockopt
(deny socket-option-get (with telemetry))
(allow socket-option-get
(require-all
(socket-option-level SOL_SOCKET)
(socket-option-name SO_ERROR))) ;; libwebrtc; physical_socket_server.cc, ProcessEvents. Called with fd=-1, so it fails. Not technically needed, but the code needs changing
)
(when (defined? 'socket-option-set)
;; setsockopt
(deny socket-option-set (with telemetry))
)
#endif
#if __MAC_OS_X_VERSION_MIN_REQUIRED > 120000
(disable-syscall-inference)
#endif
(define (syscall-unix-common)
(syscall-number
SYS___disable_threadsignal
SYS___mac_syscall
SYS___pthread_sigmask
SYS___semwait_signal
SYS_access
SYS_bsdthread_create
SYS_bsdthread_ctl
SYS_bsdthread_terminate
SYS_close
SYS_close_nocancel
SYS_csops
SYS_csops_audittoken
SYS_csrctl
SYS_exit
SYS_faccessat ;; <rdar://problem/56690456>
SYS_fcntl
SYS_fcntl_nocancel
SYS_fgetxattr
SYS_fileport_makefd
SYS_flock
SYS_fsetxattr ;; <rdar://problem/56332491>
SYS_fsgetpath
SYS_fstat64
SYS_fstatat64
SYS_fstatfs64
SYS_ftruncate
SYS_getattrlist
SYS_getattrlistbulk
SYS_getaudit_addr
SYS_getdirentries64
SYS_getentropy
SYS_geteuid
SYS_getfsstat64
SYS_getgid
SYS_gethostuuid
SYS_getrlimit
SYS_getrusage
SYS_gettimeofday
SYS_getuid
SYS_getxattr
SYS_ioctl
SYS_issetugid
SYS_kdebug_trace
SYS_kdebug_trace64
SYS_kdebug_trace_string ;; Needed for performance sampling, see <rdar://problem/48829655>.
SYS_kevent_id
SYS_kevent_qos
SYS_kqueue_workloop_ctl ;; <rdar://problem/50999499>
SYS_listxattr
SYS_lseek
SYS_lstat64
SYS_madvise
#if !PLATFORM(MAC)
SYS_memorystatus_control
#endif
SYS_mincore
SYS_mkdir
SYS_mmap
SYS_mprotect
SYS_msync
SYS_munmap
SYS_open
SYS_open_nocancel
SYS_openat
SYS_pathconf
SYS_pread
SYS_proc_info
SYS_psynch_cvbroad
SYS_psynch_cvclrprepost
SYS_psynch_cvsignal
SYS_psynch_cvwait
SYS_psynch_mutexdrop
SYS_psynch_mutexwait
SYS_psynch_rw_unlock
SYS_psynch_rw_wrlock
SYS_read
SYS_read_nocancel
SYS_readlink
SYS_rename
SYS_sendto
SYS_sigaltstack
SYS_sigprocmask
SYS_stat64
SYS_statfs64
SYS_socket
SYS_sysctlbyname
SYS_thread_selfid
#if !PLATFORM(MAC)
SYS_thread_selfusage
#endif
SYS_ulock_wait
SYS_ulock_wake
SYS_umask
SYS_work_interval_ctl
SYS_workq_kernreturn
SYS_write_nocancel
SYS_writev))
(define (syscall-unix-apple-silicon)
(syscall-number
SYS_guarded_open_dprotected_np ;; <rdar://problem/65897905>
SYS_mremap_encrypted))
(define (syscalls-rarely-used)
(syscall-number
SYS___pthread_kill
SYS___semwait_signal_nocancel
SYS_change_fdguard_np
SYS_chmod
SYS_connect
SYS_fchmod
SYS_fsync
SYS_getegid
SYS_getpriority ;; rdar://81727094. Required for CoreAudio AudioOutputUnitStart call. Remove when GPU process is enabled by default.
SYS_guarded_close_np
SYS_guarded_open_np
SYS_guarded_pwrite_np
SYS_kdebug_typefilter
SYS_mlock
SYS_munlock
SYS_necp_client_action
SYS_necp_open
SYS_openat_nocancel
SYS_proc_rlimit_control
SYS_shm_open
SYS_sigaction
SYS_sysctl
SYS_unlink
SYS_write
#if !PLATFORM(MAC)
SYS_abort_with_payload
SYS_dup
SYS_fgetattrlist
SYS_fstat64_extended
SYS_kqueue
SYS_mkdirat
SYS_open_dprotected_np
SYS_psynch_rw_rdlock
SYS_rmdir
SYS_setrlimit
SYS_ulock_wait2
#endif
))
(when (defined? 'syscall-unix)
(deny syscall-unix (with send-signal SIGKILL))
(allow syscall-unix
(syscall-unix-common))
(if (equal? (param "CPU") "arm64")
(begin
(allow syscall-unix
(syscall-unix-apple-silicon))))
(allow syscall-unix
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 120000
(with telemetry-backtrace)
#endif
(syscalls-rarely-used))
#if __MAC_OS_X_VERSION_MIN_REQUIRED > 101500
(if (defined? 'SYS_objc_bp_assist_cfg_np)
(allow syscall-unix (syscall-number SYS_objc_bp_assist_cfg_np)))
#endif
(when (defined? 'SYS__map_with_linking_np)
(allow syscall-unix (syscall-number SYS__map_with_linking_np)))
)
(with-filter (uid 0)
(allow syscall-unix (syscall-number SYS_gettid))) ;; Needed for base system, see <rdar://problem/48651255>
#if USE(APPLE_INTERNAL_SDK)
#include <WebKitAdditions/WebContentSandboxAdditionsMac.sb>
#endif
#if HAVE(SANDBOX_MESSAGE_FILTERING)
(if (and (equal? (param "ENABLE_SANDBOX_MESSAGE_FILTER") "YES") (defined? 'mach-bootstrap))
(allow mach-bootstrap
(apply-message-filter
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 120000
(deny mach-message-send (with telemetry))
(allow mach-message-send (message-number
#else
(deny xpc-message-send (with telemetry))
(allow xpc-message-send (message-number
#endif
204
207
301
711
800
804
)
)
)
)
)
(if (and (equal? (param "ENABLE_SANDBOX_MESSAGE_FILTER") "YES") (defined? 'mach-kernel-endpoint))
(allow mach-kernel-endpoint
(apply-message-filter
(deny mach-message-send (with telemetry))
(allow mach-message-send
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 120000
(with telemetry-backtrace)
#endif
(kernel-mig-routine
_mach_make_memory_entry
clock_get_time
host_get_io_master
host_info
host_request_notification
io_connect_add_client
io_connect_async_method
io_connect_map_memory_into_task
io_connect_method
io_connect_method_var_output
io_connect_set_notification_port_64
io_iterator_is_valid
io_iterator_next
io_object_conforms_to
io_registry_create_iterator
io_registry_entry_create_iterator
io_registry_entry_from_path
io_registry_entry_get_child_iterator
io_registry_entry_get_name
io_registry_entry_get_name_in_plane
io_registry_entry_get_parent_iterator
io_registry_entry_get_properties_bin_buf
io_registry_entry_get_property_bin_buf
io_registry_entry_get_property_bytes
io_registry_entry_get_registry_entry_id
io_registry_get_root_entry
io_server_version
io_service_add_interest_notification_64
io_service_add_notification_bin_64
io_service_close
io_service_get_matching_service_bin
io_service_get_matching_services_bin
io_service_open_extended
mach_exception_raise
mach_memory_entry_ownership
mach_port_get_context_from_user
mach_port_get_refs
mach_port_request_notification
mach_port_set_attributes
mach_vm_copy
mach_vm_map_external
mach_vm_region
mach_vm_region_recurse
mach_vm_remap_external
semaphore_create
semaphore_destroy
task_create_identity_token
task_get_special_port_from_user
task_info_from_user
task_policy_set
task_restartable_ranges_synchronize
task_threads_from_user
thread_get_state_to_user
thread_info
thread_policy
thread_policy_set
thread_resume
thread_set_exception_ports
thread_suspend
)
)
)
)
)
(when (and (equal? (param "ENABLE_SANDBOX_MESSAGE_FILTER") "YES") (defined? 'syscall-mach))
(deny syscall-mach
(machtrap-number
MSC_mach_wait_until
)
)
(deny syscall-mach (with telemetry))
)
(define (syscall-mach-common)
(machtrap-number
MSC__kernelrpc_mach_port_allocate_trap
MSC__kernelrpc_mach_port_construct_trap
MSC__kernelrpc_mach_port_deallocate_trap
MSC__kernelrpc_mach_port_destruct_trap
MSC__kernelrpc_mach_port_extract_member_trap
MSC__kernelrpc_mach_port_get_attributes_trap
MSC__kernelrpc_mach_port_guard_trap
MSC__kernelrpc_mach_port_insert_member_trap
MSC__kernelrpc_mach_port_insert_right_trap
MSC__kernelrpc_mach_port_mod_refs_trap
MSC__kernelrpc_mach_port_request_notification_trap
MSC__kernelrpc_mach_port_type_trap
MSC__kernelrpc_mach_port_unguard_trap
MSC__kernelrpc_mach_vm_allocate_trap
MSC__kernelrpc_mach_vm_deallocate_trap
MSC__kernelrpc_mach_vm_map_trap
MSC__kernelrpc_mach_vm_protect_trap
MSC__kernelrpc_mach_vm_purgable_control_trap
MSC_host_create_mach_voucher_trap
MSC_host_self_trap
MSC_mach_generate_activity_id
MSC_mach_msg_trap
MSC_mach_reply_port
MSC_mach_voucher_extract_attr_recipe_trap
MSC_mk_timer_arm
MSC_mk_timer_cancel
MSC_mk_timer_create
MSC_mk_timer_destroy
MSC_pid_for_task
MSC_semaphore_signal_trap
MSC_semaphore_timedwait_trap
MSC_semaphore_wait_trap
MSC_swtch_pri
MSC_syscall_thread_switch
MSC_task_name_for_pid
MSC_thread_get_special_reply_port
MSC_thread_self_trap))
(when (and (equal? (param "ENABLE_SANDBOX_MESSAGE_FILTER") "YES") (defined? 'syscall-mach))
(allow syscall-mach
(syscall-mach-common))
(when (defined? 'MSC_mach_msg2_trap)
(allow syscall-mach
(machtrap-number MSC_mach_msg2_trap)
)
)
)
#endif // HAVE(SANDBOX_MESSAGE_FILTERING)
(if (equal? (param "ENABLE_SANDBOX_MESSAGE_FILTER") "YES")
(allow iokit-open
(require-all
(require-not (extension "com.apple.webkit.extension.iokit"))
(iokit-registry-entry-class
"IOSurfaceRootUserClient"
)
)
(IOSurfaceRootUserClientMessageFilter)
)
; else
(allow iokit-open
(require-all
(require-not (extension "com.apple.webkit.extension.iokit"))
(iokit-registry-entry-class
"IOSurfaceRootUserClient"
)
)
)
)
(when (equal? (param "CPU") "arm64")
(if (equal? (param "ENABLE_SANDBOX_MESSAGE_FILTER") "YES")
(allow iokit-open (with report)
(require-all
(require-not (extension "com.apple.webkit.extension.iokit"))
(iokit-user-client-class
"AppleAVDUserClient"
)
)
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 120000
(AppleAVDUserClientMessageFilter)
#endif
)
; else
(allow iokit-open (with report)
(require-all
(require-not (extension "com.apple.webkit.extension.iokit"))
(iokit-user-client-class
"AppleAVDUserClient"
)
)
)
)
(if (equal? (param "ENABLE_SANDBOX_MESSAGE_FILTER") "YES")
(allow iokit-open (with report)
(require-all
(require-not (extension "com.apple.webkit.extension.iokit"))
(iokit-user-client-class
"IOSurfaceAcceleratorClient"
)
)
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 120000
(IOSurfaceAcceleratorClientMessageFilter)
#endif
)
; else
(allow iokit-open (with report)
(require-all
(require-not (extension "com.apple.webkit.extension.iokit"))
(iokit-user-client-class
"IOSurfaceAcceleratorClient"
)
)
)
)
)
(if (equal? (param "ENABLE_SANDBOX_MESSAGE_FILTER") "YES")
(allow iokit-open
(require-all
(require-not (extension "com.apple.webkit.extension.iokit"))
(iokit-connection
"IOAccelerator"
)
)
(IOAcceleratorMessageFilter)
)
; else
(allow iokit-open
(require-all
(require-not (extension "com.apple.webkit.extension.iokit"))
(iokit-connection
"IOAccelerator"
)
)
)
)
(deny iokit-open
(require-all
(require-not (extension "com.apple.webkit.extension.iokit"))
(iokit-user-client-class
"AudioAUUC"
"IOAudioControlUserClient"
"IOAudioEngineUserClient"
)
)
)
(deny iokit-open
(require-all
(require-not (extension "com.apple.webkit.extension.iokit"))
(iokit-registry-entry-class
"AGPMClient"
"AppleGraphicsControlClient"
"AppleGraphicsPolicyClient"
"AppleIntelMEUserClient"
"AppleMGPUPowerControlClient"
"AppleSNBFBUserClient"
"IOAccelerationUserClient"
)
)
)
(deny iokit-open
(require-all
(require-not (extension "com.apple.webkit.extension.iokit"))
(iokit-user-client-class
"RootDomainUserClient"
)
)
)
#if __MAC_OS_X_VERSION_MIN_REQUIRED > 110000
(deny darwin-notification-post (with telemetry))
(allow darwin-notification-post
(notification-name
"com.apple.accessibility.AirPodsSpatialAudioLockToDeviceChanged"
"com.apple.webinspectord.availability_check"))
#endif
#if __MAC_OS_X_VERSION_MIN_REQUIRED > 110000
(deny file-read* (with no-report)
(home-literal
"/Library/Preferences/com.apple.CFNetwork.plist"
)
)
#endif