Title: [286469] trunk/Source/WebKit
- Revision
- 286469
- Author
- pvol...@apple.com
- Date
- 2021-12-02 17:14:02 -0800 (Thu, 02 Dec 2021)
Log Message
[WP][iOS] Add telemetry to determine which system calls are only used on process launch
https://bugs.webkit.org/show_bug.cgi?id=233649
<rdar://problem/85875930>
Reviewed by Brent Fulgham.
Add telemetry to determine which system calls are only used on WebContent process launch on iOS.
* Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::create):
Modified Paths
Diff
Modified: trunk/Source/WebKit/ChangeLog (286468 => 286469)
--- trunk/Source/WebKit/ChangeLog 2021-12-03 01:03:15 UTC (rev 286468)
+++ trunk/Source/WebKit/ChangeLog 2021-12-03 01:14:02 UTC (rev 286469)
@@ -1,5 +1,19 @@
2021-12-02 Per Arne Vollan <pvol...@apple.com>
+ [WP][iOS] Add telemetry to determine which system calls are only used on process launch
+ https://bugs.webkit.org/show_bug.cgi?id=233649
+ <rdar://problem/85875930>
+
+ Reviewed by Brent Fulgham.
+
+ Add telemetry to determine which system calls are only used on WebContent process launch on iOS.
+
+ * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in:
+ * WebProcess/WebPage/WebPage.cpp:
+ (WebKit::WebPage::create):
+
+2021-12-02 Per Arne Vollan <pvol...@apple.com>
+
[WP] Strengthen sandbox when AppCache is disabled
https://bugs.webkit.org/show_bug.cgi?id=233746
<rdar://problem/85953893>
Modified: trunk/Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in (286468 => 286469)
--- trunk/Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in 2021-12-03 01:03:15 UTC (rev 286468)
+++ trunk/Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in 2021-12-03 01:14:02 UTC (rev 286469)
@@ -1195,177 +1195,211 @@
(disable-syscall-inference)
+#if HAVE(SANDBOX_STATE_FLAGS)
+(deny user-preference-read (with enable-state-flag "WebContentProcessLaunched")
+ (preference-domain "com.apple.WebKit.WebContent.Launch"))
+#endif
+
+(define (syscall-unix-only-in-use-during-launch)
+ (syscall-number
+ SYS_bsdthread_register
+ SYS_chdir
+ SYS_csops ;; used by Corefoundation initialization
+ SYS_dup2
+ SYS_fileport_makefd
+ SYS_fsgetpath
+ SYS_getegid
+ SYS_getpid
+ SYS_getrlimit
+ SYS_gettid
+ SYS_getuid
+ SYS_ioctl ;; needed by tcgetattr (TIOCGETA - debugging
+ SYS_kdebug_trace_string
+ SYS_kdebug_typefilter
+ SYS_objc_bp_assist_cfg_np
+ SYS_os_fault_with_payload
+ SYS_shared_region_check_np
+ SYS_shm_open
+ SYS_sigaction
+ SYS_sysctl
+ SYS_workq_open
+ SYS_writev))
+
+(define (syscall-unix-in-use-after-launch)
+ (syscall-number
+ SYS___disable_threadsignal
+ SYS___mac_syscall
+ SYS_abort_with_payload ;; <rdar://problem/50967271>
+ SYS_access
+ SYS_bsdthread_create
+ SYS_bsdthread_ctl
+ SYS_bsdthread_terminate
+ SYS_change_fdguard_np
+ SYS_close
+ SYS_close_nocancel
+ SYS_csops_audittoken ;; used by WK to get entitlments
+ SYS_exit
+ SYS_faccessat ;; <rdar://problem/56998930>
+ SYS_fcntl
+ SYS_fcntl_nocancel
+ SYS_fgetattrlist ;; <rdar://problem/50266257>
+ SYS_flock
+ SYS_fsetattrlist ;; MTLCompilerFSCache::openSync
+ SYS_fsetxattr ;; <rdar://problem/49795964>
+ SYS_fstat64
+ SYS_fstat64_extended ;; <rdar://problem/61310019>
+ SYS_fstatfs64
+ SYS_ftruncate
+ SYS_getattrlist ;; xpc_realpath and directory enumeration
+ SYS_getdirentries64
+ SYS_getentropy
+ SYS_geteuid
+ SYS_getfsstat64
+ SYS_getrusage
+ SYS_gettimeofday
+ SYS_guarded_close_np
+ SYS_guarded_open_dprotected_np ; <rdar://problem/48166729>
+ SYS_guarded_open_np
+ SYS_guarded_pwrite_np
+ SYS_issetugid
+ SYS_kdebug_trace64
+ SYS_kevent_id
+ SYS_kevent_qos
+ SYS_kqueue ;; <rdar://problem/49609201>
+ SYS_kqueue_workloop_ctl ;; <rdar://problem/50999499>
+ SYS_listxattr
+ SYS_lseek
+ SYS_lstat64
+ SYS_madvise
+ SYS_memorystatus_control
+ 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_rdlock ;; <rdar://problem/51134351>
+ SYS_psynch_rw_unlock
+ SYS_read
+ SYS_read_nocancel
+ SYS_readlink
+ SYS_rename
+ SYS_sem_close
+ SYS_sem_open
+ SYS_shared_region_map_and_slide_2_np ;; <rdar://problem/60294880>
+ SYS_stat64
+ SYS_statfs64
+ SYS_sysctlbyname
+ SYS_thread_selfid
+ SYS_ulock_wait
+ SYS_ulock_wait2 ;; <rdar://problem/58743778>
+ SYS_ulock_wake
+ SYS_workq_kernreturn
+ SYS_write_nocancel))
+
+(define (syscall-unix-rarely-in-use)
+ (syscall-number
+ SYS_fgetxattr
+ SYS_getgid
+ SYS_getxattr
+ SYS_necp_client_action
+ SYS_necp_open
+ SYS_sendto
+ SYS_setrlimit
+ SYS_sigaltstack
+ SYS_socket
+ SYS_thread_selfusage))
+
+(define (syscall-unix-possibly-not-in-use)
+ (syscall-number
+ SYS___pthread_kill
+ SYS___pthread_markcancel
+ SYS___pthread_sigmask
+ SYS___semwait_signal
+ SYS___semwait_signal_nocancel
+ SYS_chmod
+ SYS_connect
+ SYS_connect_nocancel
+ SYS_connectx
+ SYS_csrctl
+ SYS_dup
+ SYS_fchmod
+ SYS_fileport_makeport
+ SYS_fstatat64
+ SYS_fsync
+ SYS_getattrlistbulk ;; xpc_realpath and directory enumeration
+ SYS_getaudit_addr
+ SYS_getpeername
+ SYS_getsockopt ;; used by libwebrtc
+ SYS_kdebug_trace
+ SYS_mkdirat
+ SYS_mlock
+ SYS_mremap_encrypted
+ SYS_munlock
+ SYS_open_dprotected_np
+ SYS_openat_nocancel
+ SYS_persona
+ SYS_pipe
+ SYS_pread_nocancel
+ SYS_proc_rlimit_control
+ SYS_process_policy
+ SYS_psynch_rw_wrlock
+ SYS_pwrite
+ SYS_recvfrom
+ SYS_recvfrom_nocancel
+ SYS_rmdir
+ SYS_select
+ SYS_select_nocancel
+ SYS_sem_post
+ SYS_sem_wait
+ SYS_sendmsg_nocancel
+ SYS_sendto_nocancel
+ SYS_setpriority
+ SYS_setsockopt
+ SYS_shutdown
+ SYS_sigprocmask
+ SYS_sigreturn
+ SYS_socketpair
+ SYS_umask
+ SYS_unlink
+ SYS_work_interval_ctl
+ SYS_write
+ SYS_writev))
+
(when (defined? 'syscall-unix)
(deny syscall-unix (with send-signal SIGKILL))
(allow syscall-unix
- (syscall-number SYS___disable_threadsignal)
- (syscall-number SYS___mac_syscall)
- (syscall-number SYS_abort_with_payload) ;; <rdar://problem/50967271>
- (syscall-number SYS_access)
- (syscall-number SYS_bsdthread_create)
- (syscall-number SYS_bsdthread_ctl)
- (syscall-number SYS_bsdthread_register)
- (syscall-number SYS_bsdthread_terminate)
- (syscall-number SYS_change_fdguard_np)
- (syscall-number SYS_chdir)
- (syscall-number SYS_close)
- (syscall-number SYS_close_nocancel)
- (syscall-number SYS_csops) ;; used by Corefoundation initialization
- (syscall-number SYS_csops_audittoken) ;; used by WK to get entitlments
- (syscall-number SYS_exit)
- (syscall-number SYS_faccessat) ;; <rdar://problem/56998930>
- (syscall-number SYS_fcntl)
- (syscall-number SYS_fcntl_nocancel)
- (syscall-number SYS_fgetattrlist) ;; <rdar://problem/50266257>
- (syscall-number SYS_flock)
- (syscall-number SYS_fsetattrlist) ;; MTLCompilerFSCache::openSync
- (syscall-number SYS_fsetxattr) ;; <rdar://problem/49795964>
- (syscall-number SYS_fsgetpath)
- (syscall-number SYS_fstat64)
- (syscall-number SYS_fstat64_extended) ;; <rdar://problem/61310019>
- (syscall-number SYS_fstatfs64)
- (syscall-number SYS_ftruncate)
- (syscall-number SYS_getattrlist) ;; xpc_realpath and directory enumeration
- (syscall-number SYS_getdirentries64)
- (syscall-number SYS_getegid)
- (syscall-number SYS_getentropy)
- (syscall-number SYS_geteuid)
- (syscall-number SYS_getfsstat64)
- (syscall-number SYS_getpid)
- (syscall-number SYS_getrlimit)
- (syscall-number SYS_getrusage)
- (syscall-number SYS_gettid)
- (syscall-number SYS_gettimeofday)
- (syscall-number SYS_getuid)
- (syscall-number SYS_guarded_close_np)
- (syscall-number SYS_guarded_open_dprotected_np) ; <rdar://problem/48166729>
- (syscall-number SYS_guarded_open_np)
- (syscall-number SYS_guarded_pwrite_np)
- (syscall-number SYS_ioctl) ;; needed by tcgetattr (TIOCGETA) - debugging
- (syscall-number SYS_issetugid)
- (syscall-number SYS_kdebug_trace64)
- (syscall-number SYS_kdebug_typefilter)
- (syscall-number SYS_kevent_id)
- (syscall-number SYS_kevent_qos)
- (syscall-number SYS_kqueue) ;; <rdar://problem/49609201>
- (syscall-number SYS_kqueue_workloop_ctl) ;; <rdar://problem/50999499>
- (syscall-number SYS_listxattr)
- (syscall-number SYS_lseek)
- (syscall-number SYS_lstat64)
- (syscall-number SYS_madvise)
- (syscall-number SYS_memorystatus_control)
- (syscall-number SYS_mkdir)
- (syscall-number SYS_mmap)
- (syscall-number SYS_mprotect)
- (syscall-number SYS_msync)
- (syscall-number SYS_munmap)
- (syscall-number SYS_objc_bp_assist_cfg_np)
- (syscall-number SYS_open)
- (syscall-number SYS_open_nocancel)
- (syscall-number SYS_openat)
- (syscall-number SYS_os_fault_with_payload)
- (syscall-number SYS_pathconf)
- (syscall-number SYS_pread)
- (syscall-number SYS_proc_info)
- (syscall-number SYS_psynch_cvbroad)
- (syscall-number SYS_psynch_cvclrprepost)
- (syscall-number SYS_psynch_cvsignal)
- (syscall-number SYS_psynch_cvwait)
- (syscall-number SYS_psynch_mutexdrop)
- (syscall-number SYS_psynch_mutexwait)
- (syscall-number SYS_psynch_rw_rdlock) ;; <rdar://problem/51134351>
- (syscall-number SYS_psynch_rw_unlock)
- (syscall-number SYS_read)
- (syscall-number SYS_read_nocancel)
- (syscall-number SYS_readlink)
- (syscall-number SYS_rename)
- (syscall-number SYS_sem_close)
- (syscall-number SYS_sem_open)
- (syscall-number SYS_shared_region_check_np)
- (syscall-number SYS_shared_region_map_and_slide_2_np) ;; <rdar://problem/60294880>
- (syscall-number SYS_shm_open)
- (syscall-number SYS_sigaction)
- (syscall-number SYS_stat64)
- (syscall-number SYS_statfs64)
- (syscall-number SYS_sysctl)
- (syscall-number SYS_sysctlbyname)
- (syscall-number SYS_thread_selfid)
- (syscall-number SYS_ulock_wait)
- (syscall-number SYS_ulock_wait2) ;; <rdar://problem/58743778>
- (syscall-number SYS_ulock_wake)
- (syscall-number SYS_workq_kernreturn)
- (syscall-number SYS_workq_open)
- (syscall-number SYS_write_nocancel))
+ (syscall-unix-only-in-use-during-launch)
+ (syscall-unix-in-use-after-launch))
+#if HAVE(SANDBOX_STATE_FLAGS)
+ (with-filter (require-not (state-flag "WebContentProcessLaunched"))
+ (allow syscall-unix
+ (syscall-unix-only-in-use-during-launch)))
+ (with-filter (state-flag "WebContentProcessLaunched")
+ (allow syscall-unix
+ (with report)
+ (with telemetry)
+ (with message "Unix syscall used after launch")
+ (syscall-unix-only-in-use-during-launch)))
+#endif
+
(allow syscall-unix (with telemetry)
- (syscall-number SYS_fgetxattr)
- (syscall-number SYS_getgid)
- (syscall-number SYS_getxattr)
- (syscall-number SYS_necp_client_action)
- (syscall-number SYS_necp_open)
- (syscall-number SYS_sendto)
- (syscall-number SYS_setrlimit)
- (syscall-number SYS_sigaltstack)
- (syscall-number SYS_socket)
- (syscall-number SYS_thread_selfusage)
- )
+ (syscall-unix-rarely-in-use))
(allow syscall-unix (with report) (with telemetry-backtrace)
- (syscall-number SYS___pthread_kill)
- (syscall-number SYS___pthread_markcancel)
- (syscall-number SYS___pthread_sigmask)
- (syscall-number SYS___semwait_signal)
- (syscall-number SYS___semwait_signal_nocancel)
- (syscall-number SYS_chmod)
- (syscall-number SYS_connect)
- (syscall-number SYS_connect_nocancel)
- (syscall-number SYS_connectx)
- (syscall-number SYS_csrctl)
- (syscall-number SYS_dup)
- (syscall-number SYS_dup2)
- (syscall-number SYS_fchmod)
- (syscall-number SYS_fileport_makefd)
- (syscall-number SYS_fileport_makeport)
- (syscall-number SYS_fstatat64)
- (syscall-number SYS_fsync)
- (syscall-number SYS_getattrlistbulk) ;; xpc_realpath and directory enumeration
- (syscall-number SYS_getaudit_addr)
- (syscall-number SYS_getpeername)
- (syscall-number SYS_getsockopt) ;; used by libwebrtc
- (syscall-number SYS_kdebug_trace)
- (syscall-number SYS_mkdirat)
- (syscall-number SYS_mlock)
- (syscall-number SYS_mremap_encrypted)
- (syscall-number SYS_munlock)
- (syscall-number SYS_open_dprotected_np)
- (syscall-number SYS_openat_nocancel)
- (syscall-number SYS_persona)
- (syscall-number SYS_pipe)
- (syscall-number SYS_pread_nocancel)
- (syscall-number SYS_proc_rlimit_control)
- (syscall-number SYS_process_policy)
- (syscall-number SYS_psynch_rw_wrlock)
- (syscall-number SYS_pwrite)
- (syscall-number SYS_recvfrom)
- (syscall-number SYS_recvfrom_nocancel)
- (syscall-number SYS_rmdir)
- (syscall-number SYS_select)
- (syscall-number SYS_select_nocancel)
- (syscall-number SYS_sem_post)
- (syscall-number SYS_sem_wait)
- (syscall-number SYS_sendmsg_nocancel)
- (syscall-number SYS_sendto_nocancel)
- (syscall-number SYS_setpriority)
- (syscall-number SYS_setsockopt)
- (syscall-number SYS_shutdown)
- (syscall-number SYS_sigprocmask)
- (syscall-number SYS_sigreturn)
- (syscall-number SYS_socketpair)
- (syscall-number SYS_umask)
- (syscall-number SYS_unlink)
- (syscall-number SYS_work_interval_ctl)
- (syscall-number SYS_write)
- (syscall-number SYS_writev))
+ (syscall-unix-possibly-not-in-use))
)
(when (defined? 'SYS__map_with_linking_np)
@@ -1500,129 +1534,181 @@
)
)
+(define (syscall-mach-only-in-use-during-launch)
+ (machtrap-number
+ MSC_mach_generate_activity_id
+ MSC_mach_timebase_info_trap
+ MSC_swtch_pri
+ MSC_task_self_trap))
+
+(define (syscall-mach-in-use-after-launch)
+ (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_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_syscall_thread_switch
+ MSC_task_name_for_pid
+ MSC_thread_get_special_reply_port))
+
+(define (syscall-mach-possibly-unused)
+ (machtrap-number
+ MSC_mach_msg_overwrite_trap
+ MSC_mk_timer_arm_leeway
+ MSC_thread_self_trap))
+
(when (defined? 'syscall-mach)
(deny syscall-mach
- (machtrap-number MSC_mach_wait_until)
- )
+ (machtrap-number MSC_mach_wait_until))
+
(deny syscall-mach (with telemetry))
(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_get_attributes_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_port_unguard_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_create_mach_voucher_trap)
- (machtrap-number MSC_host_self_trap)
- (machtrap-number MSC_mach_generate_activity_id)
- (machtrap-number MSC_mach_msg_trap)
- (machtrap-number MSC_mach_reply_port)
- (machtrap-number MSC_mach_timebase_info_trap)
- (machtrap-number MSC_mach_voucher_extract_attr_recipe_trap)
- (machtrap-number MSC_mk_timer_arm)
- (machtrap-number MSC_mk_timer_cancel)
- (machtrap-number MSC_mk_timer_create)
- (machtrap-number MSC_mk_timer_destroy)
- (machtrap-number MSC_pid_for_task)
- (machtrap-number MSC_semaphore_signal_trap)
- (machtrap-number MSC_semaphore_timedwait_trap)
- (machtrap-number MSC_semaphore_wait_trap)
- (machtrap-number MSC_syscall_thread_switch)
- (machtrap-number MSC_task_name_for_pid)
- (machtrap-number MSC_task_self_trap)
- (machtrap-number MSC_thread_get_special_reply_port))
+ (syscall-mach-only-in-use-during-launch)
+ (syscall-mach-in-use-after-launch))
+
(when (defined? 'MSC_mach_msg2_trap)
(allow syscall-mach
- (machtrap-number MSC_mach_msg2_trap)
- )
- )
+ (machtrap-number MSC_mach_msg2_trap)))
+#if HAVE(SANDBOX_STATE_FLAGS)
+ (with-filter (require-not (state-flag "WebContentProcessLaunched"))
+ (allow syscall-mach
+ (syscall-mach-only-in-use-during-launch)))
+ (with-filter (state-flag "WebContentProcessLaunched")
+ (allow syscall-mach
+ (with report)
+ (with telemetry)
+ (with message "Mach syscall used after launch")
+ (syscall-mach-only-in-use-during-launch)))
+#endif
+
(allow syscall-mach (with telemetry-backtrace)
- (machtrap-number MSC_mach_msg_overwrite_trap)
- (machtrap-number MSC_mk_timer_arm_leeway)
- (machtrap-number MSC_swtch_pri)
- (machtrap-number MSC_thread_self_trap))
+ (syscall-mach-possibly-unused))
)
+(define (kernel-mig-routine-only-in-use-during-launch)
+ (kernel-mig-routine
+ host_get_clock_service
+ host_get_special_port
+ host_info
+ io_server_version
+ mach_port_get_context_from_user
+ task_restartable_ranges_register
+ task_set_special_port))
+
+(define (kernel-mig-routine-in-use)
+ (kernel-mig-routine
+ (when (defined? '_mach_make_memory_entry) _mach_make_memory_entry)
+ host_get_io_master
+ io_connect_async_method
+ io_connect_method
+ io_connect_set_notification_port_64
+ io_iterator_next
+ io_registry_entry_from_path
+ io_registry_entry_get_property_bin_buf
+ io_registry_entry_get_property_bytes
+ io_registry_entry_get_registry_entry_id
+ io_service_get_matching_service_bin
+ io_service_get_matching_services_bin
+ io_service_open_extended
+ mach_port_set_attributes
+ mach_vm_copy
+ mach_vm_map_external
+ mach_vm_remap_external
+ semaphore_create
+ semaphore_destroy
+ task_create_identity_token
+ task_get_special_port_from_user
+ task_info_from_user
+ task_restartable_ranges_synchronize
+ thread_get_state_to_user
+ thread_resume
+ thread_set_exception_ports
+ thread_suspend))
+
+(define (kernel-mig-routine-possibly-unused)
+ (kernel-mig-routine
+ clock_get_time
+ host_request_notification
+ io_connect_add_client
+ io_connect_map_memory_into_task
+ (when (defined? 'io_connect_set_notification_port) io_connect_set_notification_port)
+ io_registry_entry_get_parent_iterator
+ io_service_add_notification_bin
+ io_service_add_notification_bin_64
+ io_service_close
+ mach_exception_raise
+ (when (defined? 'mach_make_memory_entry) mach_make_memory_entry)
+ (when (defined? 'mach_make_memory_entry_64) mach_make_memory_entry_64)
+ mach_port_request_notification
+ mach_vm_region
+ mach_vm_region_recurse
+ task_threads_from_user
+ (when (defined? 'vm_copy) vm_copy)
+ (when (defined? 'vm_remap_external) vm_remap_external)))
+
+(define (kernel-mig-routine-rarely-used)
+ (kernel-mig-routine
+ mach_memory_entry_ownership
+ task_set_exc_guard_behavior
+ thread_info
+ thread_policy
+ thread_policy_set))
+
(when (defined? 'mach-kernel-endpoint)
(allow mach-kernel-endpoint
(apply-message-filter
(deny mach-message-send (with telemetry))
- (allow mach-message-send (with telemetry-backtrace) (kernel-mig-routine
- clock_get_time
- host_request_notification
- io_connect_add_client
- io_connect_map_memory_into_task
- (when (defined? 'io_connect_set_notification_port) io_connect_set_notification_port)
- io_registry_entry_get_parent_iterator
- io_service_add_notification_bin
- io_service_add_notification_bin_64
- io_service_close
- mach_exception_raise
- (when (defined? 'mach_make_memory_entry) mach_make_memory_entry)
- (when (defined? 'mach_make_memory_entry_64) mach_make_memory_entry_64)
- mach_port_request_notification
- mach_vm_region
- mach_vm_region_recurse
- task_threads_from_user
- (when (defined? 'vm_copy) vm_copy)
- (when (defined? 'vm_remap_external) vm_remap_external)))
+ (allow mach-message-send (with telemetry-backtrace)
+ (kernel-mig-routine-possibly-unused))
- (allow mach-message-send (with telemetry) (kernel-mig-routine
- mach_memory_entry_ownership
- task_set_exc_guard_behavior
- thread_info
- thread_policy
- thread_policy_set))
+ (allow mach-message-send (with telemetry)
+ (kernel-mig-routine-rarely-used))
- (allow mach-message-send (kernel-mig-routine
- (when (defined? '_mach_make_memory_entry) _mach_make_memory_entry)
- host_get_clock_service
- host_get_io_master
- host_get_special_port
- host_info
- io_connect_async_method
- io_connect_method
- io_connect_set_notification_port_64
- io_iterator_next
- io_registry_entry_from_path
- io_registry_entry_get_property_bin_buf
- io_registry_entry_get_property_bytes
- io_registry_entry_get_registry_entry_id
- io_server_version
- io_service_get_matching_service_bin
- io_service_get_matching_services_bin
- io_service_open_extended
- mach_port_get_context_from_user
- mach_port_set_attributes
- mach_vm_copy
- mach_vm_map_external
- mach_vm_remap_external
- semaphore_create
- semaphore_destroy
- task_create_identity_token
- task_get_special_port_from_user
- task_info_from_user
- task_restartable_ranges_register
- task_restartable_ranges_synchronize
- task_set_special_port
- thread_get_state_to_user
- thread_resume
- thread_set_exception_ports
- thread_suspend))
+ (allow mach-message-send
+ (kernel-mig-routine-only-in-use-during-launch)
+ (kernel-mig-routine-in-use))
+#if HAVE(SANDBOX_STATE_FLAGS)
+;; FIXME: enable this when rdar://85931614 is fixed
+;; (with-filter (require-not (state-flag "WebContentProcessLaunched"))
+;; (allow mach-message-send
+;; (kernel-mig-routine-only-in-use-during-launch)))
+;; (with-filter (state-flag "WebContentProcessLaunched")
+;; (allow mach-message-send
+;; (with report)
+;; (with telemetry)
+;; (with message "kernel mig routine used after launch")
+;; (kernel-mig-routine-only-in-use-during-launch)))
+#endif
+
(when (defined? 'mach_port_is_connection_for_service)
(allow mach-message-send (kernel-mig-routine mach_port_is_connection_for_service))
)
Modified: trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp (286468 => 286469)
--- trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp 2021-12-03 01:03:15 UTC (rev 286468)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp 2021-12-03 01:14:02 UTC (rev 286469)
@@ -446,6 +446,13 @@
Ref<WebPage> WebPage::create(PageIdentifier pageID, WebPageCreationParameters&& parameters)
{
+#if HAVE(SANDBOX_STATE_FLAGS)
+ // This call is not meant to actually read a preference, but is only here to trigger a sandbox rule in the
+ // WebContent process, which will toggle a sandbox variable used to determine if the WebContent process
+ // has finished launching. This call should be replaced with proper API when available.
+ CFPreferencesGetAppIntegerValue(CFSTR("key"), CFSTR("com.apple.WebKit.WebContent.Launch"), nullptr);
+#endif
+
Ref<WebPage> page = adoptRef(*new WebPage(pageID, WTFMove(parameters)));
if (WebProcess::singleton().injectedBundle())
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes