Post

Replies

Boosts

Views

Activity

Reply to NetworkExtension: Unsatisfied entitlements: com.apple.security.application-groups
Thanks for the response Quinn. Yes you are right this is System Extension app, also we also we build two extension for NE providers (Content Filter and App/Transparent Proxy Provider) and for Endpointsecurity. My App entitlement looks like: $ codesign -d --entitlements :- /Applications/MyorgSystemExtensions.app Executable=/Applications/MyorgSystemExtensions.app/Contents/MacOS/MyorgSystemExtensions <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>com.apple.application-identifier</key> <string>REPLACEDID.com.Myorg.containerapp</string> <key>com.apple.developer.networking.networkextension</key> <array> <string>app-proxy-provider-systemextension</string> <string>content-filter-provider-systemextension</string> </array> <key>com.apple.developer.system-extension.install</key> <true/> <key>com.apple.developer.team-identifier</key> <string>REPLACEDID</string> <key>com.apple.security.application-groups</key> <array> <string>group.com.Myorg.endpoint</string> </array> </dict> </plist> SystemExtension entitlement looks like: $ codesign -d --entitlements :- /Applications/MyorgSystemExtensions.app/Contents/MacOS/MyorgSystemExtensions Executable=/Applications/MyorgSystemExtensions.app/Contents/MacOS/MyorgSystemExtensions <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>com.apple.application-identifier</key> <string>REPLACEDID.com.Myorg.containerapp</string> <key>com.apple.developer.networking.networkextension</key> <array> <string>app-proxy-provider-systemextension</string> <string>content-filter-provider-systemextension</string> </array> <key>com.apple.developer.system-extension.install</key> <true/> <key>com.apple.developer.team-identifier</key> <string>REPLACEDID</string> <key>com.apple.security.application-groups</key> <array> <string>group.com.Myorg.endpoint</string> </array> </dict> </plist> Provisioning file looks like: $ security cms -D -i /Applications/MyorgSystemExtensions.app/Contents/embedded.provisionprofile .... <key>Entitlements</key> <dict> <key>com.apple.developer.endpoint-security.client</key> <true/> <key>com.apple.developer.system-extension.install</key> <true/> <key>com.apple.developer.networking.networkextension</key> <array> <string>packet-tunnel-provider-systemextension</string> <string>app-proxy-provider-systemextension</string> <string>content-filter-provider-systemextension</string> <string>dns-proxy-systemextension</string> <string>dns-settings</string> </array> <key>com.apple.application-identifier</key> <string>REPLACEDID.com.Myorg.containerapp</string> <key>keychain-access-groups</key> <array> <string>REPLACEDID.*</string> </array> <key>com.apple.developer.team-identifier</key> <string>REPLACEDID</string> </dict> .... I am trying to compare the entitlements but I may miss any error as I am not an expert with this. Quinn, would really appreciate if you can point any error. Thanks
Oct ’21
Reply to NetworkExtension: Unsatisfied entitlements: com.apple.security.application-groups
Capturing more details abt the extensions. Also we are not installing and enabling ES on the machines where the issues are reported. The provisioning profile for NE looks like: % security cms -D -i /Applications/MyorgSystemExtensions.app/Contents/Library/SystemExtensions/com.Myorg.CMF.networkextension.systemextension/Contents/embedded.provisionprofile ... <key>Entitlements</key> <dict> <key>com.apple.developer.endpoint-security.client</key> <true/> <key>com.apple.developer.system-extension.install</key> <true/> <key>com.apple.developer.networking.networkextension</key> <array> <string>packet-tunnel-provider-systemextension</string> <string>app-proxy-provider-systemextension</string> <string>content-filter-provider-systemextension</string> <string>dns-proxy-systemextension</string> <string>dns-settings</string> </array> <key>com.apple.application-identifier</key> <string>REPLACEDID.com.Myorg.CMF.networkextension</string> <key>keychain-access-groups</key> <array> <string>REPLACEDID.*</string> </array> <key>com.apple.developer.team-identifier</key> <string>REPLACEDID</string> </dict> ... The provisioning profile for ES looks like: % security cms -D -i /Applications/MyorgSystemExtensions.app/Contents/Library/SystemExtensions/com.Myorg.CMF.endpointsecurity.systemextension/Contents/embedded.provisionprofile ... <key>Entitlements</key> <dict> <key>com.apple.developer.endpoint-security.client</key> <true/> <key>com.apple.developer.system-extension.install</key> <true/> <key>com.apple.application-identifier</key> <string>REPLACEDID.com.Myorg.CMF.endpointsecurity</string> <key>keychain-access-groups</key> <array> <string>REPLACEDID.*</string> </array> <key>com.apple.developer.team-identifier</key> <string>REPLACEDID</string> </dict> ...
Oct ’21
Reply to NetworkExtension: Unsatisfied entitlements: com.apple.security.application-groups
Next question: What are you hoping to gain by using an App Group? Which processes are you sharing content between? And what sort of content? We have app and library which does IPC communication with System Extension to Install and configure, in similar way it was done in Apple sample project for 'SimpleFirewall'. I could see 'com.apple.security.application-group' used there as well. But this 'app-group' entitlement as been working fine in Catallina (10.15) and Bigsur OS for Intel Mac machines. Why could it start failing in M1 macbooks? Also on some M1 machines it is working fine.
Oct ’21
Reply to How can a process outside AppGroup, addObserver for a TransparentProxyProvider Network VPN Interface
Thanks Matt and Quinn for your response. Is this other service signed by the same team as your sysex? Yes both systemExtn and service is signed by same team. And what context is it running in? As a daemon? Or in a GUI login context? Or something else? It is a daemon, but build outside the systemexten container. I have a limitation that I cannot keep this daemon in same container. I have related question, is there a way I could block/disable the 'Disconnect' button for the VPN in network settings? Current this can be disabled even without opening the lock (bottom). Or Can we somehow disable the effect of the disconnect action, ie user cannot stop VPN from this place?
Oct ’21
Reply to How can a process outside AppGroup, addObserver for a TransparentProxyProvider Network VPN Interface
Thanks Quinn, both the approach will work for me. But the 2nd approach is more suitable as it will be independent of the App (SysEx) which is doing 'addObserver' for VPN status. I was trying to find a small example of code for: SCNetworkConnection vpnConn = <?> SCNetworkConnectionStatus status = SCNetworkConnectionGetStatus(vpnConn) Could you please help me with API and arg which i can use to get 'SCNetworkConnection' in my C++ project?
Oct ’21
Reply to How can a process outside AppGroup, addObserver for a TransparentProxyProvider Network VPN Interface
is your service visible to SCNetworkConnection? I dont see my service where you suggested: % networksetup -listallnetworkservices An asterisk (*) denotes that a network service is disabled. USB 10/100/1000 LAN Thunderbolt Bridge Wi-Fi Bluetooth PAN To get this working you need to start with a service ID. I’m not sure whether the system allocates a service ID for a transparent proxy. Do I need to anything special while configuring my TransparentProxyProvider in my App, which will let the system allocate serviceID to my VPN?
Oct ’21
Reply to Difference between PacketTunnelProvider and utun
Thanks for the response @meaton, I wanted to understand it further on how the manual route of creating utun interface and doing read/write can limit any functionalities. I was going through openvpn code and seems they also have used manual method to create utun interface to read/write operation for tunneling L3 packets. For me also it seems an easier way to use the utun method as it is easy to maintain the code avoiding the sandboxing and app groups and managing the inbound and outbound connections..
Jun ’22