Menú principal

martes, 18 de febrero de 2014

El Hacking de Apple TV que se tapó con Certificate Pinning

Hace algunos meses, David Schuetz (@DathNull) de IntrepidusGroup descubrió una vulnerabilidad en el Apple TV que causó bastante revuelo cuando fue presentada en la DerbyCon en la chala "Raspberry Pi, Media Centers y Apple TV" que podéis ver en el siguiente vídeo.  Dicha vulnerabilidad permitía a un usuario añadir sus propias aplicaciones en su Apple TV. Sin embargo unos días más tarde Apple solucionó el problema, al menos aparentemente.

Figura 1: Raspberry Pi, Media Centers & Apple TV

Lo que David Schuetz descubrió decompilando el binario de Apple TV fue que mediante cierto perfil de configuración era posible habilitar una característica “oculta”, denominada AddSite, que permitía a un desarrollador añadir un puntero a sus propias aplicaciones para ser cargadas por el sistema operativo de Apple TV. Esta funcionalidad, que originalmente aparecía como un botón en blanco, no difiere en absoluto de otras aplicaciones salvo en que está oculta por defecto y necesita una determinada configuración para poder utilizarse.

Poco después de la DerbyCon, sin embargo, se descubrió que esta funcionalidad ya no estaba disponible en Apple TV. El motivo era que Apple había modificado el archivo StoreFront, un fichero en formato XML que incluye información sobre todas las apps de la Apple TV, añadiendo un flag de versión mínima para la funcionalidad AddSite. De esta manera se establecía como versión mínima la 6.0.

Figura 2: La actualización Apple TV 6.0.1 en Noviembre de 2013 no daba mucha info de qué arreglaba

A primera vista podría parecer que con actualizar a dicha versión se podría burlar esta protección de Apple, pero no es así. Apple añadió también la necesidad de disponer de un certificado válido, lo cual es un problema mayor.

En un principio se intentó solventar creando un certificado firmado por una CA de confianza. Esto se realiza mediante el framework ManagedConfiguration, que permite añadir un perfil de configuración a la Apple TV. Como todo está documentado, el proceso no es complicado. Llegados a cierto punto se descubre que un Extended Key Usage determinado debe estar presente en el certificado que usaremos para firmar el perfil.

Esto se puede falsificar con facilidad, pero aún hay una cuestión en el aire. ¿Qué comprobación se realiza para determinar si el certificado ha sido expedido por Apple? A continuación vemos el código del fichero SecPolicy.c, que es bastante revelador. 

Figura 3: Código del fichero SecPolicy.c
Se realizan básicamente tres comprobaciones: en primer lugar, todo lo relacionado con autenticación x509. En segundo lugar, que el Extended Key Usage es el correcto. Y por último, en el método AddAppleAnchor se comprueba un hash SHA1 para identificar a la CA que emitió el certificado que no puede ser cualquiera, sino una concreta de Apple, es decir, hace uso de Certificate Pinning. En este punto ya no se puede avanzar más.

Puesto que no se puede falsificar el certificado, si disponemos de una Apple TV versión 6.x no podremos de ninguna manera habilitar la opción AddSite. Por otra parte, si nuestra versión es 5.2 o 5.3 podemos crear el perfil adecuado para habilitarla, y después actualizar a 6.x, pero tampoco podremos hacer uso de la aplicación ya que Apple ha añadido comprobaciones adicionales que se ejecutan al intentar usar la función. Parece que en Apple han hecho bien los deberes y han tapado esta potencialmente peligrosa brecha de seguridad.

No hay comentarios:

Publicar un comentario

Entrada destacada

Proteger tu cuenta de Google y de Gmail con Latch Cloud TOTP #Latch #Gmail #Google

La semana pasada se liberó la nueva versión de Latch y nuestro compañero Chema Alonso hizo un repaso de todo ello en su artículo Latch...

Otras historias relacionadas

Entradas populares