;;; Copyright (c) 2021-2025 Apple Inc.  All Rights reserved.
;;;
;;; WARNING: The sandbox rules in this file currently constitute
;;; Apple System Private Interface and are subject to change at any time and
;;; without notice.
;;;
(version 1)
(import "system.sb")
(disable-full-symbolication)
(define deny-action (with partial-symbolication))
(deny default deny-action)
(deny file-map-executable process-info* process-info-codesignature nvram* dynamic-code-generation darwin-notification-post iokit-get-properties syscall* fs-snapshot* network* deny-action)
(deny syscall-unix deny-action)
(deny syscall-mach deny-action)
(deny syscall-mig deny-action)
(deny sysctl* deny-action)
(deny mach-lookup deny-action)
(deny mach-lookup (xpc-service-name-prefix "") deny-action)
(deny iokit-get-properties deny-action)
(deny file-map-executable
    (subpath "/")
)
(allow process-info-codesignature)
(allow process-info-pidinfo)
(allow process-info-setcontrol (target self))
(allow file-read-metadata
    (literal "/Library")
    (literal "/Library/DriverExtensions")
    (path-ancestors (param "INSTALL_TMP_DIR"))
)
(allow file-read*
    (literal "/private/var/db/nsurlstoraged/dafsaData.bin")
    (literal "/Library/Preferences/com.apple.networkd.plist")
    (literal "/Library/Preferences/com.apple.security.plist")
    (subpath "/private/var/db/mds")
    (extension "com.apple.app-sandbox.read")
)
(allow file-read* file-write*
    (literal (param "INSTALL_TMP_DIR"))
    (subpath (param "INSTALL_TMP_DIR"))
)
(allow file-map-executable
    (subpath "/Library/Apple/System/Library/PrivateFrameworks")
    (subpath "/System/Library")
)
(allow system-socket
    (require-all
        (socket-domain AF_SYSTEM)
        (socket-type SOCK_DGRAM)
        (socket-protocol 2)
    )
)
(allow network-outbound
    (literal "/private/var/run/usbmuxd")
    (literal "/private/var/run/mDNSResponder")
    (remote tcp "*:80")
    (remote tcp "*:443")
    (remote ip "*:*")
    (control-name "com.apple.netsrc")
)
(allow mach-bootstrap
    (apply-message-filter deny-action
        (deny mach-message-send deny-action)
        (allow mach-message-send
            (message-number
                207
                301
                800
                802
                803
                804
                805
            )
        )
    )
)
(allow user-preference-read
    (preference-domain "kCFPreferencesAnyApplication")
)
(allow iokit-open
    (iokit-user-client-class "AppleUSBHostDeviceUserClient")
    (iokit-user-client-class "AppleUSBHostInterfaceUserClient")
)
(allow iokit-get-properties
    (iokit-property "IOCFPlugInTypes")
    (iokit-property "OSKernelCPUSubtype")
    (iokit-property "OSKernelCPUType")
    (iokit-property "port-status")
    (iokit-property "usb-port-number")
    (iokit-registry-entry-class "IOUSBHostDevice")
    (iokit-property "IOClassNameOverride")
    (iokit-property "locationID")
    (iokit-registry-entry-class "IOUSBHostInterface")
)
(allow ipc-posix-shm-read-data ipc-posix-shm-write-create ipc-posix-shm-write-data
    (ipc-posix-name "com.apple.AppleDatabaseChanged")
)
(allow syscall-unix
    (syscall-group-bsdthread)
    (syscall-group-close)
    (syscall-group-kdebug)
    (syscall-group-kevent)
    (syscall-group-kqueue)
    (syscall-group-mkdir)
    (syscall-group-necp-client)
    (syscall-group-open-dprotected)
    (syscall-group-pthread)
    (syscall-group-pthread-cv)
    (syscall-group-pthread-locks)
    (syscall-group-read)
    (syscall-group-recv)
    (syscall-group-rlimit)
    (syscall-group-select)
    (syscall-group-send)
    (syscall-group-signal)
    (syscall-group-stat)
    (syscall-group-statfs)
    (syscall-group-ulock)
)
(allow syscall-unix
    (syscall-number SYS___disable_threadsignal)
    (syscall-number SYS___semwait_signal)
    (syscall-number SYS___semwait_signal_nocancel)
    (syscall-number SYS_abort_with_payload)
    (syscall-number SYS_access)
    (syscall-number SYS_change_fdguard_np)
    (syscall-number SYS_fcntl)
    (syscall-number SYS_fcntl_nocancel)
    (syscall-number SYS_fgetxattr)
    (syscall-number SYS_flistxattr)
    (syscall-number SYS_fsetattrlist)
    (syscall-number SYS_ftruncate)
    (syscall-number SYS_getattrlist)
    (syscall-number SYS_getattrlistbulk)
    (syscall-number SYS_getdirentries64)
    (syscall-number SYS_getegid)
    (syscall-number SYS_getentropy)
    (syscall-number SYS_geteuid)
    (syscall-number SYS_getgid)
    (syscall-number SYS_getgroups)
    (syscall-number SYS_getpeername)
    (syscall-number SYS_getsockname)
    (syscall-number SYS_getsockopt)
    (syscall-number SYS_gettid)
    (syscall-number SYS_getuid)
    (syscall-number SYS_getxattr)
    (syscall-number SYS_issetugid)
    (syscall-number SYS_lseek)
    (syscall-number SYS_madvise)
    (syscall-number SYS_mmap)
    (syscall-number SYS_mprotect)
    (syscall-number SYS_munmap)
    (syscall-number SYS_readlink)
    (syscall-number SYS_rmdir)
    (syscall-number SYS_setsockopt)
    (syscall-number SYS_shutdown)
    (syscall-number SYS_socketpair)
    (syscall-number SYS_symlink)
    (syscall-number SYS_terminate_with_payload)
    (syscall-number SYS_thread_selfid)
    (syscall-number SYS_workq_kernreturn)
)
(allow syscall-mach
    (machtrap-number MSC__kernelrpc_mach_port_allocate_trap)
    (machtrap-number MSC__kernelrpc_mach_port_construct_trap)
    (machtrap-number MSC__kernelrpc_mach_port_deallocate_trap)
    (machtrap-number MSC__kernelrpc_mach_port_destruct_trap)
    (machtrap-number MSC__kernelrpc_mach_port_extract_member_trap)
    (machtrap-number MSC__kernelrpc_mach_port_guard_trap)
    (machtrap-number MSC__kernelrpc_mach_port_insert_member_trap)
    (machtrap-number MSC__kernelrpc_mach_port_insert_right_trap)
    (machtrap-number MSC__kernelrpc_mach_port_mod_refs_trap)
    (machtrap-number MSC__kernelrpc_mach_port_request_notification_trap)
    (machtrap-number MSC__kernelrpc_mach_port_type_trap)
    (machtrap-number MSC__kernelrpc_mach_vm_allocate_trap)
    (machtrap-number MSC__kernelrpc_mach_vm_deallocate_trap)
    (machtrap-number MSC__kernelrpc_mach_vm_map_trap)
    (machtrap-number MSC__kernelrpc_mach_vm_protect_trap)
    (machtrap-number MSC__kernelrpc_mach_vm_purgable_control_trap)
    (machtrap-number MSC_host_self_trap)
    (machtrap-number MSC_mach_generate_activity_id)
    (machtrap-number MSC_mach_msg2_trap)
    (machtrap-number MSC_mach_vm_reclaim_update_kernel_accounting_trap)
    (machtrap-number MSC_mk_timer_arm)
    (machtrap-number MSC_mk_timer_cancel)
    (machtrap-number MSC_mk_timer_create)
    (machtrap-number MSC_semaphore_signal_trap)
    (machtrap-number MSC_semaphore_wait_trap)
    (machtrap-number MSC_thread_get_special_reply_port)
)
(allow syscall-mig
    (kernel-mig-routine _mach_make_memory_entry)
    (kernel-mig-routine host_get_io_master)
    (kernel-mig-routine host_info)
    (kernel-mig-routine io_connect_method)
    (kernel-mig-routine io_iterator_next)
    (kernel-mig-routine io_object_conforms_to)
    (kernel-mig-routine io_registry_entry_create_iterator)
    (kernel-mig-routine io_registry_entry_get_parent_iterator)
    (kernel-mig-routine io_registry_entry_get_path)
    (kernel-mig-routine io_registry_entry_get_properties_bin_buf)
    (kernel-mig-routine io_registry_entry_get_property_bin_buf)
    (kernel-mig-routine io_registry_entry_get_registry_entry_id)
    (kernel-mig-routine io_registry_entry_in_plane)
    (kernel-mig-routine io_registry_get_root_entry)
    (kernel-mig-routine io_registry_iterator_exit_entry)
    (kernel-mig-routine io_server_version)
    (kernel-mig-routine io_service_add_notification_64)
    (kernel-mig-routine io_service_add_notification_bin_64)
    (kernel-mig-routine io_service_close)
    (kernel-mig-routine io_service_get_matching_service)
    (kernel-mig-routine io_service_get_matching_service_bin)
    (kernel-mig-routine io_service_get_matching_services_bin)
    (kernel-mig-routine io_service_open_extended)
    (kernel-mig-routine io_service_wait_quiet)
    (kernel-mig-routine mach_exception_raise)
    (kernel-mig-routine mach_port_get_context_from_user)
    (kernel-mig-routine mach_port_get_refs)
    (kernel-mig-routine mach_port_is_connection_for_service)
    (kernel-mig-routine mach_port_set_attributes)
    (kernel-mig-routine mach_vm_deferred_reclamation_buffer_flush)
    (kernel-mig-routine mach_vm_deferred_reclamation_buffer_resize)
    (kernel-mig-routine mach_vm_map_external)
    (kernel-mig-routine semaphore_create)
    (kernel-mig-routine semaphore_destroy)
    (kernel-mig-routine task_get_special_port_from_user)
    (kernel-mig-routine task_info_from_user)
    (kernel-mig-routine task_restartable_ranges_synchronize)
)
