Servicios XPC
De Apple Creación de servicios XPC :
Hay dos razones principales para utilizar los servicios XPC: la separación de privilegios y la estabilidad.
Estabilidad:
Seamos realistas: las aplicaciones a veces se bloquean. No queremos que ocurra, pero ocurre de todos modos. A menudo, ciertas partes de una aplicación son más propensas a bloquearse que otras. Por ejemplo, la estabilidad de cualquier aplicación con una API de complementos está intrínsecamente a merced de los autores de los complementos. Cuando una parte de una aplicación es más propensa a fallar, puede ser útil separar la funcionalidad potencialmente inestable del núcleo de la aplicación. Esta separación permite asegurar que, si se bloquea, el resto de la aplicación no se verá afectada.
Separación de privilegios:
Las aplicaciones modernas dependen cada vez más de datos no fiables, como páginas web, archivos enviados por correo electrónico, etc. Esto representa un vector de ataque creciente para los virus y otros programas maliciosos. Con las aplicaciones tradicionales, si una aplicación se ve comprometida a través de un desbordamiento del búfer u otra vulnerabilidad de seguridad, el atacante obtiene la capacidad de hacer todo lo que el usuario puede hacer. Para mitigar este riesgo, Mac OS X ofrece un sandboxing, que limita los tipos de operaciones que puede realizar un proceso.
En un entorno de caja de arena, puede aumentar aún más la seguridad con la separación de privilegios, dividiendo una aplicación en piezas más pequeñas que son responsables de una parte del comportamiento de la aplicación. Esto permite que cada pieza tenga un sandbox más restrictivo que el que requeriría la aplicación en su conjunto.
Otros mecanismos para dividir una aplicación en partes más pequeñas, como NSTask y posix_spawn, no permiten poner cada parte de la aplicación en su propia caja de arena, por lo que no es posible utilizarlos para implementar la separación de privilegios. Cada servicio XPC tiene su propia caja de arena, por lo que los servicios XPC pueden facilitar la implementación de una adecuada separación de privilegios.
Para más información sobre el sandboxing, consulte Guía de diseño de App Sandbox .