Sistemas operativos cerrados y ocultos en el interior de tu Android
Cuando hablamos de smartphones generalmente asumimos (en nuestro caso) que se trata de Android como principal sistema operativo. Pero lo que muchas veces se nos pasa por alto es que no se trata del único sistema que se encuentra en el móvil.
La electrónica y construcción de nuestro smartphone es un proceso sumamente complejo en la que intervienen multitud de aspectos. A pesar de ello solemos imaginarnos que todo se reduce básicamente a un solo sistema operativo con sus aplicaciones corriendo sobre él y movido por un hardware concreto.
Sin embargo, sin el conocimiento de la mayoría de usuarios, casi todos los equipos tienen múltiples sistemas operativos funcionando al mismo tiempo. Y lo preocupante es que estos además de que no suelen ser libres, contienen errores que pueden poner en riesgo nuestros datos.
Modems y la segunda CPU
Cuando el smartphone está encendido y se envía un texto o se recibe una llamada se encarga al sistema operativo que interprete ciertos protocolos y transmita paquetes de información al operador correspondiente.
Los móviles de hoy en día soportan multitud de complejos protocolos tales como los GSM, 3G, HSDPA, LTE… todos ellos requieren de una cantidad significativa de capacidad de procesamiento para funcionar. Esta potencia sin embargo no está proporcionada solo por la clásica CPU que también dota de energía al resto del equipo.
Si lo enfocamos desde un punto de vista de la eficiencia del sistema, veremos que hay muchos computadores que trabajan con núcleos y CPUs en paralelo. Y aquí es donde entran las CPUs secundarias que se encuentran en el interior de las tarjetas SIM o de los modems de nuestro Android.
Estas CPUs son los llamados procesadores de banda base (baseband processors). Básicamente chips encargados de gestionar las funciones de radio (todas aquellos que requieren una antena). No hablamos necesariamente del Wi-Fi o Bluetooth, pero sí de las comunicaciones de datos. Estos procesadores de banda base utilizan su propia memoria RAM y firmware. Y los nombres de sus fabricantes nos son algo conocidos; Qualcomm, Mediatek e Infineon.
La razón para crear un procesador de banda base separado del procesador principal se basa principalmente en tres razones.
Rendimiento
La radio controla las funciones de señal modulada, codificación y variación de la frecuencia. Estas dependen en gran medida del tiempo y requieren un sistema operativo en tiempo-real como en seguida veremos. Estos algoritmos de procesamiento de la señal digital son muy variables pero también muy específicos. Por lo que una CPU low-cost que no requiera altos requisitos y/o una gran batería ofrecerá una baja latencia y un rendimiento suficientemente elevado, ideal para esta tarea.
Legal
Algunas autoridades como por ejemplo la Federal Communications Commission (FCC) requieren que la parte del software que se comunica con la red esté certificada. Separando la CPU y el sistema del modem en distintos componentes permite obtener esta certificación sin tener que hacerlo con todo el procesador principal.
Seguridad
Utilizar una CPU distinta de la principal para encargarse de la radio permite la independencia de esta de los cambios que puedan existir en las distintas versiones de Android. Lo que se traduce en una mayor seguridad y estabilidad.
Los hay de muchos tipos, pero estos procesadores de banda de base suelen ser principalmente ARM, no los potentes Cortex-A15 sino una gama especialmente diseñada para ofrecer un alto rendimieto en sistemas integrados. La serie Cortex-R es la idónea para estas CPU secundarias y ya se ofrece en cientos de millones de productos, básicamente en casi todos los dispositivos móviles de hoy en día. ARM sabe que cada componente requiere ciertas especificaciones y tiene muy en cuenta a los Cortex-R tanto para sus planes de desarrollo como de soporte continuo.
Sistemas operativos propietarios
Las CPU de estos chips necesitan una serie de software concreto para realizar sus diversas funciones. Este software constituye un sistema operativo completo diseñado para trabajar en estas condiciones de recursos mínimos. Ocupan solo unos cientos de kilobytes y manejan cantidades muy pequeñas de memoria, son los llamados Real Time Operating Systems (RTOS).
Tenemos entonces al final una CPU ARM, algo de memoria y unos cuantos procesadores de la señal digital embutidos en un chip dentro de cada modem, que a su vez está dentro de cada smartphone. Estos se encargan de controlar el software del GPS, GLONASS, de la radio, de la USIM y de todas las especificaciones 3GPP.
Este software se maneja a través de unos sistemas operativos de tiempo real que son bastante desconocidos. Los fabricantes que hay detrás no tienen intención de publicar una documentación detallada y al alcance de cualquiera, por lo que ha resultado bastante difícil dilucidar algo concreto acerca de estos sistemas privativos. Intentaremos en la medida de lo posible arrojar un poco más de luz acerca de un par de ellos.
Nucleus
El primer RTOS del que hablaremos es Nucleus, un conjunto de herramientas creado por la Embedded Systems Division of Mentor Graphics compatible con varias plataformas. Nucleus es un software integrado en más de 3000 millones de dispositivos (año 2010), una cantidad enorme pero lógica si pensamos la cantidad de dispositivos móviles que hay en circulación.
Desarrollar para este sistema se hace a través de Windows o Linux y las aplicaciones se compilan para ser utilizadas en todo tipo de dispositivos, no solo móviles, también electrónica de consumo y dispositivos como auriculares o micrófonos. Es compatible con procesadores ARM Cortex-M3/M4 y puede llegar a ocupar tan solo 13KB.
Nucleus se utiliza para acceder a los sensores que controlan el Bluetooth, el USB Host, OTG, la trasferencia multimedia MTP y hasta el sistema de archivos FAT o el CD-ROM. PCI, PCI-X y hasta 60 drivers y protocolos distintos como son los TCP/IP o el wifi IEEE 802.11. Un RTOS con una amplia compatibilidad que encontramos en lugares muy dispares.
Desde la industria de la aviación, pasando por los GPS Garmin hasta dispositivos más comerciales como videocámaras de Logitech, procesadores de Mediatek, la extinguida gama Creative Zen, un número enorme de móviles de hace años de LG, Samsung, Motorola o Siemens y también en el Infineon S-Gold2 que se utiliza en el procesador de banda base del Iphone que cuesta unos 13 dólares.
Desafortunadamente, el sistema Nucleus tiene el código cerrado. Y la fuente solo está disponible, en forma de binarios, para unos cuantos desarrolladores que quieran corregir bugs.
REX OS
Quizás el mejor ejemplo de RTOS sea REX OS, el kernel creado y soportado por Qualcomm desde 1999. Hay ciertos indicios de que Qualcomm substituyó este sistema el año pasado por otro más avanzado, pero a falta de información detallaremos el antiguo código que ha sido el sistema de los procesadores de banda de base ARMv5 desde hace muchos años.
El sistema se llama REX por Real-Time Executive y está basado a su vez en el micro-kernel de licencia libre L4 y el sistema operativo Iguana. REX es simple, con un código fuente conciso y muy rápido a la hora de compilar programas pequeños.
Las tareas principales son la creación y manejo de funciones, señalizaciones de tiempo e interrupciones y comunicación entre funciones. Con estos parámetros básicos tenemos un kernel que funciona en un procesador simple. Además cuenta con una característica principal, en el momento en que una tarea tiene prioridad, se interrumpe cualquiera otra con lo que se consigue un sistema totalmente enfocado en la tarea que se realice como los protocolos de llamada, redes y demás utilidades que ya hemos nombrado con Nucleus.
Qualcomm mantiene el kernel REX de manera propietaria, a pesar de que esté basado en otros sistemas que sí son libres. El sistema operativo general se llama AMSS, trabaja con el framework BREW y se encarga de hasta 69 tareas distintas. Sistemas muy técnicos que quedan fuera de nuestro conocimiento general pero que nos sirven un poco más para entender como puede ser Gobi y los modems de Qualcomm como el MDM9625.
Google ofrece los binarios de sus dispositivos Nexus, pero al igual que ocurre con REX o Nucleus se guardan la oportunidad de poder trabajar con ellos libremente. Si descargamos alguno de esos binarios vislumbraremos el nombre de Qualcomm por ahí pero no conseguiremos gran cosa, básicamente errores.
La lista de RTOS es muy extensa, no todos ellos están centrados en chips de modems y telefonía, pero los fabricantes de dispositivos con ARM en su interior están muy al tanto de los Nucleus, REX, ThreadX, QP, QNX que están escondidos en el interior de nuestros Android. Para todos excepto para los propios creadores los entresijos de estos sistemas se nos mantiene ocultos, solo accesibles a base de aplicar ingeniería inversa.
Haberlos, haylos. Pero el material de código abierto que encontramos es muy reducido. Qualcomm ha semiliberado el SDK de su procesador de señal digital Hexagon por ejemplo pero la mayor parte de estos sistemas operativos de banda de base está cerrado y esto implica graves consecuencias.
Vulnerabilidades en la seguridad
Como seguramente estéis de acuerdo, un código cerrado que encima implanta estándares antiguos no es una muy buena idea. Sistemas y kernels como REX OS muchos veces funcionan de manera semi-automática, generando una respuesta predefinida y ejecutando un código concreto que no podemos manipular desde Android. Todas estas acciones se generan sin nuestro consentimiento ni conocimiento, pues forman parte de la microelectrónica del dispositivo.
Por la propia seguridad del sistema, los fabricantes ocultan las partes del código para que los programadores interesados no fisgoneen. Esta curiosidad es precisamente la que lleva a estos hackers a encontrar exploits en los RTOS y que permiten acceder luego a partes del smartphone más elevadas y en principio prohibidas.
En la práctica, estos sistemas operativos contienen una cantidad muy variable de errores. Y al ser sistemas privativos, son los propios ingenieros de la marca los que tienen el trabajo de solucionar todos los bugs. Como encima nadie tiene acceso legal a los dispositivos, normalmente hay pocas razones para mostrar documentación pública sobre como el sistema funciona. ¿Cómo certificar entonces su seguridad? Básicamente a través de terceros.
La tendencia afortunadamente parece que está cambiando, y los procesadores de banda de base están abrazando soluciones open source. Tenemos por ahí algún intento libre como OKL4 o FreeRTOS.
Qualcomm, el mayor fabricante de todos los nombrados, no parece por la labor de compartir sus avances. El modo de proceder se remonta a la época de los ochenta, cuando el compartir la información era algo común y la vía de acceder al código fuente era hackeándolo, lo que programadores como Guillaume Delugre han hecho con REX OS.
Delugre pudo comprobar lo que hace unos años el investigador en seguridad Ralf-Philipp Weinmann publicó en su libro «Baseband apocalypse». Si hay bugs y vulnerabilidades, hay problemas de seguridad y puertas traseras. Y los RTOS secundarios de los chips de Qualcomm o Infineon actualmente presentan una gran probabilidad de ser explotados por código malicioso externo por aquellos con conocimiento suficiente.
Un poco de luz en el interior de nuestro Android
El interior de nuestro smartphone estará seguro mientras se quede en su sitio. Pero tenemos unos procesadores de banda de base masivamente utilizados y muy poco conocidos. Con toda la conmoción que ha habido con las escuchas procedentes de organizaciones gubernamentales no deberíamos sorprendernos si el tema de la seguridad de estos chips preocupa hasta a la industria aeroespacial.
Esperamos que a medida que este software vaya convirtiéndose en algo más complejo no aumenten ni el número de bugs ni su oscurantismo. Necesitamos seguridad en nuestros dispositivos, y al menos la sensación de ella se consigue con una información pública y clara.
Hemos intentado recopilar y resumir la información encontrada. Pero sería de gran ayuda si entre todos pudiéramos arrojar un poco más de información a un tema que presenta tantos claroscuros y que tiene un rol principal en nuestra seguridad.
Fuentes: Android Authority / ARM / Dan Williams / Extremetech / OSNews