Post

Replies

Boosts

Views

Activity

es_event_open_t fflag showing O_SEARCH instead of FREAD/FWRITE on macOS 26 beta 4
Hello, Starting with macOS 26 beta 4, I’ve noticed that the fflag field in es_event_open_t sometimes contains O_SEARCH instead of the expected FREAD or FWRITE values. According to the documentation, fflag should represent the kernel-applied flags (e.g., FREAD, FWRITE), not the open(2) oflag values. However, in my tests, when intercepting ES_EVENT_TYPE_AUTH_OPEN events, the value appears to match O_SEARCH in certain cases. Is this an intentional change in macOS 26, or could it be a bug in the current beta? If this is expected behavior, could you clarify under what conditions O_SEARCH or some oflag are returned? Environment: macOS 26 beta 4 Endpoint Security Framework Thanks in advance for any clarification!
3
0
52
1w
"es_new_client"'s "es_handler_block_t" can't receive a ES_EVENT_TYPE_NOTIFY_KEXTLOAD in M1 macOS11 BigSur
I am using es_new_client and es_subscribe in SystemExtension and EndpointSecurity. I tested it on M3, and it is working. It also works on M1 versions 12, 13, and 14. Additionally, ES_EVENT_TYPE_NOTIFY_KEXTUNLOAD is functioning correctly. However, there is a bug on M1 Big Sur where es_new_client's es_handler_block_t cannot receive ES_EVENT_TYPE_NOTIFY_KEXTLOAD. The tested command is: sudo kextload /System/Library/Extensions/msdosfs.kext sudo kextload /System/Library/Extensions/*.kext Is this intended behavior or a bug? Are there any plans to fix it?
1
0
266
Mar ’25
How to find caller process name in NetworkExtension that Monterey's Safari.
Hello, I have an issue when I develop NetworkExtension in Monterey and Safari. I want find a caller process name when metadata that sourceAppAuditToken is not exist. I compare blocked content with process fd information using IP:PORT. // 0. Input blockedSrc, blockedDest if([[blockedPacket metadata] sourceAppAuditToken] == nil ) { // 1. get a list of process pid. sysctl( procList ... ); kinfo_proc proc = procList[procIdx]; // 2. get process fd Information proc_pidinfo(proc.kp_proc.p_pid, PROC_PIDLISTFDS, socketInfo, ...); // 3. get IP, Port in process information. srcIP = (struct in_addr *)&socketInfo.psi.soi_proto.pri_tcp.tcpsi_ini.insi_laddr.ina_46.i46a_addr4; srcPort = (int)socketInfo.psi.soi_proto.pri_tcp.tcpsi_ini.insi_lport;  destIP = (struct in_addr *)&socketInfo.psi.soi_proto.pri_tcp.tcpsi_ini.insi_faddr.ina_46.i46a_addr4;     destPort = (int)socketInfo.psi.soi_proto.pri_tcp.tcpsi_ini.insi_fport; ... // 4. compare blocked content with information using srcIP:Port and destIP:Port if( blockedSrc == src && blockedDest == dest ) { // 5. found process name proc_pidpath(proc.kp_proc.p_pid, pathBuffer, sizeof(pathBuffer)-1); } } In BigSur Chrome, Safari and Monterey Chrome is working same routine. and In these case, I can found list of process that open TCP using terminal("lsof -i -P") But it is not works when use Safari in Monterey. So, I have checked a list of process that open TCP in Monterey. I have couldn't found it. How can I found caller process name in Monterey when Safari web is blocking? Thank you for reading.
2
0
801
Aug ’21