Introducción a los sistemas embebidos

Publicado el 08/02/2018, por INCIBE
Introducción a los sistemas embebidos

El número de sistemas embebidos, también llamados empotrados, desplegados en el mundo alcanza los 10.000 millones, una cifra que sigue creciendo día a día. Los sistemas embebidos no solo están desplegados en la industria, sino que afectan a cualquier faceta de nuestra vida, ya que gran cantidad de equipos de uso diario integran estos sistemas, como coches, ascensores, juguetes, etc.

-Descripción de un sistema embebido (nivel físico)-

Se suele tener la creencia de que los sistemas embebidos son sistemas cerrados que carecen de interfaces con el usuario o con otros dispositivos, cuando realmente son equipos totalmente funcionales cuyo objetivo es ejecutar tareas de control. Otra creencia muy extendida es pensar que todos los sistemas embebidos son sistemas de tiempo real, cuando en realidad, no requieren esta característica por defecto. Básicamente, un sistema embebido se caracteriza por dos funcionalidades:

  • Fiabilidad: Deben ser capaces de funcionar de manera ininterrumpida en modo desatendido.
  • Personalización: Deben posibilitar la modificación del sistema de acuerdo a las necesidades del proceso.

-Componentes de un sistema embebido (nivel lógico)-

El mayor problema de los sistemas embebidos es que, por norma general, están diseñados sin seguridad, ofreciendo una conectividad sin límites y las medidas protectoras que ofrece el mercado son muy escasas.

Los sistemas operativos embebidos

Los primeros sistemas embebidos se basaban exclusivamente en el procesador (microcontrolador), sin un sistema operativo y con las instrucciones grabadas directamente sobre él. Cuando el procesador quedaba obsoleto, el dispositivo también, y con ello la programación.

-Arquitectura de sistema embebido tradicional (izqda.) y otro basado en sistema operativo (drcha.)-

Fue ya en los años 80 cuando surgieron los primeros sistemas embebidos con sistema operativo, sobre todo para cubrir las necesidades de comunicación, independizando las aplicaciones del hardware y permitiendo la reutilización de librerías. Las características de los sistemas operativos modernos incluyen (aunque no todos los sistemas embebidos las usen):

  • Interfaz gráfica con el usuario
  • Implementación de pilas de protocolos
  • Soporte para almacenamientos externos, como USB.

-Listado de sistemas operativos de sistemas embebidos-

Los sistemas operativos de propósito general también han penetrado en los sistemas embebidos, y con ellos las debilidades que los acompañan. De esta manera, debilidades de librerías externas o propias de los sistemas Linux y Windows pueden suponer problemas para los dispositivos que controlan. ¿Imaginas un sistema embebido bloqueado por una ventana azul de Windows? Podría llegar a ocurrir, pero lo normal es que la visualización vaya por un lado y el control por otro, de manera que aunque no se pueda mostrar información en la pantalla, el proceso se siga ejecutando de manera correcta.

Principales problemas de seguridad

Como sucede con la mayoría del equipamiento industrial, los sistemas embebidos están pensados para ser seguros a nivel físico, incorporando medidas de reinicio en caso de fallo (watchdog), partes hardware duplicadas, programación inmune a fallos, etc.; Pero, ¿qué pasa en relación a la ciberseguridad?

-Fallo del sistema embebido en un panel informativo-

Algunas de las debilidades de los sistemas embebidos que afectan a la ciberseguridad a nivel lógico que se pueden encontrar son:

  • Compartición de secretos: En muchas ocasiones, determinada información sensible, como contraseñas, se comparten entre las aplicaciones propias del fabricante para que se comuniquen más fácilmente unas con otras. Esta compartición permitiría a un potencial atacante por acceder con un mismo usuario a múltiples aplicaciones.
  • Certificados privados: para muchos servicios se utilizan certificados autofirmados que no disponen del respaldo de entidades de confianza, bajando el nivel de seguridad de los servicios. El uso de estos certificados puede ser aprovechado por un atacante, utilizando otros generados de forma específica y permitiéndole realizar acciones en el dispositivo o engañar al usuario.
  • Contraseñas embebidas y puertas traseras: Suelen ser dos características muy habituales. El fabricante incluye contraseñas embebidas impidiendo que puedan ser modificadas con el paso del tiempo y haciendo que en todos los clientes se utilicen las mismas. Las puertas traseras les permiten a los fabricantes el acceso a los dispositivos embebidos sin tener en cuenta los posibles cambios que haya realizado el cliente.  El aprovechamiento de estas debilidades por un atacante le permitiría obtener información del dispositivo o incluso llegar a tomar su control.
  • Fallos de código libre: Muchas partes de código de los sistemas embebidos se basan en rutinas o procedimientos reutilizados, muchas veces incluso código libre. Este código no suele revisarse y puede provocar fallos, bien con otras partes del sistema o por debilidades en su programación. Estos fallos pueden ser aprovechados por los atacantes como puntos de entrada para ataques más evolucionados.
  • Criptografía débil o inexistente: Los métodos de cifrado utilizados suelen ser escasos. El uso de comunicaciones cifradas solo se utiliza en las últimas versiones más avanzadas, mientras que las versiones más sencillas disponen de comunicaciones tipo Telnet y HTTP con sus carencias ampliamente conocidas. Esta limitación permitiría a un potencial atacante capturar e interpretar el tráfico intercambiado entre dos dispositivos, pudiendo conseguir información sensible del dispositivo.
  • Autenticación débil o inexistente: La autenticación de los dispositivos suele basarse en un código PIN (como los móviles) o directamente no disponer de ningún tipo de control de accesos. Un potencial atacante podría utilizar métodos de fuerza bruta sin demasiados problemas para conseguir el acceso a los dispositivos o aplicaciones.
  • Explotación del software servidor (HMI, gestión, web): Algunos de los servicios ofrecidos se hacen en modo cliente-servidor, siendo el servidor el dispositivo embebido. Estos servicios pueden ser vulnerables a ataques de tipo XSS, inyección SQL, etc. El aprovechamiento de estas debilidades por parte de un atacante podría suponer una denegación de servicio del dispositivo o la ejecución de código remoto, con los consiguientes problemas para el operador.
  • Comunicaciones entrada/salida: Los puertos de comunicaciones con el exterior son los puntos más débiles de los sistemas embebidos. De forma general, no puede deshabilitarse su uso, de manera que todos los puertos disponibles están siempre disponibles aunque no se usen para nada. Los puertos que no se encuentran en uso por las necesidades del dispositivo pueden ser aprovechados por un potencial atacante como punto de entrada al dispositivo para tratar de tomar su control.
  • Explotación de la lógica en escalera: La propia programación del bucle de control que realiza no suele estar adecuadamente protegida, de manera que puede modificarse para realizar pasos diferentes a los desarrollados por el fabricante. Un potencial atacante podría obtener y modificar la programación del dispositivo, haciendo que éste realice unas acciones diferentes poniendo en riesgo todo el proceso, incluso vidas humanas y el medio ambiente.
  • DoS y DDoS: Son la consecuencia más típica ante cualquier ataque. Estos dispositivos no suelen contar con control de tramas de red o similar, de manera que una petición reiterada de información puede llegar a saturar los canales de comunicación. Pero no solo las comunicaciones pueden provocar estas interrupciones, otros fallos de diseño dentro de las aplicaciones, como no normalización de los datos de entrada del usuario, también pueden finalizar en denegaciones de servicio.

A todas estas debilidades lógicas hay que sumarle las posibles opciones físicas, ya que la apertura del dispositivo para su análisis y posterior ataque siempre está ahí. Estos sistemas embebidos no suelen disponer de mecanismos de detección de apertura, así como tampoco de eliminación de puertos de test utilizados en la fase de diseño del hardware.

Las razones para aplicar medidas de seguridad a los sistemas embebidos son muchas. Del lado del fabricante caen algunas, sobre todo las relacionadas con aspectos físicos; pero por el lado del usuario también se pueden hacer cosas para mejorar la seguridad. Por ello, con este artículo abrimos una serie que nos guiará sobre las medidas de bastionado sobre sistemas embebidos con sistemas operativos de propósito general como Linux o Windows.