Thanks for being a part of WWDC25!

How did we do? We’d love to know your thoughts on this year’s conference. Take the survey here

Monitoring Network Traffic and Socket Events: Coordinating Network and Endpoint Security Extensions

We have a Network Extension system extension implementing NEFilterPacketProvider to inspect all incoming and outgoing network traffic.

We also want to monitor socket-level events such as connect(), bind(), and similar, by leveraging the Endpoint Security framework.

Does this require developing a separate system extension for Endpoint Security?

Additionally, what is the recommended approach for sharing context and data between the Network Extension and the Endpoint Security extensions?

Answered by DTS Engineer in 842768022
Does this require developing a separate system extension for Endpoint Security?

AFAIK Endpoint Security doesn’t generate events for TCP/IP sockets. The standard way to achieve this goal is to create a different NE extension, one that sits above the transport protocol. That typically means a content filter or a transparent proxy.

Additionally, what is the recommended approach for sharing context and data between the Network Extension and the Endpoint Security extensions?

It’s typical to package your ES and NE code into a single sysex, so they can share state via an (appropriately locked) global variable. However, it’s possible to package each in owns own sysex, in which case state sharing becomes an IPC problem.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

Does this require developing a separate system extension for Endpoint Security?

AFAIK Endpoint Security doesn’t generate events for TCP/IP sockets. The standard way to achieve this goal is to create a different NE extension, one that sits above the transport protocol. That typically means a content filter or a transparent proxy.

Additionally, what is the recommended approach for sharing context and data between the Network Extension and the Endpoint Security extensions?

It’s typical to package your ES and NE code into a single sysex, so they can share state via an (appropriately locked) global variable. However, it’s possible to package each in owns own sysex, in which case state sharing becomes an IPC problem.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

Monitoring Network Traffic and Socket Events: Coordinating Network and Endpoint Security Extensions
 
 
Q