; Copyright (C) 2010-2019 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))
(allow system-audit file-read-metadata)

;;;
;;; 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-prefix ""))

;;; 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")
    (subpath "/private/var/db/dyld")
    (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")
    (literal "/usr/local/lib/sanitizers"))

(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
    (literal "/dev/dtracehelper"))

;;; 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."))

;;; (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
        (global-name "com.apple.cvmsServ"))
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400 || PLATFORM(MACCATALYST)
    (allow file-read*
        (prefix "/private/var/db/CVMS/cvmsCodeSignObj"))
#endif
    ;; OpenCL
    (allow iokit-open
        (iokit-connection "IOAccelerator")
        (iokit-registry-entry-class "IOAccelerationUserClient")
        (iokit-registry-entry-class "IOSurfaceRootUserClient")
        (iokit-registry-entry-class "IOSurfaceSendRight"))
    ;; CoreVideo CVCGDisplayLink
    (allow iokit-open
        (iokit-registry-entry-class "IOFramebufferSharedUserClient"))
    ;; H.264 Acceleration
    (allow iokit-open
        (iokit-registry-entry-class "AppleIntelMEUserClient")
        (iokit-registry-entry-class "AppleSNBFBUserClient"))
    ;; QuartzCore
    (allow iokit-open
        (iokit-registry-entry-class "AGPMClient")
        (iokit-registry-entry-class "AppleGraphicsControlClient")
        (iokit-registry-entry-class "AppleGraphicsPolicyClient"))
    ;; OpenGL
    (allow iokit-open
        (iokit-registry-entry-class "AppleMGPUPowerControlClient"))
    ;; GPU bundles
    (allow file-read*
        (subpath "/Library/GPUBundles"))
    ;; DisplayServices
    (allow iokit-set-properties
        (require-all (iokit-connection "IODisplay")
        (require-any (iokit-property "brightness")
        (iokit-property "linear-brightness")
        (iokit-property "commit")
        (iokit-property "rgcs")
        (iokit-property "ggcs")
        (iokit-property "bgcs")))))

;;;
;;; End rules originally copied from 'system.sb'
;;;

;;; process-info* defaults to allow; deny it and then allow operations we actually need.
(deny process-info*)
(allow process-info-pidinfo)
(allow process-info-setcontrol (target self))
(allow process-codesigning-status*)

(deny sysctl*)
(allow sysctl-read
    (sysctl-name
        "hw.byteorder"
        "hw.busfrequency_max"
        "hw.cputype"
        "hw.machine"
        "hw.memsize"
        "hw.model"
        "hw.ncpu"
        "hw.vectorunit"
        "kern.bootargs" ;; <rdar://problem/47738015>
        "kern.hostname"
        "kern.maxfilesperproc"
        "kern.memorystatus_level"
        "kern.osproductversion" ;; <rdar://problem/51756739>
        "kern.safeboot"
        "kern.version"
        "machdep.cpu.brand_string"
        "security.mac.sandbox.sentinel"
        "kern.tcsm_enable"
        "kern.tcsm_available"
        "vm.footprint_suspend")
    (sysctl-name-regex #"^hw.(active|avail)cpu")
    (sysctl-name-regex #"^hw.(busfrequency|cachelinesize|cpufrequency(|_max)|pagesize|tbfrequency)(|_compat)")
    (sysctl-name-regex #"^hw.l.+cachesize")
    (sysctl-name-regex #"^hw.(logical|physical)cpu_max")
    (sysctl-name-regex #"^hw.optional\.")
    (sysctl-name-regex #"^kern.os(release|type|variant_status|version)")
    (sysctl-name-regex #"^net.routetable")
)

(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-regex #"^Accel(Caps|NativeDMARowByteAlignment)")
    (iokit-property-regex #"^(Accurate|Extended)MaxDigitizerPressureValue")
    (iokit-property-regex #"^(Activation|Animation)Thresholds")
    (iokit-property "ActuationSupported")
    (iokit-property "AllowDisplaySleep")
    (iokit-property "AlwaysNeedsVelocityCalculated")
    (iokit-property-regex #"Apple(GVAKeyDoesNotExist|IntelMEVABundleName)")
    (iokit-property-regex #"^AAPL,(DisplayPipe|OpenCLdisabled|IOGraphics_LER(|_RegTag_1|_RegTag_0|_Busy_2)|alias-policy|boot-display|display-alias|mux-switch-state|ndrv-dev|primary-display|slot-name)")
    (iokit-property-regex #"^ATY,(cbits|fb_(linebytes|offset|size)|intrev)")
    (iokit-property "ATY,DeviceName") ;; Needed by Metal compilers
    (iokit-property "ATY,FamilyName") ;; Ditto
    (iokit-property "AVCSupported")
    (iokit-property "BacklightHandle")
    (iokit-property "BlockSize")
    (iokit-property-regex #"^CEA(ModeID|PixelRepetition)")
    (iokit-property "CFBundleIdentifier")
    (iokit-property "CFBundleIdentifierKernel") ;; <rdar://problem/47738015>
    (iokit-property "CapsLockDelay")
    (iokit-property "CaseSensitive")
    (iokit-property "ConfigState")
    (iokit-property "Description")
    (iokit-property "Development")
    (iokit-property-regex #"^Device( Characteristics|EqID)")
    (iokit-property "DisplayRouting")
    (iokit-property "Driver is Ready")
    (iokit-property "Ejectable")
    (iokit-property "EnableLPVP")
    (iokit-property "Encrypted")
    (iokit-property "Endianness")
    (iokit-property "Family ID")
    (iokit-property "ForceSupported")
    (iokit-property "Formats")
    (iokit-property "GPUConfigurationVariable")
    (iokit-property "GpuDebugPolicy")
    (iokit-property "HEVCSupported")
    (iokit-property "HIDPointerAccelerationType")
    (iokit-property-regex #"^IOAccel(DisplayPipeCapabilities|Index|Types|Revision)")
    (iokit-property-regex #"^IO(Class|MatchCategory|NameMatch)")
    (iokit-property-regex #"^IOAudioControl(ChannelID|ID|SubType|Usage|Value)")
    (iokit-property-regex #"^IOAudioDevice(CanBeDefaults|TransportType)")
    (iokit-property-regex #"^IOAudioEngine(ChannelNames|ClientDescription|CoreAudioPlugIn|(|Device)Description|Flavor|GlobalUniqueID|IsHidden|OutputChannelLayout|SampleOffset|State)")
    (iokit-property-regex #"^IOAudioEngineClock(Domain|IsStable)")
    (iokit-property "IOAudioEngineDisableClockBoundsCheck")
    (iokit-property-regex #"^IOAudioEngine(Input|Output)Sample(Latency|Offset)")
    (iokit-property-regex #"^IOAudioEngineNum(ActiveUserClients|SampleFramesPerBuffer)")
    (iokit-property "IOAudioSampleRate")
    (iokit-property "IOAudioStreamSampleFormatByteOrder")
    (iokit-property-regex #"^IOAV(.*)(De|En)code$")
    (iokit-property "IOBacklightHandlerID")
    (iokit-property "IOBusyInterest")
    (iokit-property "IOCFPlugInTypes")
    (iokit-property "IOChildIndex")
    (iokit-property-regex #"^IOClass(|NameOverride)")
    (iokit-property "IOConsoleUsers")
    (iokit-property "IODVDBundleName")
    (iokit-property "IODeviceMemory")
    (iokit-property "IODisplayParameters")
    (iokit-property-regex #"^IOFB(CLUTDefer|Config|CursorInfo|Dependent(ID|Index))")
    (iokit-property "IOFBCurrentPixelClock")
    (iokit-property-regex #"^IOFBCurrentPixelCount(|Real)")
    (iokit-property-regex #"^IOFB(DetailedTimings|Gamma(Count|HeaderSize|Width))")
    (iokit-property-regex #"^IOFB(Blue|Green|Red)GammaScale")
    (iokit-property-regex #"^IOFBI2CInterface(IDs|Info)")
    (iokit-property-regex #"^IOFB(HDMIDongleROM|Integrated|MemorySize|NeedsRefresh|ProbeOptions|ScalerInfo|TimingRange|Transform|UIScale|WaitCursor(Frames|Period))")
    (iokit-property "IOFramebufferOpenGLIndex")
    (iokit-property "IOGeneralInterest")
    (iokit-property "IOGLBundleName")
    (iokit-property-regex #"^IOGVA(BGRAEnc|Codec|EncoderRestricted|Scaler|VTCapabilities|HEVCDecodeCapabilities|HEVCEncodeCapabilities)")
    (iokit-property-regex #"^IOGVA(.*)(De|En)code$")
    (iokit-property "IOHibernateState")
    (iokit-property "IOI2CTransactionTypes")
    (iokit-property-regex #"^IOInterrupt(Controllers|Specifiers)")
    (iokit-property "IOKitDebug")
    (iokit-property "IOMatchCategory")
    (iokit-property "IOMediaIcon")
    (iokit-property "IONDRVFramebufferGeneration")
    (iokit-property "IONVRAMProperty")
    (iokit-property-regex #"^IOName(|Match(|ed))")
    (iokit-property "IOOCDBundleName")
    (iokit-property "IOPCITunnelled")
    (iokit-property "IOPCITunnelCompatible")
    (iokit-property "IOPMStrictTreeOrder")
    (iokit-property "IOParentMatch")
    (iokit-property-regex #"^IOPCI((Class|Primary|Property|)Match|Express(Capabilities|Link(Status|Capabilities))|MSIMode|Resourced|Tunnelled)")
    (iokit-property "IOPMIsPowerManaged")
    (iokit-property-regex #"^IOPlatform(SerialNumber|UUID)")
    (iokit-property "IOPowerManagement")
    (iokit-property "IOProbeScore")
    (iokit-property "IOPropertyMatch")
    (iokit-property "IOProviderClass")
    (iokit-property-regex #"^IOReport(Lures|Legend(|Public))")
    (iokit-property "IOScreenRestoreState")
    (iokit-property "IOSourceVersion")
    (iokit-property-regex #"^IOVA(BundleName|Renderer(|Sub)ID)")
    (iokit-property-regex #"^InternalStatistics(|Accm)")
    (iokit-property-regex #"^MetalPlugin(Name|ClassName)")
    (iokit-property "MetalStatisticsName")
    (iokit-property "MTHIDDevice")
    (iokit-property "MT Built-In")
    (iokit-property "MaintainPowerInUILock")
    (iokit-property "Max Packet Size")
    (iokit-property "MinDigitizerPressureValue")
    (iokit-property "Multitouch Serial Number")
    (iokit-property-regex #"^Multitouch (Subdevice |)ID")
    (iokit-property "NVArch")
    (iokit-property-regex #"^NVC(AP|LASS)")
    (iokit-property-regex #"^NVDA,(Features|NVPresentment-version|accel-loaded|invalid-config|mm-version)")
    (iokit-property "NVDA,Enable-A2R10G10B10Format")
    (iokit-property-regex #"^NVDA(Type|initgl_created)")
    (iokit-property "NVRAMProperty")
    (iokit-property "NXSystemInfo")
    (iokit-property-regex #"^VRAM,(memvendorID|total(MB|size))")
    (iokit-property "NoAutoRoute")
    (iokit-property-regex #"^Num(Blocks|Streams)")
    (iokit-property-regex #"^PerformanceStatistics(|Accum)")
    (iokit-property "Protocol Characteristics")
    (iokit-property "Removable")
    (iokit-property-regex #"^ResetOn(Lock|Unlock)Ms")
    (iokit-property "SafeEjectRequested")
    (iokit-property "SampleRates")
    (iokit-property "Serial Number")
    (iokit-property "StartupDisplay")
    (iokit-property "SurfaceList")
    (iokit-property-regex #"^Support(AudioAUUC|sSilentClick|TapToWake)")
    (iokit-property-regex #"^Sensor (Columns|Rows)")
    (iokit-property-regex #"^Sensor Region (Descriptor|Param|Rows)")
    (iokit-property-regex #"^Sensor Surface (Descriptor|Height|Width)")
    (iokit-property "SurfaceList")
    (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-regex #"^acpi-(device|path)")
    (iokit-property "assigned-addresses")
    (iokit-property "attached-gpu-control-path")
    (iokit-property-regex #"^audio-(codec-info|device-mvalue|device-nvalue|selector)")
    (iokit-property "av-signal-type")
    (iokit-property "bcdVersion")
    (iokit-property-regex #"^(board|device|revision|subsystem|vendor)-id")
    (iokit-property "boot-gamma-restored")
    (iokit-property "built-in")
    (iokit-property "cail_properties")
    (iokit-property-regex #"^canvas-(height|width)")
    (iokit-property "class-code")
    (iokit-property "color-accuracy-index")
    (iokit-property "compatible")
    (iokit-property "connector-type")
    (iokit-property-regex #"^(device|revision|subsystem-vendor|touch-size)-id")
    (iokit-property "device_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-regex #"^id(Product|Vendor)")
    (iokit-property "iofb_version")
    (iokit-property "image-encrypted")
    (iokit-property "image-path") ;; Needed by LaunchServices
    (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")
    (iokit-property "od-server-name") ;; Needed by LaunchServices
    (iokit-property-regex #"^parser-(options|type)")
    (iokit-property-regex #"^pci(-aspm-default|debug)")
    (iokit-property "port-number")
    (iokit-property "reg")
    (iokit-property "rm_board_number")
    (iokit-property-regex #"^(rom|vbios)-revision")
    (iokit-property "saved-config")
    (iokit-property "startup-timing")
    (iokit-property "touch-size-id")
#if !PLATFORM(MAC) || __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400
    (iokit-property "ATY,cbits")
    (iokit-property "ATY,intrev")
    (iokit-property "AccelNativeDMARowByteAlignment")
    (iokit-property "CompactVRAM")
    (iokit-property "EnableBlitLib")
    (iokit-property "ForceDisableEDRAM")
    (iokit-property "GPUConfigurationVariable")
    (iokit-property "GpuDebugPolicy")
    (iokit-property "IOKitDebug")
    (iokit-property "IOPCIMatch")
    (iokit-property "IOOCDBundleName")
    (iokit-property "MetalStatisticsScriptName")
    (iokit-property "MetalCoalesce")
    (iokit-property "PanicOnGPUHang")
    (iokit-property "TelemetryDisable")
    (iokit-property "cail_properties")
    (iokit-property "dpm")
#endif
    (iokit-property "IOGVAH264EncodeCapabilities") ;; <rdar://problem/49498040>
)

(deny mach-lookup (xpc-service-name-prefix ""))
(allow mach-lookup
    (xpc-service-name "com.apple.PerformanceAnalysis.animationperfd")
    (xpc-service-name "com.apple.accessibility.mediaaccessibilityd")
    (xpc-service-name "com.apple.audio.SandboxHelper")
    (xpc-service-name "com.apple.coremedia.videodecoder")
    (xpc-service-name "com.apple.coremedia.videoencoder")
    (xpc-service-name-regex #"\.apple-extension-service$")
    (xpc-service-name "com.apple.hiservices-xpcservice")
    (xpc-service-name "com.apple.print.normalizerd")
)

;; 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)$")

    (literal "/Library/Application Support/CrashReporter/SubmitDiagInfo.domains")

    ;; 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
(allow user-preference-read
    (preference-domain
        "kCFPreferencesAnyApplication"
        "com.apple.Accessibility"
        "com.apple.ATS"
        "com.apple.CoreGraphics"
        "com.apple.DownloadAssessment"
        "com.apple.HIToolbox"
        "com.apple.LaunchServices"
        "com.apple.MultitouchSupport" ;; FIXME: Remove when <rdar://problem/13011633> is fixed.
        "com.apple.ServicesMenu.Services" ;; Needed for NSAttributedString <rdar://problem/10844321>
        "com.apple.ViewBridge" ;; Needed for Input elements.
        "com.apple.WebFoundation"
        "com.apple.avfoundation"
        "com.apple.avfoundation.frecents" ;; <rdar://problem/33137029>
        "com.apple.avfoundation.videoperformancehud" ;; <rdar://problem/31594568>
        "com.apple.coremedia"
        "com.apple.crypto"
        "com.apple.driver.AppleBluetoothMultitouch.mouse"
        "com.apple.driver.AppleBluetoothMultitouch.trackpad"
        "com.apple.driver.AppleHIDMouse"
        "com.apple.lookup.shared"
        "com.apple.mediaaccessibility" ;; Needed for custom caption styles
        "com.apple.networkConnect"
        "com.apple.speech.voice.prefs"
        "com.apple.systemsound"
        "com.apple.universalaccess"
        "edu.mit.Kerberos"
        "pbs" ;; Needed for NSAttributedString <rdar://problem/10844321>
))

; (Temporary) backward compatibility with non-CFPreferences readers.
(allow file-read*
    (literal "/Library/Preferences/com.apple.ViewBridge.plist"))

; FIXME: This is needed for some security framework calls (that use non-CFPreferences readers)
(allow file-read-data
    (literal "/Library/Preferences/com.apple.security.plist")
    (home-subpath "/Library/Preferences/com.apple.security.plist"))

;; On-disk WebKit2 framework location, to account for debug installations outside of /System/Library/Frameworks,
;; and to allow issuing extensions.
(allow-read-directory-and-issue-read-extensions (param "WEBKIT2_FRAMEWORK_DIR"))

;; 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 mach-lookup (extension "com.apple.app-sandbox.mach")) ;; FIXME: Should be removed when <rdar://problem/13066206> is fixed.

;; Allow the OpenGL Profiler to attach.
(if (defined? 'mach-register)
    (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
(allow iokit-open
    (iokit-user-client-class "AppleMultitouchDeviceUserClient")
    (iokit-user-client-class "AppleUpstreamUserClient")
    (iokit-user-client-class "IOHIDParamUserClient")
    (iokit-user-client-class "RootDomainUserClient")
    (iokit-user-client-class "IOAudioControlUserClient")
    (iokit-user-client-class "IOAudioEngineUserClient")
    ;; Following is needed due to <rdar://problem/10427451> && <rdar://problem/10808817>
    (iokit-user-client-class "AudioAUUC"))

;; 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-regex #"^WebKit Test-"))

;; ColorSync
(allow ipc-posix-shm*
    (ipc-posix-name "com.apple.ColorSync.Gen.lock")
    (ipc-posix-name "com.apple.ColorSync.Disp.lock")
    (ipc-posix-name "com.apple.ColorSync.Gray2.2")
    (ipc-posix-name "com.apple.ColorSync.sRGB")
    (ipc-posix-name "com.apple.ColorSync.GenGray")
    (ipc-posix-name "com.apple.ColorSync.GenRGB"))

;; Audio
(allow ipc-posix-shm-read* ipc-posix-shm-write-data
    (ipc-posix-name-regex #"^AudioIO"))

;; Remote Web Inspector
(allow mach-lookup
       (global-name "com.apple.webinspector"))

(allow mach-lookup
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 101500
    (with report) (with telemetry)
#endif
    (global-name "com.apple.audio.AudioComponentRegistrar")
    (global-name "com.apple.awdd")
    (global-name "com.apple.cfprefsd.agent")
    (global-name "com.apple.cookied")
    (global-name "com.apple.diagnosticd")
    (global-name "com.apple.iconservices")
    (global-name "com.apple.iconservices.store")
    (global-name "com.apple.mobileassetd")
    (global-name "com.apple.powerlog.plxpclogger.xpc")
    (global-name "com.apple.system.logger")
)

;; Various services required by AppKit and other frameworks
(allow mach-lookup
#if __MAC_OS_X_VERSION_MIN_REQUIRED < 101400
       (global-name "com.apple.FontObjectsServer")
#endif
       (global-name "com.apple.PowerManagement.control")
       (global-name "com.apple.SystemConfiguration.configd")
       (global-name "com.apple.analyticsd")
       (global-name "com.apple.assertiond.processassertionconnection")
       (global-name "com.apple.audio.SystemSoundServer-OSX")
       (global-name "com.apple.audio.audiohald")
       (global-name "com.apple.cfprefsd.daemon")
       (global-name "com.apple.cmio.registerassistantservice") ;; Needed by CoreMedia for plugin drivers
       (global-name "com.apple.coreservices.launchservicesd")
       (global-name "com.apple.fonts")
       (global-name "com.apple.mediaremoted.xpc")
       (global-name "com.apple.logd")
       (global-name "com.apple.logd.events")
       (global-name "com.apple.lsd.mapdb")
       (global-name "com.apple.lskdd") ;; <rdar://problem/49123855>
       (global-name "com.apple.tccd")
       (global-name "com.apple.tccd.system")
       (global-name "com.apple.trustd.agent")
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400 || PLATFORM(MACCATALYST)
       (global-name "com.apple.CARenderServer") ; Needed for [CAContext remoteContextWithOptions]
#else
       (global-name "com.apple.windowserver.active")
#endif
)

#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400 || PLATFORM(MACCATALYST)
;; <rdar://problem/47268166>
(allow mach-lookup (xpc-service-name "com.apple.MTLCompilerService"))
#endif

#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400 || PLATFORM(MACCATALYST)
(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"))
#endif

;; Needed to support encrypted media playback <rdar://problem/40038478>
(allow mach-lookup
    (global-name "com.apple.SecurityServer")
    (global-name "com.apple.ocspd"))

(allow file-read* file-write* (subpath "/private/var/db/mds/system")) ;; FIXME: This should be removed when <rdar://problem/9538414> is fixed.

(allow file-read*
       (subpath "/private/var/db/mds")
       (literal "/private/var/db/DetachedSignatures"))

(allow ipc-posix-shm-read* ipc-posix-shm-write-data ipc-posix-shm-write-create
       (ipc-posix-name "com.apple.AppleDatabaseChanged"))

;; CoreFoundation. We don't import com.apple.corefoundation.sb, because it allows unnecessary access to pasteboard.
(allow mach-lookup
    (global-name-regex #"^com.apple.distributed_notifications")
#if !HAVE(CSCHECKFIXDISABLE)
    (global-name "com.apple.CoreServices.coreservicesd")
#endif
)

(allow file-read-data
    (literal "/dev/autofs_nowait")) ; Used by CF to circumvent automount triggers
(allow ipc-posix-shm
    (ipc-posix-name-regex #"^CFPBS:")) ; <rdar://problem/13757475>
(allow system-fsctl (fsctl-command (_IO "h" 47)))

;; Graphics
(system-graphics)

;; Networking
(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")
       ;; ObjC map_images needs to send logging data to syslog. <rdar://problem/39778918>
       (literal "/private/var/run/syslog")
       (remote tcp))

;; CFNetwork
(allow file-read-data (path "/private/var/db/nsurlstoraged/dafsaData.bin"))

;; Network Extensions / VPN helper.
(allow mach-lookup
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 101500 || PLATFORM(MACCATALYST)
    (global-name "com.apple.nesessionmanager.content-filter") ;; <rdar://problem/48442387>
#else
    (global-name "com.apple.nesessionmanager") ;; <rdar://problem/55570995>
#endif
    (global-name "com.apple.nehelper"))

#if PLATFORM(MAC)
;; FIXME should be removed when <rdar://problem/9347205> + related radar in Safari is fixed
(allow mach-lookup
       (global-name "com.apple.system.logger")
       (global-name "com.apple.system.notification_center"))
#endif

(if (defined? 'vnode-type)
        (deny file-write-create (vnode-type SYMLINK)))

;; Reserve a namespace for additional protected extended attributes.
(deny file-read-xattr file-write-xattr (xattr-regex #"^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

;; AirPlay
(allow mach-lookup
    (global-name "com.apple.coremedia.endpoint.xpc")
    (global-name "com.apple.coremedia.endpointstream.xpc")
    (global-name "com.apple.coremedia.endpointplaybacksession.xpc")
    ; <rdar://problem/35509194>
    (global-name "com.apple.coremedia.endpointremotecontrolsession.xpc")
    (global-name "com.apple.coremedia.routediscoverer.xpc")
    (global-name "com.apple.coremedia.routingcontext.xpc")
    (global-name "com.apple.coremedia.volumecontroller.xpc")
)

;; 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))))

(define (home-library-preferences-regex home-library-preferences-relative-regex)
    (regex (string-append "^" (regex-quote (param "HOME_LIBRARY_PREFERENCES_DIR")) home-library-preferences-relative-regex)))

(define (home-library-preferences-literal home-library-preferences-relative-literal)
    (literal (string-append (param "HOME_LIBRARY_PREFERENCES_DIR") home-library-preferences-relative-literal)))

(define (shared-preferences-read . domains)
  (for-each (lambda (domain)
              (begin
                (if (defined? `user-preference-read)
                    (allow user-preference-read (preference-domain domain)))
                ; (Temporary) backward compatibility with non-CFPreferences readers.
                (allow file-read*
                       (literal (string-append "/Library/Preferences/" domain ".plist"))
                       (home-library-preferences-literal (string-append "/" domain ".plist"))
                       (home-library-preferences-regex (string-append #"/ByHost/" (regex-quote domain) #"\..*\.plist$")))))
            domains))

;; Media capture, microphone access
(with-filter (extension "com.apple.webkit.microphone")
    (allow device-microphone))

;; Media capture, camera access
(with-filter (extension "com.apple.webkit.camera")
    (shared-preferences-read "com.apple.coremedia")
    (allow file-read* (subpath "/Library/CoreMediaIO/Plug-Ins/DAL"))
    (allow mach-lookup (extension "com.apple.app-sandbox.mach"))
    (allow mach-lookup
        (global-name "com.apple.cmio.AppleCameraAssistant")
        ;; 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"))
    (allow iokit-open
        ;; QuickTimeUSBVDCDigitizer
        (iokit-user-client-class "IOUSBDeviceUserClientV2")
        (iokit-user-client-class "IOUSBInterfaceUserClientV2"))
    (allow device-camera))
#endif // PLATFORM(MAC)

(when (defined? 'syscall-unix)
    (deny syscall-unix (with send-signal SIGKILL))
    (allow syscall-unix
        (syscall-number SYS_abort_with_payload)
        (syscall-number SYS_exit)
        (syscall-number SYS_read)
        (syscall-number SYS_write)
        (syscall-number SYS_open)
        (syscall-number SYS_close)
        (syscall-number SYS_unlink)
        (syscall-number SYS_chmod)
        (syscall-number SYS_chmod_extended)
        (syscall-number SYS_getuid)
        (syscall-number SYS_geteuid)
        (syscall-number SYS_recvfrom)
        (syscall-number SYS_getpeername)
        (syscall-number SYS_access)
        (syscall-number SYS_dup)
        (syscall-number SYS_pipe)
        (syscall-number SYS_getegid)
        (syscall-number SYS_getgid)
        (syscall-number SYS_sigprocmask)
        (syscall-number SYS_sigaltstack)
        (syscall-number SYS_ioctl)
        (syscall-number SYS_readlink)
        (syscall-number SYS_umask)
        (syscall-number SYS_msync)
        (syscall-number SYS_munmap)
        (syscall-number SYS_mprotect)
        (syscall-number SYS_madvise)
        (syscall-number SYS_fcntl)
        (syscall-number SYS_select)
        (syscall-number SYS_fsync)
        (syscall-number SYS_setpriority)
        (syscall-number SYS_socket)
        (syscall-number SYS_connect)
        (syscall-number SYS_setsockopt)
        (syscall-number SYS_gettimeofday)
        (syscall-number SYS_getrusage)
        (syscall-number SYS_getsockopt)
        (syscall-number SYS_writev)
        (syscall-number SYS_fchmod)
        (syscall-number SYS_rename)
        (syscall-number SYS_flock)
        (syscall-number SYS_sendto)
        (syscall-number SYS_shutdown)
        (syscall-number SYS_socketpair)
        (syscall-number SYS_mkdir)
        (syscall-number SYS_rmdir)
        (syscall-number SYS_pread)
        (syscall-number SYS_pwrite)
        (syscall-number SYS_csops)
        (syscall-number SYS_csops_audittoken)
        (syscall-number SYS_kdebug_trace64)
        (syscall-number SYS_kdebug_trace)
        (syscall-number SYS_sigaction)
        (syscall-number SYS_sigreturn)
        (syscall-number SYS_pathconf)
        (syscall-number SYS_getrlimit)
        (syscall-number SYS_setrlimit)
        (syscall-number SYS_mmap)
        (syscall-number SYS_lseek)
        (syscall-number SYS_ftruncate)
        (syscall-number SYS_sysctl)
        (syscall-number SYS_mlock)
        (syscall-number SYS_munlock)
        (syscall-number SYS_getattrlist)
        (syscall-number SYS_getxattr)
        (syscall-number SYS_fgetxattr)
        (syscall-number SYS_listxattr)
        (syscall-number SYS_shm_open)
        (syscall-number SYS_sem_wait)
        (syscall-number SYS_sem_post)
        (syscall-number SYS_sysctlbyname)
        (syscall-number SYS_psynch_mutexwait)
        (syscall-number SYS_psynch_mutexdrop)
        (syscall-number SYS_psynch_cvbroad)
        (syscall-number SYS_psynch_cvsignal)
        (syscall-number SYS_psynch_cvwait)
        (syscall-number SYS_psynch_rw_wrlock)
        (syscall-number SYS_psynch_rw_unlock)
        (syscall-number SYS_psynch_cvclrprepost)
        (syscall-number SYS_process_policy)
        (syscall-number SYS_issetugid)
        (syscall-number SYS___pthread_kill)
        (syscall-number SYS___pthread_markcancel)
        (syscall-number SYS___pthread_sigmask)
        (syscall-number SYS___disable_threadsignal)
        (syscall-number SYS___semwait_signal)
        (syscall-number SYS___semwait_signal_nocancel)
        (syscall-number SYS_proc_info)
        (syscall-number SYS_stat64)
        (syscall-number SYS_fstat64)
        (syscall-number SYS_lstat64)
        (syscall-number SYS_getdirentries64)
        (syscall-number SYS_statfs64)
        (syscall-number SYS_fstatfs64)
        (syscall-number SYS_getfsstat64)
        (syscall-number SYS_getaudit_addr)
        (syscall-number SYS_bsdthread_create)
        (syscall-number SYS_bsdthread_terminate)
        (syscall-number SYS_workq_kernreturn)
        (syscall-number SYS_thread_selfid)
        (syscall-number SYS_kevent)
        (syscall-number SYS_kevent_qos)
        (syscall-number SYS_kevent_id)
        (syscall-number SYS___mac_syscall)
        (syscall-number SYS_read_nocancel)
        (syscall-number SYS_write_nocancel)
        (syscall-number SYS_open_nocancel)
        (syscall-number SYS_close_nocancel)
        (syscall-number SYS_sendmsg_nocancel)
        (syscall-number SYS_recvfrom_nocancel)
        (syscall-number SYS_fcntl_nocancel)
        (syscall-number SYS_select_nocancel)
        (syscall-number SYS_connect_nocancel)
        (syscall-number SYS_sendto_nocancel)
        (syscall-number SYS_fsgetpath)
        (syscall-number SYS_fileport_makeport)
        (syscall-number SYS_guarded_open_np)
        (syscall-number SYS_guarded_close_np)
        (syscall-number SYS_guarded_write_np)
        (syscall-number SYS_change_fdguard_np)
        (syscall-number SYS_proc_rlimit_control)
        (syscall-number SYS_connectx)
        (syscall-number SYS_getattrlistbulk)
        (syscall-number SYS_openat)
        (syscall-number SYS_openat_nocancel)
        (syscall-number SYS_fstatat64)
        (syscall-number SYS_mkdirat)
        (syscall-number SYS_bsdthread_ctl)
        (syscall-number SYS_csrctl)
        (syscall-number SYS_guarded_pwrite_np)
        (syscall-number SYS_getentropy)
        (syscall-number SYS_necp_open)
        (syscall-number SYS_necp_client_action)
        (syscall-number SYS_ulock_wait)
        (syscall-number SYS_ulock_wake)
        (syscall-number SYS_work_interval_ctl)
        (syscall-number SYS_kdebug_typefilter)
        (syscall-number SYS_gettid) ;; Needed for base system, see <rdar://problem/48651255>
        (syscall-number SYS_memorystatus_control) ;; Needed for memory measurement infrastructure, see <rdar://problem/48647263>
        (syscall-number SYS_kdebug_trace_string) ;; Needed for performance sampling, see <rdar://problem/48829655>.
        (syscall-number SYS_psynch_rw_rdlock) ;; <rdar://problem/49060359>
        (syscall-number SYS_terminate_with_payload) ;; <rdar://problem/50026580>
        (syscall-number SYS_quotactl) ;; <rdar://problem/49945031>
        (syscall-number SYS_stat64_extended) ;; <rdar://problem/50473330>
        (syscall-number SYS_lstat_extended)
        (syscall-number SYS_lstat64_extended)
        (syscall-number SYS_fgetattrlist) ;; <rdar://problem/50931110>
        (syscall-number SYS_kqueue) ;; <rdar://problem/49609201>
        (syscall-number SYS_kqueue_workloop_ctl) ;; <rdar://problem/50999499>
        (syscall-number SYS_faccessat) ;; <rdar://problem/56690456>
        (syscall-number SYS_fsetxattr) ;; <rdar://problem/56332491>
    )
)

