
Un sistema de autorización de acceso a binarios y archivos para macOS.
Santa es un sistema de autorización de archivos y acceso a binarios para macOS. Consiste en una extensión del sistema que supervisa las ejecuciones y el acceso a archivos, y toma decisiones basadas en el contenido de una base de datos local, un agente GUI que notifica al usuario en caso de una decisión de bloqueo, un servicio en segundo plano para sincronizar la configuración con un servidor remoto, y una utilidad de línea de comandos para gestionar el sistema.
Se llama Santa porque realiza un seguimiento de los binarios que son traviesos o buenos.
La documentación de Santa está almacenada en el directorio Docs y se publica en https://northpole.dev.
La documentación incluye opciones de despliegue, detalles sobre cómo funcionan algunas partes de Santa e instrucciones para desarrollar Santa en sí.
Si tienes preguntas o necesitas ayuda para comenzar, el canal #santa en el slack de macadmins es un excelente lugar para empezar.
Si crees que tienes un error, no dudes en reportar un issue y responderemos tan pronto como podamos.
Si crees que has encontrado una vulnerabilidad, por favor lee la política de seguridad para reportar la divulgación.
Múltiples modos: En el modo MONITOR predeterminado, se permite ejecutar todos los binarios excepto aquellos marcados como bloqueados, mientras se registran y guardan 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, todos los lanzamientos de binarios se registran. En cualquiera de los modos, todos los binarios desconocidos o denegados se almacenan en la base de datos para permitir una agregación posterior.
Reglas basadas en firmas de código, con niveles de anulación: En lugar de depender del hash (o 'huella digital') de un binario, los ejecutables se pueden permitir/bloquear por su firma de código (mediante reglas CDHash, Certificado, TeamID o SigningID). Puedes por tanto permitir/bloquear todos los binarios firmados por un editor o todas las versiones de un binario firmado. Las reglas se aplican en orden de más específico a menos específico, lo que te permite permitir todos los binarios de un editor determinado mientras bloqueas un ID de firma o binario específico (o viceversa).
Reglas basadas en rutas (mediante NSRegularExpression/ICU): Esto permite una funcionalidad similar a la que se encuentra en Managed Client (el precursor de los perfiles de configuración, que usaba el mismo mecanismo de implementación), Restricciones de Lanzamiento de Aplicaciones mediante el binario mcxalr. Esta implementación conlleva el beneficio adicional de ser configurable mediante regex, y no depender de LaunchServices. Como se detalla en la wiki, al evaluar reglas esta tiene la menor precedencia.
Reglas de certificados a prueba de fallos: No puedes crear una regla de denegación que bloquee el certificado utilizado para firmar launchd, también conocido como pid 1, y por tanto todos los componentes utilizados en macOS. Los binarios de cada actualización del sistema (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 puedes bloquear el propio Santa.
Los componentes del espacio de usuario se validan entre sí: cada uno de los componentes del espacio de usuario (el daemon, el agente GUI y la utilidad de línea de comandos) se comunican entre sí mediante XPC y comprueban que sus certificados de firma sean idénticos antes de aceptar cualquier comunicación.
Caché: los binarios permitidos se almacenan en caché, de modo que el procesamiento necesario para realizar una solicitud solo se realiza si el binario no está ya en caché.
Ningún sistema o proceso único detendrá todos los ataques, ni proporcionará seguridad al 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, otorgando al malware credenciales, o permitiendo que software desconocido extraiga más datos sobre tu sistema. Como componente gestionado centralmente, Santa puede ayudar a detener la propagación de malware entre una gran flota de máquinas. De forma independiente, Santa puede ayudar a analizar qué se está ejecutando en tu computadora.
Santa es parte de una estrategia de defensa en profundidad, y deberías continuar protegiendo los hosts de cualquier otra forma que consideres 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 mediante DYLD_INSERT_LIBRARIES. Otras partes de
macOS normalmente protegerán contra estas vías, siempre que SIP esté habilitado.
Scripts: Santa está actualmente escrito para ignorar cualquier ejecución que no sea un binario. Esto se debe a que después de sopesar el costo administrativo 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 de permitidos y no hacerlo causaría problemas. Estamos encantados de reconsiderar esto (o al menos convertirlo en una opción) si fuera útil para otros.
Santa puede sincronizar su configuración y políticas con un servidor de gestión, lo que permite cambios de configuración muy rápidos.
Hay varios servidores comerciales y de código abierto disponibles:
Alternativamente, las reglas se pueden configurar localmente usando la
clave de configuración StaticRules
o usando el comando santactl rule.
Una herramienta como Santa realmente no se presta a capturas de pantalla, así que aquí tienes un video en su lugar.
Los parches para este proyecto son muy bienvenidos. Consulta el documento CONTRIBUTING.
North Pole Security y North Pole Security Santa no están afiliados con Google.