Vance_20070312_01
Security Security-
- Enhanced Darwin:
Security- -Enhanced Darwin: Enhanced Darwin: Security Porting - - PowerPoint PPT Presentation
Security- -Enhanced Darwin: Enhanced Darwin: Security Porting SELinux to Mac OS X Porting SELinux to Mac OS X SELinux Symposium 2007 ELinux Symposium 2007 S Chris Vance Information Systems Security Operation, SPARTA, Inc.
Vance_20070312_01
Vance_20070312_02
Vance_20070312_03
Vance_20070312_04
FreeBSD Kernel MAC Framework FLASK Type Enforcement Linux Kernel LSM FLASK Type Enforcement Darwin Kernel MAC Framework FLASK Type Enforcement
Vance_20070312_05
Vance_20070312_06
Scheduling Virtual Memory Mach IPC
Libinfo system_cmds DirectoryServices … mach_init
System Call Boundary
Libsystem Processes UNIX IPC Networking VFS
MAC Framework Boundary
Vance_20070312_07
Vance_20070312_08
Vance_20070312_09
Vance_20070312_010
User Process User Process User Process
System Call Interface VFS Socket IPC Process Signaling Mach IPC
MAC Framework mac_test mac_mls (proprietary)
SEDarwin
Vance_20070312_011
– “normal” issues with allocators, locking primitives (no RCU locks), logging, printf, audit, etc.
easily, rule parsers and compilers
translate sysctls vs. selinuxfs
(within last couple weeks)
Policy, still working to develop better rules
MAC Framework
Instruments kernel access control logic, provides label infrastructure, provides application security APIs …
SEDarwin
Maps between MAC Framework abstractions and FLASK abstractions, invokes FLASK+AVC checks
Flask AVC
Caches decisions
Security Server
Processes policy
TE (RBAC) (MLS)
Vance_20070312_012
Vance_20070312_013
Vance_20070312_014
Vance_20070312_015
Vance_20070312_016
Vance_20070312_017
class mach_port { relabelfrom relabelto send recv make_send make_send_once copy_send move_send move_send_once move_recv hold_send hold_send_once hold_recv } allow kextd_t self:mach_port { copy_send make_send_once send }; allow kextd_t coreservicesd_t:mach_port hold_send; allow kextd_t init_t:mig_bootstrap { bootstrap_look_up bootstrap_register bootstrap_status };
Vance_20070312_018
Vance_20070312_019
Vance_20070312_020
Vance_20070312_021
Vance_20070312_022
Vance_20070312_023
Vance_20070312_024
Vance_20070312_025
– int mac_iokit_check_device(int devtype, struct module_data *mdata)
Vance_20070312_026
– typedef int mpo_iokit_check_device_t(int devtype, struct mac_module_data *mdata);