Inicio / Blog / Modelo de seguridad OS X (I)

Modelo de seguridad OS X (I)

Publicado el 11/02/2016, por INCIBE
OS X (I)

Las medidas de seguridad de OS X se han ido incorporando a la base del sistema operativo de Apple mejorando funcionalidades a lo largo del histórico de versiones publicadas. Estas medidas conforman un modelo en capas que refuerzan el esquema básico de permisos típico POSIX y que constituye un mecanismo que abarca distintos aspectos de protección ante amenazas de seguridad. Veamos cómo trabaja este sistema.

Primera línea de protección: cuarentena y XProtect

OS X mantiene archivos bajo especial vigilancia marcándolos con un atributo que denomina “quarantine”. Este atributo opera desde Leopard OSX 10.5 y es asignado por determinadas aplicaciones al descargar ficheros de Internet.

Atributo quarantine de un fichero descargado de internet a través de Chrome

Atributo quarantine de un fichero descargado de internet a través de Chrome

Todo fichero marcado con el atributo de cuarentena generará una notificación para poner en conocimiento del usuario que, el fichero que intenta ejecutar, está descargado de internet.

Advertencia al abrir un archivo descargado de internet  en cuarentena

Advertencia al abrir un archivo descargado de internet  en cuarentena

Adicionalmente y desde Snow Leopard (OS X 10.6), Apple incorpora en su sistema operativo la tecnología XProtect, que podríamos identificar como un rudimentario antivirus basado en firmas. XProtect mantiene en un archivo plist la información y hashes de software malicioso conocido que utilizará para comprobar archivos en cuarentena. En el caso de detectar que el binario que se trata de ejecutar coincide con algunos de los registros mantenidos por XProtect, se alertará al usuario y se evitará su ejecución.

Alerta de XProtect

Alerta de XProtect

El archivo con las firmas de XProtect se ubica en /System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/XProtect.plist y tiene el siguiente aspecto

Registros de malware Xprotect.plist

Registros de malware Xprotect.plist

No obstante, tanto la cuarentena como XProtect son medidas insuficientes y de fácil evasión ya que, por una parte el atributo de cuarentena no se asigna a todos los ficheros sino que dependerá de la aplicación con que se obtenga (por ejemplo curl, desde la terminal de comandos, no fija el atributo) o del medio por el que se obtiene (copiado de otros medios de almacenamiento). Por otra parte, la detección de malware basado en firmas es claramente una medida de escasa fiabilidad pues cualquier mínima variación será suficiente para generar una firma distinta.

Pasaporte hacia la ejecución: firma de aplicaciones y GateKeeper

La verificación de firma con certificado ID Developer autorizado, se ha convertido en el principal mecanismo de seguridad empleado por la compañía de la manzana para determinar la legitimidad de una aplicación.

GateKeeper, es la funcionalidad presente desde Lion OS X v10.7.5 que se encarga de verificar que cualquier aplicación que se ejecute está debidamente firmada con un certificado reconocido y que no ha sido manipulada. Tiene tres niveles de seguridad que el usuario puede configurar:

  • Permitir aplicaciones únicamente del Apple Store (opción por defecto)
  • Permitir aplicaciones de Apple Store y desarrolladores reconocidos
  • Permitir la ejecución de cualquier binario (no recomendable)

Gatekeeper

Gatekeeper

Aunque GateKeeper es una medida mucho más eficaz que la cuarentena y XProtect, solo se aplica sobre los archivos marcados con el atributo quarantine lo que supone un problema de seguridad ya que como se ha señalado, este atributo lo fija la aplicación que lo descarga de internet (Safari, Mail, Chrome, etc.) y no el sistema operativo. De este modo, en el caso en que la aplicación que obtiene el archivo no establezca este atributo (por ejemplo curl o wget), el archivo descargado no será verificado por GateKeeper.

Cuando se intenta ejecutar por primera vez una aplicación marcada con el atributo de cuarentena, Gatekeeper dependiendo de la configuración, alertará al usuario y solicitará el permiso específico o el cambio en la configuración:

Autorización desde las preferencias de seguridad del sistema

Autorización desde las preferencias de seguridad del sistema

Tras aceptar la ejecución de una aplicación no reconocida aún se alertará de que se trata de un archivo descargado de internet (en cuarentena), solicitando la autorización para ejecutar:

Solicitud GateKeepe

Archivo en cuarentena, atributo com.apple.quarantine. Solicitud GateKeeper

Finalmente, una vez que se ha permitido expresamente la ejecución de un archivo en cuarentena, se produce una modificación en uno de los valores del atributo de modo que en las sucesivas ejecuciones no se pida confirmación:

Modificación en un valor del atributo quarantine

Tras la autorización de ejecución se observa la modificación en un valor del atributo quarantine

Desde su aparición, GateKeeper ha presentado muchos problemas de rigurosidad a la hora aplicar la verificación de contenidos externos invocados por la aplicación y que permitía entre otras cosas la inyección de librerías o la instalación de ficheros no autorizados. Aunque este y otros problemas de GateKeeper ya fueron parcheados por Apple en una actualización a mediados de 2015 para OS X 10.10.4 (Yosemite), siguen apareciendo pruebas de concepto que evaden la verificación de firma,como la presentada poco tiempo después por el investigador Patrick Wardle par evadir la protección de GateKepper en una versión actualizada y parcheada de OS X.

Una barrera más de protección: sandboxing

Para complementar esta primera línea de defensa representada por la cuarentena y la verificación de GateKeeper aparece el sandboxing, que presenta otra barrera (en este caso reactiva) que restringe el alcance de una aplicación a un entorno limitado.

La tecnología de sandbox utilizada en OSX se basa en un sistema de control MAC (Mandatory Access Control) similar a SELinux o AppArmour para Linux, pero en este caso derivado del equivalente en BSD,  trustedBSD.

Bajo esta tecnología, una vulnerabilidad en una  aplicación que se ejecuta en sandbox tendrá consecuencias limitadas al entorno de ejecución de la misma, al restringirse la interacción con otros recursos distintos a los que se le han asignado.

Tecnología de aislamiento o sandboxing

Tecnología de aislamiento o sandboxing. Fuente:developer.apple.com

A través de sandboxing, OS X aísla aplicaciones propietarias con alto riesgo de ataque como Safari o Mail, Mensajes, FaceTime, Calendario, Contactos, Fotos, Notas, Recordatorios y por supuesto, el Mac App Store.

ocalización de procesos en sandbox a través del activity monitor

Localización de procesos en sandbox a través del activity monitor


Una aplicación se ejecutará en sandbox si en su código se incluyen las directivas ( entitlements) que aplicarán sobre acciones o recursos al ejecutarse.

Detalle de una aplicación desarrollada en sandbox

Detalle de una aplicación desarrollada en sandbox. Obsérvese el "entitlement" sandbox

Aunque el sandboxing no es obligatorio para ejecutar aplicaciones en OS X, si representa un requisito obligatorio para poder distribuirse en la Mac App Store. Aun así, si en el código de la aplicación no se han aplicado restricciones, aún es posible circunscribir su ejecución a un entorno de sandbox a través del comando sandbox-exec.

Seguridad de base: POSIX y Keychain

Tras GateKeeper, XProtect y App Sandboxing encontramos una barrera más de seguridad, representada por los tradicionales permisos y atributos POSIX. La estructura de permisos usuario:grupo sobre ficheros y directorios del sistema mantienen el tradicional mecanismo de seguridad DAC (Discretionary Access Control) con un esquema de permisos que únicamente podrían ser superados con una elevación de privilegios. Complementariamente a toda la arquitectura de seguridad de OS X, Apple implementa la tecnología Keychain, a la que se le delega la gestión de almacén y protección de las contraseñas, certificados y claves mediante el uso de criptografía. La utilización de Keychain de forma apropiada permite una gestión segura y centralizada de contraseñas y acceso a las mismas a aplicaciones y usuarios.

Modelo de Seguridad OSX

Modelo de Seguridad OSX

¿Root o rootless?

Sin embargo a pesar de todas estas barreras, si un ataque consigue superar la seguridad y elevar privilegios para posicionarse como root, el juego está acabado. ¿Debe restringirse el poder de root? ¿Es admisible denegar al propietario del sistema el control absoluto del mismo?

Todas estas preguntas cobran más sentido con la aparición de la última versión de OSX 10.11 (El Capitán) y su System Integration Protection, también conocido como rootless que viene a añadir una nueva medida de seguridad a este modelo. En un próximo artículo se presentará la tecnología SIP y lo que supone para la seguridad del sistema.