
Un sistema de autorización y monitoreo binario para macOS
[!NOTE] A partir de 2025, Santa ya no cuenta con el mantenimiento de Google. Animamos a los usuarios actuales a migrar a un fork de Santa que se mantenga activamente, como https://github.com/northpolesec/santa.
Santa es un sistema de autorización de acceso a binarios y archivos para macOS. Consiste en una extensión del sistema que monitorea las ejecuciones, un demonio que toma decisiones de ejecución basándose en el contenido de una base de datos local, un agente GUI que notifica al usuario en caso de una decisión de bloqueo y una utilidad de línea de comandos para gestionar el sistema y sincronizar la base de datos con un servidor.
Se llama Santa porque lleva un registro de los binarios que son traviesos o buenos.
La documentación de Santa se almacena en el directorio Documentación y se publica en https://santa.dev.
La documentación incluye opciones de despliegue, detalles sobre cómo funcionan partes de Santa e instrucciones para desarrollar Santa en sí.
Si tienes preguntas o necesitas ayuda para empezar, el grupo santa-dev es un excelente lugar.
Si crees que has encontrado un error, no dudes en reportar un problema y responderemos lo antes posible.
Si crees que has encontrado una vulnerabilidad, lee la política de seguridad para informar sobre la divulgación.
Múltiples modos: En el modo MONITOR predeterminado, todos los binarios excepto aquellos marcados como bloqueados podrán ejecutarse, mientras se registran y almacenan en la base de datos de eventos. En el modo LOCKDOWN, solo se permiten ejecutar los binarios listados.
Registro de eventos: Cuando la extensión del sistema está cargada, se registran todas las ejecuciones de binarios. En cualquier modo, todos los binarios desconocidos o denegados se almacenan en la base de datos para permitir su agregación posterior.
Reglas basadas en certificados, con niveles de anulación: En lugar de depender del hash (o 'huella digital') de un binario, los ejecutables pueden permitirse/bloquearse por su certificado de firma. Por lo tanto, puedes permitir/bloquear todos los binarios de un editor determinado que fueron firmados con ese certificado en todas las versiones. Un binario solo puede ser permitido por su certificado si su firma se valida correctamente, pero una regla para la huella digital de un binario anulará una decisión para un certificado; es decir, puedes incluir un certificado en la lista blanca mientras bloqueas un binario firmado con ese certificado, o viceversa.
Reglas basadas en rutas (a través de NSRegularExpression/ICU): Esto permite una funcionalidad similar a la que se encuentra en Managed Client (el precursor de los perfiles de configuración, que usaban el mismo mecanismo de implementación), las Restricciones de Inicio de Aplicaciones a través del binario mcxalr. Esta implementación tiene el beneficio adicional de ser configurable mediante regex, y no depender de LaunchServices. Como se detalla en la wiki, al evaluar reglas, esto tiene la prioridad más baja.
Reglas de certificado a prueba de fallos: No se puede establecer una regla de denegación que bloquee el certificado utilizado para firmar launchd, también conocido como pid 1, y por lo tanto todos los componentes utilizados en macOS. Los binarios en cada actualización del sistema operativo (y en algunos casos, versiones completas nuevas) se permiten automáticamente. Esto no afecta a los binarios de la App Store de Apple, que utilizan varios certificados que cambian regularmente para aplicaciones comunes. Del mismo modo, no se puede bloquear a Santa en sí mismo, y Santa utiliza un certificado separado y distinto de otras aplicaciones de Google.
Los componentes de espacio de usuario se validan entre sí: cada uno de los componentes de espacio de usuario (el demonio, el agente GUI y la utilidad de línea de comandos) se comunican entre sí usando XPC y verifican que sus certificados de firma sean idénticos antes de aceptar cualquier comunicación.
Almacenamiento en caché: los binarios permitidos se almacenan en caché, por lo que el procesamiento necesario para realizar una solicitud solo se realiza si el binario no está ya en caché.
Ningún sistema o proceso por sí solo detendrá todos los ataques, ni proporcionará una seguridad del 100%. Santa está escrito con la intención de ayudar a proteger a los usuarios de sí mismos. Las personas a menudo descargan malware y confían en él, dando credenciales al malware, o permitiendo que software desconocido extraiga más datos de su sistema. Como un componente gestionado centralmente, Santa puede ayudar a detener la propagación de malware entre un gran parque de máquinas. De forma independiente, Santa puede ayudar a analizar qué se está ejecutando en su ordenador.
Santa es parte de una estrategia de defensa en profundidad, y debe continuar protegiendo los hosts de cualquier otra forma que considere adecuada.
Santa solo bloquea la ejecución (execve y variantes), no protege contra
bibliotecas dinámicas cargadas con dlopen, bibliotecas en disco que han sido
reemplazadas, o bibliotecas cargadas usando DYLD_INSERT_LIBRARIES.
Scripts: Actualmente, Santa está escrito para ignorar cualquier ejecución que no sea un binario. Esto se debe a que, tras sopesar el costo de administración frente al beneficio, encontramos que no valía la pena. Además, varias aplicaciones hacen uso de scripts generados temporalmente, que no podemos incluir en una lista blanca y no hacerlo causaría problemas. Estaremos encantados de reconsiderar esto (o al menos convertirlo en una opción) si fuera útil para otros.
El cliente de línea de comandos santactl incluye una bandera para sincronizar con un
servidor de gestión, que sube los eventos que han ocurrido en la máquina y descarga nuevas
reglas. Hay varios servidores de código abierto con los que puedes sincronizar: