Hi Kevin. Thanks for your detailed reply.
We are not using NSEndpointSecurityEarlyBoot. None of the calls into Apple frameworks that we've seen lead to killing the extension are during our extension initialization. They're all in response to some event, e.g., ES_EVENT_TYPE_AUTH_MOUNT calls into DiskArbitration, ES_EVENT_TYPE_AUTH_OPEN calls into Security. Important to note: we only care about those OPEN events for a restricted set of paths (our files) and immediately return ALLOW for anything else.
Here is a lightly redacted crash log:
Process: com.redacted.EndpointSecurity [492]
Path: /Library/SystemExtensions/*/com.redacted.EndpointSecurity
Identifier: com.redacted.EndpointSecurity
Version: v2.10.0-21-g35018b949c-dirty (58)Code Type: ARM-64 (Native)
Parent Process: launchd [1]
User ID: 0
Date/Time: 2025-02-04 12:18:33.7447 -0500
OS Version: macOS 13.6.7 (22G720)
Report Version: 12
Anonymous UUID: 6570580F-1EF2-E6B5-E10B-CA9F00455210
Time Awake Since Boot: 58 seconds
System Integrity Protection: enabled
Crashed Thread: 1
Exception Type: EXC_CRASH (SIGKILL)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Termination Reason: Namespace ENDPOINTSECURITY, Code 2 EndpointSecurity client terminated because it failed to respond to a message before its deadline
Thread 0:
0 libsystem_pthread.dylib 0x18836ad8c start_wqthread + 0
Thread 1 Crashed:
0 libsystem_kernel.dylib 0x1883375c8 __sigsuspend_nocancel + 8
1 libdispatch.dylib 0x1881d3ba8 _dispatch_sigsuspend + 48
2 libdispatch.dylib 0x1881d3b78 _dispatch_sig_thread + 60
Thread 2:: Dispatch queue: BBReaderQueue
0 libsystem_kernel.dylib 0x18832fef4 mach_msg2_trap + 8
1 libsystem_kernel.dylib 0x188342220 mach_msg2_internal + 80
2 libsystem_kernel.dylib 0x188338b58 mach_msg_overwrite + 604
3 libsystem_kernel.dylib 0x188330270 mach_msg + 24
4 CarbonCore 0x18b17b5f0 _scclient_ServerCheckinWithResult_rpc + 148
5 CarbonCore 0x18b17b3dc SCClientSession::checkinWithServer(unsigned int*) + 224
6 CarbonCore 0x18b17b0f0 connectToCoreServicesD() + 128
7 CarbonCore 0x18b17af1c getStatus() + 64
8 CarbonCore 0x18b17e308 scCreateSystemServiceVersion + 56
9 CarbonCore 0x18b17e17c FileIDTreeGetCachedPort + 276
10 CarbonCore 0x18b17df74 FSNodeStorageGetAndLockCurrentUniverse + 68
11 CarbonCore 0x18b17dd64 FileIDTreeGetAndLockVolumeEntryForDeviceID + 88
12 CarbonCore 0x18b17dbcc FSMount::FSMount(unsigned int, FSMountNumberType, int*, unsigned int const*) + 92
13 CarbonCore 0x18b17db28 FSMountPrepare + 76
14 CoreServicesInternal 0x18b4845dc MountInfoPrepare + 68
15 CoreServicesInternal 0x18b483f9c parseAttributeBuffer(__CFAllocator const*, unsigned char const*, unsigned char, attrlist const*, void const*, void**, _FileAttributes*, unsigned int*) + 2848
16 CoreServicesInternal 0x18b482f58 corePropertyProviderPrepareValues(__CFURL const*, __FileCache*, __CFString const* const*, void const**, long, void const*, __CFError**) + 1248
17 CoreServicesInternal 0x18b482a04 prepareValuesForBitmap(__CFURL const*, __FileCache*, _FilePropertyBitmap*, __CFError**) + 452
18 CoreServicesInternal 0x18b47f86c _FSURLCopyResourcePropertyForKeyInternal(__CFURL const*, __CFString const*, void*, void*, __CFError**, unsigned char) + 232
19 CoreFoundation 0x188422f5c CFURLCopyResourcePropertyForKey + 108
20 Security 0x18ac34fcc SecTrustEvaluateIfNecessary + 132
21 Security 0x18ac3699c SecTrustEvaluateInternal + 48
22 Security 0x18acc4fd4 decodeTimeStampTokenWithPolicy + 1320
23 Security 0x18acbf0a8 SecCmsSignerInfoVerifyUnAuthAttrsWithPolicy + 96
24 Security 0x18acc6294 SecCmsSignedDataVerifySignerInfo_internal + 696
25 Security 0x18acc6b60 CMSDecoderCopySignerStatus + 164
26 Security 0x18acde4d0 Security::CodeSigning::SecStaticCode::validateDirectory() + 956
27 Security 0x18ace2240 Security::CodeSigning::SecStaticCode::validateNonResourceComponents() + 24
28 Security 0x18ace6c38 Security::CodeSigning::SecStaticCode::staticValidateCore(unsigned int, Security::CodeSigning::SecRequirement const*) + 72
29 Security 0x18ace5c7c Security::CodeSigning::SecStaticCode::staticValidate(unsigned int, Security::CodeSigning::SecRequirement const*) + 308
30 Security 0x18acdae98 SecStaticCodeCheckValidityWithErrors + 228
31 com.redacted.EndpointSecurity 0x1004396ec 0x100430000 + 38636
32 com.redacted.EndpointSecurity 0x10043489c 0x100430000 + 18588
33 com.redacted.EndpointSecurity 0x1004361cc 0x100430000 + 25036
34 com.redacted.EndpointSecurity 0x100434284 0x100430000 + 17028
35 libEndpointSecurity.dylib 0x19af7d7d0 BBReader<ESMessageReaderConfig>::handleItems() + 356
36 libEndpointSecurity.dylib 0x19af7d558 BBReader<ESMessageReaderConfig>::woke(void*) + 28
37 libdispatch.dylib 0x1881c0400 _dispatch_client_callout + 20
38 libdispatch.dylib 0x1881c3884 _dispatch_continuation_pop + 504
39 libdispatch.dylib 0x1881d6e7c _dispatch_source_invoke + 1588
40 libdispatch.dylib 0x1881c7960 _dispatch_lane_serial_drain + 372
41 libdispatch.dylib 0x1881c862c _dispatch_lane_invoke + 436
42 libdispatch.dylib 0x1881c98e8 _dispatch_workloop_invoke + 1764
43 libdispatch.dylib 0x1881d3244 _dispatch_workloop_worker_thread + 648
44 libsystem_pthread.dylib 0x18836c074 _pthread_wqthread + 288
45 libsystem_pthread.dylib 0x18836ad94 start_wqthread + 8
Thread 3:
0 libsystem_pthread.dylib 0x18836ad8c start_wqthread + 0```