La seguridad es un tema esencial hoy día en cualquier sistema, y está claro que por mucho que las compañías inviertan o se esfuercen en mejorarla, no es suficiente pues ningún sistema es 100% seguro por definición. Por eso, compañías como Microsoft, Facebook o Google tienen programas de recompensa de seguridad para incentivar que los investigadores que encuentren fallos en los sistemas de estas compañías, los reporten a los responsables y con ello consigan una recompensa económica por dicho trabajo (más que merecida).
El problema está cuando las recompensas que se ofrecen están por debajo de lo que un error de seguridad grave cuesta en el mercado negro, y tal vez el investigador elija el mal camino y no el lado de la luz. Apple ya inauguró en agosto de 2016 un programa de recompensas, donde pagaba hasta $200.000 por determinados errores graves.
Pero el pasado 20 de diciembre Apple anunció que hacia público (para que cualquiera pueda participar) su nuevo programa de recompensas que ya adelantó en la pasada WWDC. Un programa que va acompañado de una renovación en todos sus documentos de seguridad con la publicación de la guía de otoño de 2019 de seguridad en plataformas Apple, que podéis consultar en este enlace.
Ha sido el jefe de arquitectura e ingeniería de seguridad en Apple, Ivan Krstic, quien ha anunciado el lanzamiento del programa, las recompensas finales y la nueva documentación de seguridad para toda la plataforma. Y aquí vamos a analizar el nuevo programa y qué significan cada una de sus categorías.
Lo que Apple pagará por los diferentes fallos será lo siguiente:
Tipo de servicio | Tipo de error de seguridad | Recompensa |
---|---|---|
Ataque con un dispositivo de forma física | Saltar la pantalla de bloqueo | $100,000 |
Extracción de datos de los usuarios | $250,000 | |
Ataque al dispositivo a través de apps instaladas por el usuario | Acceso no autorizado a datos sensibles | $100,000 |
Ejecución de código del Kernel | $100,000 | |
Ataque de "canal lateral" a la CPU | $250,000 | |
Ataque por red por interacción del usuario | Acceso no autorizado en un solo click a datos sensibles | $150,000 |
Ejecución de código en el kernel en un solo click | $250,000 | |
Ataque por red sin la interacción del usuario | Ataque sin clics por radio al kernel con proximidad al dispositivo físico | $250,000 |
Acceso sin clics a datos sensibles no autorizados | $500,000 | |
Ejecución de código en el kernel sin clics con persistencia y pasando el PAC del Kernel | $1,000,000 |
Vamos a explicar qué significa cada una de estos puntos en la tabla de una forma breve.
La lista se divide en cuatro categorías principales: la primera es atacar a un dispositivo que tengamos físicamente con nosotros y que podríamos incluso conectar por cable a un ordenador. De ahí tenemos dos categorías: conseguir desbloquear el dispositivo saltando su protección de datos o conseguir extraer información del mismo, válida y no autorizada, sin desbloquearlo o desbloqueándolo sin usar la forma habitual de desbloquearlo.
Así que básicamente con esta opción hablamos de desbloquear el dispositivo y/o acceder a sus datos sin conocer el código, sin una huella válida (caso TouchID) o una cara válida (caso FaceID).
La siguiente categoría nos habla de vulnerar la seguridad del dispositivo cuando el usuario se instala una app de forma intencionada. Esta app podría venir del App Store (es difícil pero no imposible que a Apple se le escape un fallo no conocido de seguridad en una app) o de repositorios de terceros que usan certificados Enterprise para apps de empresas y que piden que nos instalemos un perfil de configuración para autorizarlas. No hagamos esto nunca, por favor.
Estos fallos serían tres: acceso no autorizado a datos sensibles. También la ejecución de código a nivel de Kernel, que básicamente es saltar la comprobación de firma de código del dispositivo (lo que conocemos como jailbreak).
El código de cualquier app bajada del App Store está firmado digitalmente, pero si conseguimos que iOS no compruebe la firma de un código o la ignore, entonces podremos ejecutar cualquier cosa sin restricción alguna. Algo poco recomendable.
El último es el ataque a la CPU por canal lateral (o side channel). Básicamente es acceder a la CPU a través de un ataque indirecto, como leer los datos que guarda en una caché o información que puede guardar para sus cálculos.
Las dos siguientes categorías son fallos que permiten acceder al dispositivo desde un acceso a un recurso de red, pero que requiere la interacción del usuario. Como enviarle un SMS o un email fraudulento al usuario y que este pulse intencionadamente para acceder a una web trampa, creyendo que no va a pasar nada. Aquí tenemos dos tipos de fallos: acceso no autorizado a datos sensibles simplemente haciendo un clic en algo y de nuevo, ejecución de código a nivel kernel o circunvenir la firma de código (el jailbreak).
Hay fallos como los que se descubrieron y parchearon en iOS 9.3 (el llamado Tridente) que era un triple exploit que conseguía hacer jailbreak a un dispositivo simplemente visitando una página web concreta que explotaba un fallo de Safari y luego dos del sistema. Este primero de Safari que permitiría la puerta de entrada al sistema, sería uno de estos. Si conseguimos sacar datos o ejecutar código a nivel de kernel, recompensa.
La última categoría es la más peligrosa pues ni siquiera necesita la interacción del usuario. La primera, ataque sin clics por radio al kernel con proximidad al dispositivo físico, supone que nuestro dispositivo esté en la misma red WiFi, o al alcance del Bluetooth con este activado, por ejemplo.
El dispositivo al que queremos atacar nos aparecería como dispositivo en nuestra misma red y/o alcance y podríamos enviar comandos al mismo. Lo normal es que los rechace si no estamos autorizados, pero si conseguimos ejecutar código a nivel de kernel o pasar por un agujero de seguridad, solo con intentar acceder al dispositivo, tenemos un fallo muy grande.
En la misma situación tenemos la siguiente, aunque en este caso podría no tener que estar cerca físicamente... simplemente que sepamos su IP de conexión directa (por ejemplo). Si conseguimos acceder a datos sensibles no autorizados, bingo. Pero el premio gordo, el millón de dólares, está reservado al control total del dispositivo a través de red.
Para ello debemos ser capaces de pasar por alto el Kernel PAC o autenticación de puntero, un sistema que tienen los iPhone XS en adelante. Básicamente es que los punteros de la memoria están firmados digitalmente. Eso permite autenticar quién puso ahí esos punteros en memoria para que no sean modificados.
Si hay un dato en la memoria de un programa, pero yo soy un atacante que pongo otro dato malicioso en otro sitio, cambio el puntero en memoria y ahora el programa leerá mi dato creyendo que es el auténtico. Pero si el puntero está firmado criptográficamente, no se validará pues no ese puntero no tendrá una firma válida del programa que lo creó y mi "suplantación" no funcionará. Esto es una protección que tienen los procesos de Apple desde el A12, y que obviamente si conseguimos pasarlo nos proporcionará la recompensa máxima, sobre todo si lo conseguimos con un acceso por red y sin la interacción del usuario.
La seguridad, elemento esencial
Desde que los dispositivos pueden conectarse a una red y, por lo tanto, pueden ser vistos por otros, la seguridad es más importante que nunca. Antes, mi PC Olivetti 286, si tenía un fallo de seguridad me daba casi igual porque si alguien quería robarme algo debía estar sentado en mi máquina físicamente para hacer cualquier cosa maliciosa.
Obviamente, cada vez hay más dispositivos conectados, cada vez son más los datos que ponemos en ellos y "los malos" pretenden vulnerar los sistemas creados por las grandes compañías con técnicas cada vez más innovadoras y difíciles de detectar, por lo que "los buenos" necesitan ayuda porque por ellos mismos les es imposible detectar todos los errores. ¿Tiene esto solución? No. El software hoy día es tan complejo y son tantas las variables que tienen que ver con formas de atacar un sistema, que los expertos en seguridad siempre decimos de una forma clara, que es imposible que exista un sistema 100% seguro.
Que Apple mejore y amplíe este programa de recompensas, sin duda es una gran noticia. Si queréis saber más información, no dudéis en acceder a la página oficial del programa y si encontráis algún error, podréis reclamar vuestra recompensa que además va unida a un reconocimiento expreso a la persona o equipo que lo detecto en las notas de actualización del software.
Vía | Apple Security Bounty
Ver 4 comentarios