Ponte al mando de Gatekeeper

El firmado del código es una tecnología introducida en Mac OS X 10.5 Leopard y disponible en todas las versiones posteriores de OS X que asegura la integridad del código y permite reconocer al sistema operativo el software como original (y no modificado). Una vez que el código ha sido “firmado” cualquier cambio en el mismo (ya sea modificado por el usuario o por Hackers) puede ser detectado por el sistema y en el mejor de los casos, el usuario ve alterada su rutina por una serie de cuadros de diálogo que le solicitan permisos para el acceso al llavero, e incluso problemas en la misma aplicación para interactuar con otras aplicaciones. Antes de llegar a este punto, a la hora de ejecutar una aplicación por vez primera, el sistema busca, lee y contrasta el firmado de código de la aplicación que está asociado a la ID de un desarrollador de forma que si ocurre algo con la aplicación, haya un responsable detrás del problema. Las aplicaciones que no están firmadas simplemente no pueden ejecutarse o si se quieren ejecutar, hay que seguir un proceso alternativo para lanzarlas.

Gatekeeper depende del panel de control de Seguridad y privacidad en Preferencias del Sistema y tiene tres opciones definidas para la ejecución de aplicaciones:

  • Mac App Store: aplicaciones descargadas desde la Mac App Store, que vienen firmadas por la tienda y además, por sus desarrolladores correspondientes. Estas aplicaciones cumplen con criterios de seguridad adicionales como la prohibición de acceder a archivos del sistema o ser ejecutadas en modo sandbox, que impide que accedan (o que se acceda) al código de otras aplicaciones.
  • Mac App Store y desarrolladores identificados: se permite la ejecución de las aplicaciones de la Mac App Store y de desarrolladores que han firmado el código de las aplicaciones de forma que si hay un problema, hay una persona o empresa detrás de la aplicación. Por ejemplo, las aplicaciones de Adobe o Microsoft para Mac no se comercializan en la Mac App Store pero si tienen su código firmado y por lo tanto, son reconocidas por el sistema gracias a una cadena de confianza de certificados y por lo tanto es factible abrirlas sin recibir un cuadro de diálogo.
  • Cualquier sitio: Se pueden instalar aplicaciones de cualquier sitio, firmadas, sin firmar… esta opción está exclusivamente disponible para aquellos usuarios que tienen muy claro el esquema de seguridad, qué aplicaciones descargan y por qué las instalan y por defecto, no debería utilizarse de forma habitual.

Aun trabajando con las dos primeras opciones seleccionadas en el panel de control, es posible sobrepasar para una aplicación específica este comportamiento seleccionando la misma, invocando el menú contextual y seleccionando la opción abrir. El sistema nos preguntará si esa aplicación es de confianza y si pulsamos en Aceptar, permitirá la ejecución de la aplicación.

Gestionando Gatekeeper desde el Terminal

Gatekeeper también se puede gestionar desde el Terminal utilizando spctl. Puedes consultar el manual de spctl en la web de Apple para desarrolladores, o en el propio terminal usando man spctl, pero los comandos más habituales que vas a usar son:

spctl --master-enable

Que activa Gatekeeper. También puedes desactivar esta protección con:

spctl --master-disable

Para conocer el estado de Gatekeeper, si está apagado o encendido, usaremos:

spctl --status

Ahora vamos a complicar más la cosa para saber si una aplicación está en la lista de Gatekeeper y por lo tanto, puede ser ejecutada:

spctl -a /Aplicaciones/nombre_de_la_aplicación.app

Si la aplicación pasa el corte no recibirás respuesta, pero si no está en la lista, recibirás una línea de texto que incluye un “error desconocido” (unknow error).

Vamos a profundizar un poco más gestionando las reglas de Gatekeeper.

Es factible añadir una regla para la ejecución de una aplicación que por ejemplo ,no viene con el código firmado añadiéndole una etiqueta a la aplicación que luego nos sirva para gestionar la lista de aplicaciones mucho más eficientemente, por ejemplo, para probar una aplicación sin firmado de código y luego, retirarla de nuevo.

Para añadir la aplicación usaremos

spctl --add --label "etiqueta" /Aplicaciones/nombredelaaplicación.app

para luego activarla

spctl --enable --label "etiqueta"

O desactivarla:

spctl --disable --label "etiqueta"

A la hora de conocer la lista de aplicaciones que está gestionando Gatekeeper usaremos:

spctl --list

O para aquellas aplicaciones etiquetadas por nosotros:

spctl --list --label "etiqueta"

Podemos también borrar una aplicación de la lista de Gatekeeper usando la correspondiente etiqueta:

spctl --remove --label "etiqueta"

o si conocemos que aplicación es al respecto de las reglas establecidas, usar:

spctl --remove --rule <número>

que es el número que aparece al principio de cada regla en la lista de reglas cuando solicitamos un listado de todas ellas.

Sin embargo, borrar una regla no es suficiente.

Lo que ocurre cuando aprobamos una aplicación par ejecución es que, además de ser añadida a Gatekeeper, se eliminan los atributos asociados a la aplicación para que no se ejecute: una cuarentena. Esos atributos hay que devolverlos en el caso de que la aplicación vaya a seguir en nuestro ordenador usando:

xattr -w com.apple.quarantine [string] /Aplicaciones/aplicación.app

Donde string es el atributo de cuarentena de otra aplicación que está bloqueada para su ejecución.

Reactivación automática

En OS X 10.10 Yosemite y sistemas posteriores (El Capitan y posiblemente en futuras versiones de OS X), Gatekepper se reactiva 30 días después, con la opción de Mac App Store y desarrolladores identificados.

Tanto las aplicaciones de la Mac App Store como las de los desarrolladores identificados vienen firmadas con un certificado que corresponde a una cuenta de desarrollador, por lo que una aplicación maliciosa “firmada” tiene una persona detrás a la que acudir o denunciar (aunque se han dado casos de cuentas falsas con tarjetas falsas).

Captura de pantalla 2015-08-02 a las 10.04.06

El caso es que Gatekeeper se reactiva solo si habías activado la opción “cualquier sitio”.

La reactivación es parte de syspolicyd, un daemon que gestiona las políticas del sistema al respecto de qué puede ser instalado, cargado, ejecutado o utilizado por el sistema y gestiona la base de datos de políticas del sistema además de funcionar como un oráculo al respecto de que pueden hacer otros componentes del sistema.

Esta política, sin embargo, se puede desactivar para que Gatekeeper no se rearme a los 30 días con un comando de Terminal para crear una preferencia específica:

defaults write /Library/Preferences/com.apple.security GKAutoRearm -bool false

Para reactivar el comportamiento, deberemos cambiar false por true.

Esto permitiría elegir la opción Cualquier sitio y que se mantuviera seleccionada aunque pasen 30 días.

0 0 votos
Article Rating
Subscribe
Notify of
0 Comments
Opiniones Inline
Ver todos los comentarios
0
Me encantaría saber tu opinión, por favor, deja un comentariox
()
x