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.
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.