Blog

Por qué es importante la seguridad de extremo a extremo en los sistemas integrados

Secure Code Warrior
Publicado el 19 de agosto de 2021

Los sistemas integrados contribuyen a proporcionar mucha tecnología moderna. Desde el control de crucero adaptativo de su coche hasta el Wifi de su nevera inteligente. Con el aumento de los ciberataques, la seguridad de estos sistemas se ha convertido en algo fundamental.

Los dispositivos integrados son objetivos principales de la piratería informática, ya que un ataque exitoso puede dar a los intrusos acceso a los datos producidos, recibidos y procesados por ellos. Esto a menudo puede tener graves ramificaciones para el sistema más grande que está siendo alimentado por el dispositivo integrado. Por ejemplo, el cierre de un dispositivo integrado en un avión de combate F-15, que recoge datos de varias cámaras y sensores, puede dificultar considerablemente las defensas del avión.

Hemos escrito este artículo para cubrir todo lo que necesitas para empezar a desarrollar sistemas embebidos seguros. Esto es lo que se incluye: 

  • ¿Qué es la seguridad integrada?
  • Desafíos a los que se enfrenta la implantación de la seguridad integrada.
  • ¿Qué hace que un sistema integrado sea "seguro"?
  • Por qué es importante la seguridad de extremo a extremo en un ecosistema integrado.
  • Algunas herramientas de seguridad integradas.
  • ¿De qué carecen las típicas soluciones integradas?
  • El futuro de la seguridad integrada.

¿Qué es la seguridad integrada?

La seguridad integrada proporciona las herramientas, los procesos y las mejores prácticas para asegurar el software y el hardware de los dispositivos integrados. 

Dado que los módulos de hardware de los sistemas integrados son pequeños, tienen diversas limitaciones de memoria y almacenamiento. Por ello, incorporar medidas de seguridad en ellos se convierte en un enorme reto de diseño. Sin embargo, por difícil que sea, es una necesidad del momento.

Muchos de los aparatos y máquinas que funcionan con dispositivos integrados también están conectados a Internet. Esto significa que los hackers pueden obtener acceso no autorizado a ellos, y ejecutar cualquier código malicioso. 

Un hackeo en un dispositivo integrado a menudo puede extenderse a otros componentes conectados, y/o paralizar todo el sistema. Por ejemplo, supongamos que un atacante es capaz de obtener el control de un dispositivo integrado que permite a los conductores poner su coche en piloto automático. El hacker puede entonces dirigir el coche fuera de la carretera, o en el tráfico, causando potencialmente mucho daño.

Retos críticos de seguridad de los sistemas empotrados

La seguridad de los sistemas integrados no recibe la atención que merece. He aquí algunas razones:

  1. Falta de concienciación de los desarrolladores:

Los desarrolladores suelen desconocer las mejores prácticas para desarrollar dispositivos embebidos seguros. Esto se debe en parte al punto 2, y en parte a que las aplicaciones integradas son mucho más complicadas que las aplicaciones de software tradicionales. Entender sus implicaciones de seguridad y escribir un código seguro y eficaz para todos los casos de uso, además en un entorno microinformático limitado, puede ser todo un reto. 

  1. Falta de estandarización:

Faltan normas de ciberseguridad para los sistemas integrados. Aunque la industria automovilística está intentando poco a poco cambiar esta situación. En los últimos años, los investigadores han sacado a la luz bastantes publicaciones que abordan las consideraciones de ciberseguridad para los vehículos inteligentes. Algunas de las más destacadas son SAE J3061, "Cybersecurity Guidebook for Cyber-Physical Vehicle Systems:" y UNECE WP.29 Regulation on Cyber Security and Software Update Processes.

  1. Uso de componentes de terceros

Muchos dispositivos integrados requieren componentes de hardware y software de terceros para funcionar. A menudo, estos componentes se utilizan sin haber sido probados para detectar fallos de seguridad y vulnerabilidades. 

  1. Software obsoleto

Un firmware desactualizado suele estar plagado de errores y vulnerabilidades potencialmente explotables. Aunque puede ser especialmente difícil actualizar periódicamente el firmware en un dispositivo pequeño e integrado, no es algo que se pueda ignorar.

  1. Conectividad directa a Internet

Muchos sistemas y dispositivos integrados están conectados directamente a Internet. Esto significa que no cuentan con la protección de los cortafuegos empresariales, que pueden detectar y prevenir los ataques a la red. Como los recursos son escasos, resulta muy difícil aplicar niveles rigurosos de seguridad en un entorno tan limitado.

  1. Ataque a escala

Los dispositivos integrados suelen fabricarse a gran escala. Esto significa que una sola vulnerabilidad o fallo puede afectar a millones de dispositivos, a veces en todo el mundo. Contener el impacto de un ataque a un sistema embebido puede ser, por tanto, un reto enorme.

¿Qué hace que un sistema integrado sea seguro?

En las siguientes secciones, veremos algunas características de software y hardware de los sistemas empotrados seguros.

Mejores prácticas de seguridad del hardware

Un sistema empotrado seguro tiene:

  • Un entorno de ejecución de confianza

Un entorno de ejecución de confianza (TEE) permite aislar a nivel de hardware las operaciones críticas para la seguridad. Por ejemplo, la autenticación del usuario puede ejecutarse en un área segregada, lo que permite salvaguardar mejor la información sensible.

  • Recursos de hardware debidamente divididos

Los diferentes componentes de hardware, como los procesadores, la caché, la memoria y las interfaces de red, etc., deben estar adecuadamente segregados, realizando sus funciones de la forma más independiente posible. Esto ayuda a evitar que un error en un componente se propague a otros componentes.

  • Protección del espacio ejecutable (ESP)

La protección del espacio ejecutable, o ESP, es la práctica de marcar ciertas regiones de memoria como no ejecutables. Si alguien intenta ejecutar cualquier código dentro de estas regiones marcadas, se lanza una excepción.

Mejores prácticas de seguridad del software

A la hora de crear software embebido hay que tener en cuenta las siguientes buenas prácticas:

  • Utiliza el arranque seguro:

Cuando un dispositivo integrado arranca, la imagen de arranque se verifica mediante algoritmos criptográficos. Esto garantiza que la secuencia de arranque es correcta y que el software (firmware y cualquier otro dato relevante) no ha sido manipulado. 

  • Utilizar un sistema operativo de micronúcleo

Un SO de micronúcleo es mucho más pequeño que un SO tradicional y contiene un subconjunto de sus características. El espacio del kernel es minúsculo, y muchos servicios de usuario (como la gestión del sistema de archivos, etc.) se mantienen en un espacio separado, conocido como espacio de usuario. Como hay menos código y operaciones que se ejecutan en el espacio del núcleo, la superficie de ataque se reduce significativamente.

  • Utilizar aplicaciones de software correctamente empaquetadas

Todas las aplicaciones de software deben ser autónomas y estar debidamente empaquetadas. Por ejemplo, si una aplicación requiere una dependencia de terceros, ésta no debe instalarse globalmente en el sistema operativo. Por el contrario, debe formar parte del paquete/contenedor de la aplicación.

  • Validar todas las entradas

Todos y cada uno de los datos recibidos de fuentes externas y/o no confiables deben ser adecuadamente saneados y validados, antes de ser pasados a los componentes críticos de software y/o hardware. 

Si una aplicación obtiene datos de una integración API externa, y cambia alguna configuración basada en ella, los datos recibidos deben ser rigurosamente validados antes de cambiar la configuración.

  • Proteja los datos en reposo:

Todo el software sensible, los datos, los archivos de configuración, las claves seguras y las contraseñas, etc., que se almacenan en un dispositivo integrado, deben estar protegidos. Esto se suele hacer mediante el cifrado. Las claves privadas utilizadas para encriptar los datos deben almacenarse en un hardware de seguridad específico.

La pirámide de la seguridad: seguridad integral de los sistemas empotrados

Se acabaron los días en los que la seguridad era una idea tardía. Un requisito no funcional. Hoy, la seguridad debe ser intrínseca. Los dispositivos deben ser seguros por diseño. Para ello, es esencial aplicar los requisitos de seguridad de extremo a extremo en un entorno integrado. Esto significa: pensar en la seguridad al elegir el hardware, al definir la arquitectura del sistema, al diseñar el sistema y, por supuesto, al escribir el código.

Empezar por el hardware

Por muy robusta que sea la seguridad de su software, si su hardware es deficiente, será susceptible de ser atacado. Las técnicas de seguridad en el chip pueden permitir un arranque seguro y una gestión eficaz de las funciones criptográficas y los secretos. Algunos componentes de hardware también pueden permitir que el sistema operativo ofrezca diversas funciones de seguridad, como la detección de anomalías en las llamadas del sistema, el cifrado del sistema de archivos y las políticas de control de acceso.

Un sistema tolerante a fallos

Hay numerosas razones para diseñar un sistema tolerante a fallos, y evitar los ataques de análisis diferencial de fallos es sólo una de ellas. En un ataque de este tipo, un posible hacker puede utilizar técnicas de inyección de fallos para intentar producir errores en un dispositivo embebido. Sin embargo, hay varias formas posibles de detectar y proteger contra esos fallos:

  • Replicar las operaciones más críticas, de modo que se puedan comparar diferentes salidas, en un momento dado, para detectar la inyección de un fallo.
  • Fallo por defecto: Cuando se manejan múltiples condiciones (dentro de una condición If o un bloque switch), siempre falla en el caso por defecto, es decir, cuando nada más coincide.
  • Introduzca un comportamiento aleatorio: Añadir pequeños retrasos aleatorios antes de las operaciones cruciales garantiza que su sincronización nunca sea predecible. Esto es clave en la detección de intrusos, ya que hace que sea muy difícil para los hackers determinar patrones de operación, y realizar ataques de sincronización.
  • Escudos protectores: Los fabricantes deben utilizar escudos para cubrir los componentes más cruciales, protegiéndolos de la manipulación externa.
  • Detectar fluctuaciones anormales: Detecta las fluctuaciones anormales de la tensión, la corriente u otros valores, y lanza las excepciones correspondientes.

Asegure su aplicación... y su sistema operativo

Construir la defensa de su dispositivo a nivel de aplicación implica:

  • Elegir componentes de software y hardware de terceros, probados y de buena reputación, que puedan actualizarse regularmente.
  • Perfeccionamiento de los desarrolladores en las mejores prácticas relativas a la seguridad de los sistemas empotrados.
  • Utilice un sistema operativo de micronúcleo para garantizar que se ejecute un número mínimo de operaciones en el espacio del núcleo.
  • Supervise y proteja contra los ataques de software, incluidos los virus, los troyanos y el malware.
  • Elimine todos los servicios innecesarios. Tu firmware debería tener sólo lo que absolutamente necesitas. Por ejemplo, puede que no necesites transferir archivos o capturar paquetes, así que puedes desactivar los protocolos de transferencia de archivos y los paquetes de red como telnet.
  • Utilice protocolos seguros como SFTP, IPsec, SSL, TLS, SSH y DNSSEC.

Herramientas para la seguridad de los sistemas empotrados

Esta es una lista no exhaustiva de herramientas que pueden ayudar a asegurar los sistemas embebidos:

  • Bus blaster: Una plataforma de depuración de alta velocidad que puede interactuar con los puertos de depuración de hardware.
  • Salae: Decodifica varios protocolos como el Serial, el SPI y el I2C, etc. Puedes usar analizadores de protocolo construidos por la comunidad, o construir el tuyo propio.
  • Hydrabus: Hardware multiherramienta de código abierto que puede utilizarse para depurar, hackear y/o realizar pruebas de penetración en hardware embebido.
  • Explotación: Un marco de pruebas de seguridad y explotación del Internet de las cosas (IoT) de código abierto.
  • FACT (The Firmware Analysis and Comparison Tool): Marco utilizado para automatizar el análisis de seguridad del firmware.
  • Routersploit: Un marco de explotación de código abierto para dispositivos integrados.
  • Firmadyne: sistema de código abierto para la emulación y el análisis dinámico del firmware embebido basado en Linux.

¿Qué carencias tienen las soluciones de seguridad integradas modernas?

Aunque hay varias soluciones disponibles para depurar, explotar y realizar pruebas de penetración en las soluciones integradas, no se utilizan fácilmente. Se sigue prestando mucha atención a la seguridad física del dispositivo, pero no se hacen suficientes esfuerzos para protegerlo contra los ataques relacionados con el software. Incluso los riesgos y vulnerabilidades de seguridad de las aplicaciones más simples y fáciles de evitar siguen siendo comunes en los dispositivos integrados modernos.  

Una de las principales razones es la falta de concienciación de los desarrolladores sobre la seguridad integrada. Según una encuesta realizada por Tripwire, el 68% de los profesionales de TI cree que su personal no es suficientemente consciente de las posibles vulnerabilidades.

Los desarrolladores no saben cosas como: qué protocolos de seguridad elegir, qué marcos de trabajo evitar, qué componentes de hardware segregar, cómo tratar los datos sensibles y cómo determinar qué algoritmo de cifrado es el más seguro. Esta falta de conocimiento general y el desprecio por las mejores prácticas hacen que las aplicaciones que se ejecutan en dispositivos integrados sean susceptibles de ser comprometidas.

El futuro de la seguridad integrada

Se está trabajando mucho en el mercado de la seguridad integrada. Los expertos creen que la tasa de crecimiento anual compuesta (CAGR) del mercado puede alcanzar una cifra del 5,5% durante el periodo 2021-2026. Con el lanzamiento de más y más dispositivos IoT, podemos esperar que se establezcan nuevos estándares de seguridad integrada.

La creciente adopción de dispositivos médicos portátiles también va a aumentar la demanda de soluciones de seguridad integradas fiables. Para que los dispositivos contengan y procesen datos médicos delicados, deben pasar ciertas listas de control de seguridad, y esperamos que eso haga que los proveedores e ingenieros se centren más en la seguridad.

En el futuro, también podremos contar con soluciones que permitan la visibilidad, la supervisión y el control remotos de los principales componentes de software y hardware de los dispositivos integrados. Esto supondrá un verdadero cambio en el mundo de la seguridad de los sistemas integrados.

A fin de cuentas, las firmas digitales, el cifrado de datos, la adición de cortafuegos, la implementación del control de acceso y la aleatorización de las operaciones sólo pueden llevarnos hasta cierto punto. Para construir dispositivos verdaderamente seguros, los desarrolladores deben estar capacitados para escribir código seguro. Identificar los posibles riesgos de seguridad y mitigarlos durante la fase de diseño de la aplicación contribuye en gran medida a que los sistemas sean intrínsecamente seguros.

Cómo puede ayudar Secure Code Warrior

El producto estrella deSecure Code Warrior- learning platform - tiene numerosos retos interactivos, courses, y evaluaciones que pueden ayudar a entrenar a los desarrolladores a escribir código C/C++ seguro. El contenido de la plataforma es específico del marco de trabajo y muy atractivo. Nuestros retos de codificación en C/C++:Embed se inspiraron tanto en MISRA C, como en AUTOSAR C++ (MISRA C++) y en IEC.

Los desarrolladores pueden embarcarse en viajes de aprendizaje personalizados, en los que identifican las vulnerabilidades específicas de C/C++ y, lo que es más importante, aprenden a corregir esos errores. En este proceso, los desarrolladores pueden hacer un seguimiento de su progreso para identificar sus puntos débiles, e incluso disfrutar de una competición amistosa de codificación con sus compañeros. Descubra más sobre cómo ayudamos a las industrias de la automoción y el transporte con nuestras soluciones.

¿Quieres descubrir lo interactivos y enfocados que son nuestros retos? Prueba algunos de los retos de C/C++:Embed en learning platform hoy mismo.

Ver recurso
Ver recurso

En este artículo se ofrece una visión general de la seguridad de los sistemas embebidos. Empezaremos por la definición básica, para pasar después a los retos de la seguridad integrada, algunas soluciones típicas y los enigmas que faltan.

¿Quiere saber más?

Secure Code Warrior hace que la codificación segura sea una experiencia positiva y atractiva para los desarrolladores a medida que aumentan sus habilidades. Guiamos a cada programador a lo largo de su propio camino de aprendizaje, para que los desarrolladores con conocimientos de seguridad se conviertan en los superhéroes cotidianos de nuestro mundo conectado.

Secure Code Warrior está a disposición de su organización para ayudarle a proteger el código a lo largo de todo el ciclo de vida de desarrollo de software y crear una cultura en la que la ciberseguridad sea una prioridad. Tanto si es director de AppSec, desarrollador, CISO o cualquier persona implicada en la seguridad, podemos ayudar a su organización a reducir los riesgos asociados a un código inseguro.

Reservar una demostración
Compartir en:
Autor
Secure Code Warrior
Publicado el 19 de agosto de 2021

Secure Code Warrior hace que la codificación segura sea una experiencia positiva y atractiva para los desarrolladores a medida que aumentan sus habilidades. Guiamos a cada programador a lo largo de su propio camino de aprendizaje, para que los desarrolladores con conocimientos de seguridad se conviertan en los superhéroes cotidianos de nuestro mundo conectado.

Secure Code Warrior crea una cultura de desarrolladores orientados a la seguridad, dotándoles de las habilidades necesarias para codificar de forma segura. Nuestro buque insignia es Agile Learning Platform , que ofrece itinerarios basados en habilidades relevantes, prácticas en missions y herramientas contextuales para que los desarrolladores aprendan, desarrollen y apliquen rápidamente sus habilidades para escribir código seguro a gran velocidad.

Compartir en:

Los sistemas integrados contribuyen a proporcionar mucha tecnología moderna. Desde el control de crucero adaptativo de su coche hasta el Wifi de su nevera inteligente. Con el aumento de los ciberataques, la seguridad de estos sistemas se ha convertido en algo fundamental.

Los dispositivos integrados son objetivos principales de la piratería informática, ya que un ataque exitoso puede dar a los intrusos acceso a los datos producidos, recibidos y procesados por ellos. Esto a menudo puede tener graves ramificaciones para el sistema más grande que está siendo alimentado por el dispositivo integrado. Por ejemplo, el cierre de un dispositivo integrado en un avión de combate F-15, que recoge datos de varias cámaras y sensores, puede dificultar considerablemente las defensas del avión.

Hemos escrito este artículo para cubrir todo lo que necesitas para empezar a desarrollar sistemas embebidos seguros. Esto es lo que se incluye: 

  • ¿Qué es la seguridad integrada?
  • Desafíos a los que se enfrenta la implantación de la seguridad integrada.
  • ¿Qué hace que un sistema integrado sea "seguro"?
  • Por qué es importante la seguridad de extremo a extremo en un ecosistema integrado.
  • Algunas herramientas de seguridad integradas.
  • ¿De qué carecen las típicas soluciones integradas?
  • El futuro de la seguridad integrada.

¿Qué es la seguridad integrada?

La seguridad integrada proporciona las herramientas, los procesos y las mejores prácticas para asegurar el software y el hardware de los dispositivos integrados. 

Dado que los módulos de hardware de los sistemas integrados son pequeños, tienen diversas limitaciones de memoria y almacenamiento. Por ello, incorporar medidas de seguridad en ellos se convierte en un enorme reto de diseño. Sin embargo, por difícil que sea, es una necesidad del momento.

Muchos de los aparatos y máquinas que funcionan con dispositivos integrados también están conectados a Internet. Esto significa que los hackers pueden obtener acceso no autorizado a ellos, y ejecutar cualquier código malicioso. 

Un hackeo en un dispositivo integrado a menudo puede extenderse a otros componentes conectados, y/o paralizar todo el sistema. Por ejemplo, supongamos que un atacante es capaz de obtener el control de un dispositivo integrado que permite a los conductores poner su coche en piloto automático. El hacker puede entonces dirigir el coche fuera de la carretera, o en el tráfico, causando potencialmente mucho daño.

Retos críticos de seguridad de los sistemas empotrados

La seguridad de los sistemas integrados no recibe la atención que merece. He aquí algunas razones:

  1. Falta de concienciación de los desarrolladores:

Los desarrolladores suelen desconocer las mejores prácticas para desarrollar dispositivos embebidos seguros. Esto se debe en parte al punto 2, y en parte a que las aplicaciones integradas son mucho más complicadas que las aplicaciones de software tradicionales. Entender sus implicaciones de seguridad y escribir un código seguro y eficaz para todos los casos de uso, además en un entorno microinformático limitado, puede ser todo un reto. 

  1. Falta de estandarización:

Faltan normas de ciberseguridad para los sistemas integrados. Aunque la industria automovilística está intentando poco a poco cambiar esta situación. En los últimos años, los investigadores han sacado a la luz bastantes publicaciones que abordan las consideraciones de ciberseguridad para los vehículos inteligentes. Algunas de las más destacadas son SAE J3061, "Cybersecurity Guidebook for Cyber-Physical Vehicle Systems:" y UNECE WP.29 Regulation on Cyber Security and Software Update Processes.

  1. Uso de componentes de terceros

Muchos dispositivos integrados requieren componentes de hardware y software de terceros para funcionar. A menudo, estos componentes se utilizan sin haber sido probados para detectar fallos de seguridad y vulnerabilidades. 

  1. Software obsoleto

Un firmware desactualizado suele estar plagado de errores y vulnerabilidades potencialmente explotables. Aunque puede ser especialmente difícil actualizar periódicamente el firmware en un dispositivo pequeño e integrado, no es algo que se pueda ignorar.

  1. Conectividad directa a Internet

Muchos sistemas y dispositivos integrados están conectados directamente a Internet. Esto significa que no cuentan con la protección de los cortafuegos empresariales, que pueden detectar y prevenir los ataques a la red. Como los recursos son escasos, resulta muy difícil aplicar niveles rigurosos de seguridad en un entorno tan limitado.

  1. Ataque a escala

Los dispositivos integrados suelen fabricarse a gran escala. Esto significa que una sola vulnerabilidad o fallo puede afectar a millones de dispositivos, a veces en todo el mundo. Contener el impacto de un ataque a un sistema embebido puede ser, por tanto, un reto enorme.

¿Qué hace que un sistema integrado sea seguro?

En las siguientes secciones, veremos algunas características de software y hardware de los sistemas empotrados seguros.

Mejores prácticas de seguridad del hardware

Un sistema empotrado seguro tiene:

  • Un entorno de ejecución de confianza

Un entorno de ejecución de confianza (TEE) permite aislar a nivel de hardware las operaciones críticas para la seguridad. Por ejemplo, la autenticación del usuario puede ejecutarse en un área segregada, lo que permite salvaguardar mejor la información sensible.

  • Recursos de hardware debidamente divididos

Los diferentes componentes de hardware, como los procesadores, la caché, la memoria y las interfaces de red, etc., deben estar adecuadamente segregados, realizando sus funciones de la forma más independiente posible. Esto ayuda a evitar que un error en un componente se propague a otros componentes.

  • Protección del espacio ejecutable (ESP)

La protección del espacio ejecutable, o ESP, es la práctica de marcar ciertas regiones de memoria como no ejecutables. Si alguien intenta ejecutar cualquier código dentro de estas regiones marcadas, se lanza una excepción.

Mejores prácticas de seguridad del software

A la hora de crear software embebido hay que tener en cuenta las siguientes buenas prácticas:

  • Utiliza el arranque seguro:

Cuando un dispositivo integrado arranca, la imagen de arranque se verifica mediante algoritmos criptográficos. Esto garantiza que la secuencia de arranque es correcta y que el software (firmware y cualquier otro dato relevante) no ha sido manipulado. 

  • Utilizar un sistema operativo de micronúcleo

Un SO de micronúcleo es mucho más pequeño que un SO tradicional y contiene un subconjunto de sus características. El espacio del kernel es minúsculo, y muchos servicios de usuario (como la gestión del sistema de archivos, etc.) se mantienen en un espacio separado, conocido como espacio de usuario. Como hay menos código y operaciones que se ejecutan en el espacio del núcleo, la superficie de ataque se reduce significativamente.

  • Utilizar aplicaciones de software correctamente empaquetadas

Todas las aplicaciones de software deben ser autónomas y estar debidamente empaquetadas. Por ejemplo, si una aplicación requiere una dependencia de terceros, ésta no debe instalarse globalmente en el sistema operativo. Por el contrario, debe formar parte del paquete/contenedor de la aplicación.

  • Validar todas las entradas

Todos y cada uno de los datos recibidos de fuentes externas y/o no confiables deben ser adecuadamente saneados y validados, antes de ser pasados a los componentes críticos de software y/o hardware. 

Si una aplicación obtiene datos de una integración API externa, y cambia alguna configuración basada en ella, los datos recibidos deben ser rigurosamente validados antes de cambiar la configuración.

  • Proteja los datos en reposo:

Todo el software sensible, los datos, los archivos de configuración, las claves seguras y las contraseñas, etc., que se almacenan en un dispositivo integrado, deben estar protegidos. Esto se suele hacer mediante el cifrado. Las claves privadas utilizadas para encriptar los datos deben almacenarse en un hardware de seguridad específico.

La pirámide de la seguridad: seguridad integral de los sistemas empotrados

Se acabaron los días en los que la seguridad era una idea tardía. Un requisito no funcional. Hoy, la seguridad debe ser intrínseca. Los dispositivos deben ser seguros por diseño. Para ello, es esencial aplicar los requisitos de seguridad de extremo a extremo en un entorno integrado. Esto significa: pensar en la seguridad al elegir el hardware, al definir la arquitectura del sistema, al diseñar el sistema y, por supuesto, al escribir el código.

Empezar por el hardware

Por muy robusta que sea la seguridad de su software, si su hardware es deficiente, será susceptible de ser atacado. Las técnicas de seguridad en el chip pueden permitir un arranque seguro y una gestión eficaz de las funciones criptográficas y los secretos. Algunos componentes de hardware también pueden permitir que el sistema operativo ofrezca diversas funciones de seguridad, como la detección de anomalías en las llamadas del sistema, el cifrado del sistema de archivos y las políticas de control de acceso.

Un sistema tolerante a fallos

Hay numerosas razones para diseñar un sistema tolerante a fallos, y evitar los ataques de análisis diferencial de fallos es sólo una de ellas. En un ataque de este tipo, un posible hacker puede utilizar técnicas de inyección de fallos para intentar producir errores en un dispositivo embebido. Sin embargo, hay varias formas posibles de detectar y proteger contra esos fallos:

  • Replicar las operaciones más críticas, de modo que se puedan comparar diferentes salidas, en un momento dado, para detectar la inyección de un fallo.
  • Fallo por defecto: Cuando se manejan múltiples condiciones (dentro de una condición If o un bloque switch), siempre falla en el caso por defecto, es decir, cuando nada más coincide.
  • Introduzca un comportamiento aleatorio: Añadir pequeños retrasos aleatorios antes de las operaciones cruciales garantiza que su sincronización nunca sea predecible. Esto es clave en la detección de intrusos, ya que hace que sea muy difícil para los hackers determinar patrones de operación, y realizar ataques de sincronización.
  • Escudos protectores: Los fabricantes deben utilizar escudos para cubrir los componentes más cruciales, protegiéndolos de la manipulación externa.
  • Detectar fluctuaciones anormales: Detecta las fluctuaciones anormales de la tensión, la corriente u otros valores, y lanza las excepciones correspondientes.

Asegure su aplicación... y su sistema operativo

Construir la defensa de su dispositivo a nivel de aplicación implica:

  • Elegir componentes de software y hardware de terceros, probados y de buena reputación, que puedan actualizarse regularmente.
  • Perfeccionamiento de los desarrolladores en las mejores prácticas relativas a la seguridad de los sistemas empotrados.
  • Utilice un sistema operativo de micronúcleo para garantizar que se ejecute un número mínimo de operaciones en el espacio del núcleo.
  • Supervise y proteja contra los ataques de software, incluidos los virus, los troyanos y el malware.
  • Elimine todos los servicios innecesarios. Tu firmware debería tener sólo lo que absolutamente necesitas. Por ejemplo, puede que no necesites transferir archivos o capturar paquetes, así que puedes desactivar los protocolos de transferencia de archivos y los paquetes de red como telnet.
  • Utilice protocolos seguros como SFTP, IPsec, SSL, TLS, SSH y DNSSEC.

Herramientas para la seguridad de los sistemas empotrados

Esta es una lista no exhaustiva de herramientas que pueden ayudar a asegurar los sistemas embebidos:

  • Bus blaster: Una plataforma de depuración de alta velocidad que puede interactuar con los puertos de depuración de hardware.
  • Salae: Decodifica varios protocolos como el Serial, el SPI y el I2C, etc. Puedes usar analizadores de protocolo construidos por la comunidad, o construir el tuyo propio.
  • Hydrabus: Hardware multiherramienta de código abierto que puede utilizarse para depurar, hackear y/o realizar pruebas de penetración en hardware embebido.
  • Explotación: Un marco de pruebas de seguridad y explotación del Internet de las cosas (IoT) de código abierto.
  • FACT (The Firmware Analysis and Comparison Tool): Marco utilizado para automatizar el análisis de seguridad del firmware.
  • Routersploit: Un marco de explotación de código abierto para dispositivos integrados.
  • Firmadyne: sistema de código abierto para la emulación y el análisis dinámico del firmware embebido basado en Linux.

¿Qué carencias tienen las soluciones de seguridad integradas modernas?

Aunque hay varias soluciones disponibles para depurar, explotar y realizar pruebas de penetración en las soluciones integradas, no se utilizan fácilmente. Se sigue prestando mucha atención a la seguridad física del dispositivo, pero no se hacen suficientes esfuerzos para protegerlo contra los ataques relacionados con el software. Incluso los riesgos y vulnerabilidades de seguridad de las aplicaciones más simples y fáciles de evitar siguen siendo comunes en los dispositivos integrados modernos.  

Una de las principales razones es la falta de concienciación de los desarrolladores sobre la seguridad integrada. Según una encuesta realizada por Tripwire, el 68% de los profesionales de TI cree que su personal no es suficientemente consciente de las posibles vulnerabilidades.

Los desarrolladores no saben cosas como: qué protocolos de seguridad elegir, qué marcos de trabajo evitar, qué componentes de hardware segregar, cómo tratar los datos sensibles y cómo determinar qué algoritmo de cifrado es el más seguro. Esta falta de conocimiento general y el desprecio por las mejores prácticas hacen que las aplicaciones que se ejecutan en dispositivos integrados sean susceptibles de ser comprometidas.

El futuro de la seguridad integrada

Se está trabajando mucho en el mercado de la seguridad integrada. Los expertos creen que la tasa de crecimiento anual compuesta (CAGR) del mercado puede alcanzar una cifra del 5,5% durante el periodo 2021-2026. Con el lanzamiento de más y más dispositivos IoT, podemos esperar que se establezcan nuevos estándares de seguridad integrada.

La creciente adopción de dispositivos médicos portátiles también va a aumentar la demanda de soluciones de seguridad integradas fiables. Para que los dispositivos contengan y procesen datos médicos delicados, deben pasar ciertas listas de control de seguridad, y esperamos que eso haga que los proveedores e ingenieros se centren más en la seguridad.

En el futuro, también podremos contar con soluciones que permitan la visibilidad, la supervisión y el control remotos de los principales componentes de software y hardware de los dispositivos integrados. Esto supondrá un verdadero cambio en el mundo de la seguridad de los sistemas integrados.

A fin de cuentas, las firmas digitales, el cifrado de datos, la adición de cortafuegos, la implementación del control de acceso y la aleatorización de las operaciones sólo pueden llevarnos hasta cierto punto. Para construir dispositivos verdaderamente seguros, los desarrolladores deben estar capacitados para escribir código seguro. Identificar los posibles riesgos de seguridad y mitigarlos durante la fase de diseño de la aplicación contribuye en gran medida a que los sistemas sean intrínsecamente seguros.

Cómo puede ayudar Secure Code Warrior

El producto estrella deSecure Code Warrior- learning platform - tiene numerosos retos interactivos, courses, y evaluaciones que pueden ayudar a entrenar a los desarrolladores a escribir código C/C++ seguro. El contenido de la plataforma es específico del marco de trabajo y muy atractivo. Nuestros retos de codificación en C/C++:Embed se inspiraron tanto en MISRA C, como en AUTOSAR C++ (MISRA C++) y en IEC.

Los desarrolladores pueden embarcarse en viajes de aprendizaje personalizados, en los que identifican las vulnerabilidades específicas de C/C++ y, lo que es más importante, aprenden a corregir esos errores. En este proceso, los desarrolladores pueden hacer un seguimiento de su progreso para identificar sus puntos débiles, e incluso disfrutar de una competición amistosa de codificación con sus compañeros. Descubra más sobre cómo ayudamos a las industrias de la automoción y el transporte con nuestras soluciones.

¿Quieres descubrir lo interactivos y enfocados que son nuestros retos? Prueba algunos de los retos de C/C++:Embed en learning platform hoy mismo.

Ver recurso
Ver recurso

Rellene el siguiente formulario para descargar el informe

Nos gustaría contar con su permiso para enviarle información sobre nuestros productos y/o temas relacionados con la codificación segura. Siempre trataremos sus datos personales con el máximo cuidado y nunca los venderemos a otras empresas con fines de marketing.

Enviar
Para enviar el formulario, habilite las cookies "Analytics". Siéntase libre de desactivarlas de nuevo una vez que haya terminado.

Los sistemas integrados contribuyen a proporcionar mucha tecnología moderna. Desde el control de crucero adaptativo de su coche hasta el Wifi de su nevera inteligente. Con el aumento de los ciberataques, la seguridad de estos sistemas se ha convertido en algo fundamental.

Los dispositivos integrados son objetivos principales de la piratería informática, ya que un ataque exitoso puede dar a los intrusos acceso a los datos producidos, recibidos y procesados por ellos. Esto a menudo puede tener graves ramificaciones para el sistema más grande que está siendo alimentado por el dispositivo integrado. Por ejemplo, el cierre de un dispositivo integrado en un avión de combate F-15, que recoge datos de varias cámaras y sensores, puede dificultar considerablemente las defensas del avión.

Hemos escrito este artículo para cubrir todo lo que necesitas para empezar a desarrollar sistemas embebidos seguros. Esto es lo que se incluye: 

  • ¿Qué es la seguridad integrada?
  • Desafíos a los que se enfrenta la implantación de la seguridad integrada.
  • ¿Qué hace que un sistema integrado sea "seguro"?
  • Por qué es importante la seguridad de extremo a extremo en un ecosistema integrado.
  • Algunas herramientas de seguridad integradas.
  • ¿De qué carecen las típicas soluciones integradas?
  • El futuro de la seguridad integrada.

¿Qué es la seguridad integrada?

La seguridad integrada proporciona las herramientas, los procesos y las mejores prácticas para asegurar el software y el hardware de los dispositivos integrados. 

Dado que los módulos de hardware de los sistemas integrados son pequeños, tienen diversas limitaciones de memoria y almacenamiento. Por ello, incorporar medidas de seguridad en ellos se convierte en un enorme reto de diseño. Sin embargo, por difícil que sea, es una necesidad del momento.

Muchos de los aparatos y máquinas que funcionan con dispositivos integrados también están conectados a Internet. Esto significa que los hackers pueden obtener acceso no autorizado a ellos, y ejecutar cualquier código malicioso. 

Un hackeo en un dispositivo integrado a menudo puede extenderse a otros componentes conectados, y/o paralizar todo el sistema. Por ejemplo, supongamos que un atacante es capaz de obtener el control de un dispositivo integrado que permite a los conductores poner su coche en piloto automático. El hacker puede entonces dirigir el coche fuera de la carretera, o en el tráfico, causando potencialmente mucho daño.

Retos críticos de seguridad de los sistemas empotrados

La seguridad de los sistemas integrados no recibe la atención que merece. He aquí algunas razones:

  1. Falta de concienciación de los desarrolladores:

Los desarrolladores suelen desconocer las mejores prácticas para desarrollar dispositivos embebidos seguros. Esto se debe en parte al punto 2, y en parte a que las aplicaciones integradas son mucho más complicadas que las aplicaciones de software tradicionales. Entender sus implicaciones de seguridad y escribir un código seguro y eficaz para todos los casos de uso, además en un entorno microinformático limitado, puede ser todo un reto. 

  1. Falta de estandarización:

Faltan normas de ciberseguridad para los sistemas integrados. Aunque la industria automovilística está intentando poco a poco cambiar esta situación. En los últimos años, los investigadores han sacado a la luz bastantes publicaciones que abordan las consideraciones de ciberseguridad para los vehículos inteligentes. Algunas de las más destacadas son SAE J3061, "Cybersecurity Guidebook for Cyber-Physical Vehicle Systems:" y UNECE WP.29 Regulation on Cyber Security and Software Update Processes.

  1. Uso de componentes de terceros

Muchos dispositivos integrados requieren componentes de hardware y software de terceros para funcionar. A menudo, estos componentes se utilizan sin haber sido probados para detectar fallos de seguridad y vulnerabilidades. 

  1. Software obsoleto

Un firmware desactualizado suele estar plagado de errores y vulnerabilidades potencialmente explotables. Aunque puede ser especialmente difícil actualizar periódicamente el firmware en un dispositivo pequeño e integrado, no es algo que se pueda ignorar.

  1. Conectividad directa a Internet

Muchos sistemas y dispositivos integrados están conectados directamente a Internet. Esto significa que no cuentan con la protección de los cortafuegos empresariales, que pueden detectar y prevenir los ataques a la red. Como los recursos son escasos, resulta muy difícil aplicar niveles rigurosos de seguridad en un entorno tan limitado.

  1. Ataque a escala

Los dispositivos integrados suelen fabricarse a gran escala. Esto significa que una sola vulnerabilidad o fallo puede afectar a millones de dispositivos, a veces en todo el mundo. Contener el impacto de un ataque a un sistema embebido puede ser, por tanto, un reto enorme.

¿Qué hace que un sistema integrado sea seguro?

En las siguientes secciones, veremos algunas características de software y hardware de los sistemas empotrados seguros.

Mejores prácticas de seguridad del hardware

Un sistema empotrado seguro tiene:

  • Un entorno de ejecución de confianza

Un entorno de ejecución de confianza (TEE) permite aislar a nivel de hardware las operaciones críticas para la seguridad. Por ejemplo, la autenticación del usuario puede ejecutarse en un área segregada, lo que permite salvaguardar mejor la información sensible.

  • Recursos de hardware debidamente divididos

Los diferentes componentes de hardware, como los procesadores, la caché, la memoria y las interfaces de red, etc., deben estar adecuadamente segregados, realizando sus funciones de la forma más independiente posible. Esto ayuda a evitar que un error en un componente se propague a otros componentes.

  • Protección del espacio ejecutable (ESP)

La protección del espacio ejecutable, o ESP, es la práctica de marcar ciertas regiones de memoria como no ejecutables. Si alguien intenta ejecutar cualquier código dentro de estas regiones marcadas, se lanza una excepción.

Mejores prácticas de seguridad del software

A la hora de crear software embebido hay que tener en cuenta las siguientes buenas prácticas:

  • Utiliza el arranque seguro:

Cuando un dispositivo integrado arranca, la imagen de arranque se verifica mediante algoritmos criptográficos. Esto garantiza que la secuencia de arranque es correcta y que el software (firmware y cualquier otro dato relevante) no ha sido manipulado. 

  • Utilizar un sistema operativo de micronúcleo

Un SO de micronúcleo es mucho más pequeño que un SO tradicional y contiene un subconjunto de sus características. El espacio del kernel es minúsculo, y muchos servicios de usuario (como la gestión del sistema de archivos, etc.) se mantienen en un espacio separado, conocido como espacio de usuario. Como hay menos código y operaciones que se ejecutan en el espacio del núcleo, la superficie de ataque se reduce significativamente.

  • Utilizar aplicaciones de software correctamente empaquetadas

Todas las aplicaciones de software deben ser autónomas y estar debidamente empaquetadas. Por ejemplo, si una aplicación requiere una dependencia de terceros, ésta no debe instalarse globalmente en el sistema operativo. Por el contrario, debe formar parte del paquete/contenedor de la aplicación.

  • Validar todas las entradas

Todos y cada uno de los datos recibidos de fuentes externas y/o no confiables deben ser adecuadamente saneados y validados, antes de ser pasados a los componentes críticos de software y/o hardware. 

Si una aplicación obtiene datos de una integración API externa, y cambia alguna configuración basada en ella, los datos recibidos deben ser rigurosamente validados antes de cambiar la configuración.

  • Proteja los datos en reposo:

Todo el software sensible, los datos, los archivos de configuración, las claves seguras y las contraseñas, etc., que se almacenan en un dispositivo integrado, deben estar protegidos. Esto se suele hacer mediante el cifrado. Las claves privadas utilizadas para encriptar los datos deben almacenarse en un hardware de seguridad específico.

La pirámide de la seguridad: seguridad integral de los sistemas empotrados

Se acabaron los días en los que la seguridad era una idea tardía. Un requisito no funcional. Hoy, la seguridad debe ser intrínseca. Los dispositivos deben ser seguros por diseño. Para ello, es esencial aplicar los requisitos de seguridad de extremo a extremo en un entorno integrado. Esto significa: pensar en la seguridad al elegir el hardware, al definir la arquitectura del sistema, al diseñar el sistema y, por supuesto, al escribir el código.

Empezar por el hardware

Por muy robusta que sea la seguridad de su software, si su hardware es deficiente, será susceptible de ser atacado. Las técnicas de seguridad en el chip pueden permitir un arranque seguro y una gestión eficaz de las funciones criptográficas y los secretos. Algunos componentes de hardware también pueden permitir que el sistema operativo ofrezca diversas funciones de seguridad, como la detección de anomalías en las llamadas del sistema, el cifrado del sistema de archivos y las políticas de control de acceso.

Un sistema tolerante a fallos

Hay numerosas razones para diseñar un sistema tolerante a fallos, y evitar los ataques de análisis diferencial de fallos es sólo una de ellas. En un ataque de este tipo, un posible hacker puede utilizar técnicas de inyección de fallos para intentar producir errores en un dispositivo embebido. Sin embargo, hay varias formas posibles de detectar y proteger contra esos fallos:

  • Replicar las operaciones más críticas, de modo que se puedan comparar diferentes salidas, en un momento dado, para detectar la inyección de un fallo.
  • Fallo por defecto: Cuando se manejan múltiples condiciones (dentro de una condición If o un bloque switch), siempre falla en el caso por defecto, es decir, cuando nada más coincide.
  • Introduzca un comportamiento aleatorio: Añadir pequeños retrasos aleatorios antes de las operaciones cruciales garantiza que su sincronización nunca sea predecible. Esto es clave en la detección de intrusos, ya que hace que sea muy difícil para los hackers determinar patrones de operación, y realizar ataques de sincronización.
  • Escudos protectores: Los fabricantes deben utilizar escudos para cubrir los componentes más cruciales, protegiéndolos de la manipulación externa.
  • Detectar fluctuaciones anormales: Detecta las fluctuaciones anormales de la tensión, la corriente u otros valores, y lanza las excepciones correspondientes.

Asegure su aplicación... y su sistema operativo

Construir la defensa de su dispositivo a nivel de aplicación implica:

  • Elegir componentes de software y hardware de terceros, probados y de buena reputación, que puedan actualizarse regularmente.
  • Perfeccionamiento de los desarrolladores en las mejores prácticas relativas a la seguridad de los sistemas empotrados.
  • Utilice un sistema operativo de micronúcleo para garantizar que se ejecute un número mínimo de operaciones en el espacio del núcleo.
  • Supervise y proteja contra los ataques de software, incluidos los virus, los troyanos y el malware.
  • Elimine todos los servicios innecesarios. Tu firmware debería tener sólo lo que absolutamente necesitas. Por ejemplo, puede que no necesites transferir archivos o capturar paquetes, así que puedes desactivar los protocolos de transferencia de archivos y los paquetes de red como telnet.
  • Utilice protocolos seguros como SFTP, IPsec, SSL, TLS, SSH y DNSSEC.

Herramientas para la seguridad de los sistemas empotrados

Esta es una lista no exhaustiva de herramientas que pueden ayudar a asegurar los sistemas embebidos:

  • Bus blaster: Una plataforma de depuración de alta velocidad que puede interactuar con los puertos de depuración de hardware.
  • Salae: Decodifica varios protocolos como el Serial, el SPI y el I2C, etc. Puedes usar analizadores de protocolo construidos por la comunidad, o construir el tuyo propio.
  • Hydrabus: Hardware multiherramienta de código abierto que puede utilizarse para depurar, hackear y/o realizar pruebas de penetración en hardware embebido.
  • Explotación: Un marco de pruebas de seguridad y explotación del Internet de las cosas (IoT) de código abierto.
  • FACT (The Firmware Analysis and Comparison Tool): Marco utilizado para automatizar el análisis de seguridad del firmware.
  • Routersploit: Un marco de explotación de código abierto para dispositivos integrados.
  • Firmadyne: sistema de código abierto para la emulación y el análisis dinámico del firmware embebido basado en Linux.

¿Qué carencias tienen las soluciones de seguridad integradas modernas?

Aunque hay varias soluciones disponibles para depurar, explotar y realizar pruebas de penetración en las soluciones integradas, no se utilizan fácilmente. Se sigue prestando mucha atención a la seguridad física del dispositivo, pero no se hacen suficientes esfuerzos para protegerlo contra los ataques relacionados con el software. Incluso los riesgos y vulnerabilidades de seguridad de las aplicaciones más simples y fáciles de evitar siguen siendo comunes en los dispositivos integrados modernos.  

Una de las principales razones es la falta de concienciación de los desarrolladores sobre la seguridad integrada. Según una encuesta realizada por Tripwire, el 68% de los profesionales de TI cree que su personal no es suficientemente consciente de las posibles vulnerabilidades.

Los desarrolladores no saben cosas como: qué protocolos de seguridad elegir, qué marcos de trabajo evitar, qué componentes de hardware segregar, cómo tratar los datos sensibles y cómo determinar qué algoritmo de cifrado es el más seguro. Esta falta de conocimiento general y el desprecio por las mejores prácticas hacen que las aplicaciones que se ejecutan en dispositivos integrados sean susceptibles de ser comprometidas.

El futuro de la seguridad integrada

Se está trabajando mucho en el mercado de la seguridad integrada. Los expertos creen que la tasa de crecimiento anual compuesta (CAGR) del mercado puede alcanzar una cifra del 5,5% durante el periodo 2021-2026. Con el lanzamiento de más y más dispositivos IoT, podemos esperar que se establezcan nuevos estándares de seguridad integrada.

La creciente adopción de dispositivos médicos portátiles también va a aumentar la demanda de soluciones de seguridad integradas fiables. Para que los dispositivos contengan y procesen datos médicos delicados, deben pasar ciertas listas de control de seguridad, y esperamos que eso haga que los proveedores e ingenieros se centren más en la seguridad.

En el futuro, también podremos contar con soluciones que permitan la visibilidad, la supervisión y el control remotos de los principales componentes de software y hardware de los dispositivos integrados. Esto supondrá un verdadero cambio en el mundo de la seguridad de los sistemas integrados.

A fin de cuentas, las firmas digitales, el cifrado de datos, la adición de cortafuegos, la implementación del control de acceso y la aleatorización de las operaciones sólo pueden llevarnos hasta cierto punto. Para construir dispositivos verdaderamente seguros, los desarrolladores deben estar capacitados para escribir código seguro. Identificar los posibles riesgos de seguridad y mitigarlos durante la fase de diseño de la aplicación contribuye en gran medida a que los sistemas sean intrínsecamente seguros.

Cómo puede ayudar Secure Code Warrior

El producto estrella deSecure Code Warrior- learning platform - tiene numerosos retos interactivos, courses, y evaluaciones que pueden ayudar a entrenar a los desarrolladores a escribir código C/C++ seguro. El contenido de la plataforma es específico del marco de trabajo y muy atractivo. Nuestros retos de codificación en C/C++:Embed se inspiraron tanto en MISRA C, como en AUTOSAR C++ (MISRA C++) y en IEC.

Los desarrolladores pueden embarcarse en viajes de aprendizaje personalizados, en los que identifican las vulnerabilidades específicas de C/C++ y, lo que es más importante, aprenden a corregir esos errores. En este proceso, los desarrolladores pueden hacer un seguimiento de su progreso para identificar sus puntos débiles, e incluso disfrutar de una competición amistosa de codificación con sus compañeros. Descubra más sobre cómo ayudamos a las industrias de la automoción y el transporte con nuestras soluciones.

¿Quieres descubrir lo interactivos y enfocados que son nuestros retos? Prueba algunos de los retos de C/C++:Embed en learning platform hoy mismo.

Acceso a recursos

Haga clic en el siguiente enlace y descargue el PDF de este recurso.

Secure Code Warrior está a disposición de su organización para ayudarle a proteger el código a lo largo de todo el ciclo de vida de desarrollo de software y crear una cultura en la que la ciberseguridad sea una prioridad. Tanto si es director de AppSec, desarrollador, CISO o cualquier persona implicada en la seguridad, podemos ayudar a su organización a reducir los riesgos asociados a un código inseguro.

Ver el informeReservar una demostración
Descargar PDF
Ver recurso
Compartir en:
¿Quiere saber más?

Compartir en:
Autor
Secure Code Warrior
Publicado el 19 de agosto de 2021

Secure Code Warrior hace que la codificación segura sea una experiencia positiva y atractiva para los desarrolladores a medida que aumentan sus habilidades. Guiamos a cada programador a lo largo de su propio camino de aprendizaje, para que los desarrolladores con conocimientos de seguridad se conviertan en los superhéroes cotidianos de nuestro mundo conectado.

Secure Code Warrior crea una cultura de desarrolladores orientados a la seguridad, dotándoles de las habilidades necesarias para codificar de forma segura. Nuestro buque insignia es Agile Learning Platform , que ofrece itinerarios basados en habilidades relevantes, prácticas en missions y herramientas contextuales para que los desarrolladores aprendan, desarrollen y apliquen rápidamente sus habilidades para escribir código seguro a gran velocidad.

Compartir en:

Los sistemas integrados contribuyen a proporcionar mucha tecnología moderna. Desde el control de crucero adaptativo de su coche hasta el Wifi de su nevera inteligente. Con el aumento de los ciberataques, la seguridad de estos sistemas se ha convertido en algo fundamental.

Los dispositivos integrados son objetivos principales de la piratería informática, ya que un ataque exitoso puede dar a los intrusos acceso a los datos producidos, recibidos y procesados por ellos. Esto a menudo puede tener graves ramificaciones para el sistema más grande que está siendo alimentado por el dispositivo integrado. Por ejemplo, el cierre de un dispositivo integrado en un avión de combate F-15, que recoge datos de varias cámaras y sensores, puede dificultar considerablemente las defensas del avión.

Hemos escrito este artículo para cubrir todo lo que necesitas para empezar a desarrollar sistemas embebidos seguros. Esto es lo que se incluye: 

  • ¿Qué es la seguridad integrada?
  • Desafíos a los que se enfrenta la implantación de la seguridad integrada.
  • ¿Qué hace que un sistema integrado sea "seguro"?
  • Por qué es importante la seguridad de extremo a extremo en un ecosistema integrado.
  • Algunas herramientas de seguridad integradas.
  • ¿De qué carecen las típicas soluciones integradas?
  • El futuro de la seguridad integrada.

¿Qué es la seguridad integrada?

La seguridad integrada proporciona las herramientas, los procesos y las mejores prácticas para asegurar el software y el hardware de los dispositivos integrados. 

Dado que los módulos de hardware de los sistemas integrados son pequeños, tienen diversas limitaciones de memoria y almacenamiento. Por ello, incorporar medidas de seguridad en ellos se convierte en un enorme reto de diseño. Sin embargo, por difícil que sea, es una necesidad del momento.

Muchos de los aparatos y máquinas que funcionan con dispositivos integrados también están conectados a Internet. Esto significa que los hackers pueden obtener acceso no autorizado a ellos, y ejecutar cualquier código malicioso. 

Un hackeo en un dispositivo integrado a menudo puede extenderse a otros componentes conectados, y/o paralizar todo el sistema. Por ejemplo, supongamos que un atacante es capaz de obtener el control de un dispositivo integrado que permite a los conductores poner su coche en piloto automático. El hacker puede entonces dirigir el coche fuera de la carretera, o en el tráfico, causando potencialmente mucho daño.

Retos críticos de seguridad de los sistemas empotrados

La seguridad de los sistemas integrados no recibe la atención que merece. He aquí algunas razones:

  1. Falta de concienciación de los desarrolladores:

Los desarrolladores suelen desconocer las mejores prácticas para desarrollar dispositivos embebidos seguros. Esto se debe en parte al punto 2, y en parte a que las aplicaciones integradas son mucho más complicadas que las aplicaciones de software tradicionales. Entender sus implicaciones de seguridad y escribir un código seguro y eficaz para todos los casos de uso, además en un entorno microinformático limitado, puede ser todo un reto. 

  1. Falta de estandarización:

Faltan normas de ciberseguridad para los sistemas integrados. Aunque la industria automovilística está intentando poco a poco cambiar esta situación. En los últimos años, los investigadores han sacado a la luz bastantes publicaciones que abordan las consideraciones de ciberseguridad para los vehículos inteligentes. Algunas de las más destacadas son SAE J3061, "Cybersecurity Guidebook for Cyber-Physical Vehicle Systems:" y UNECE WP.29 Regulation on Cyber Security and Software Update Processes.

  1. Uso de componentes de terceros

Muchos dispositivos integrados requieren componentes de hardware y software de terceros para funcionar. A menudo, estos componentes se utilizan sin haber sido probados para detectar fallos de seguridad y vulnerabilidades. 

  1. Software obsoleto

Un firmware desactualizado suele estar plagado de errores y vulnerabilidades potencialmente explotables. Aunque puede ser especialmente difícil actualizar periódicamente el firmware en un dispositivo pequeño e integrado, no es algo que se pueda ignorar.

  1. Conectividad directa a Internet

Muchos sistemas y dispositivos integrados están conectados directamente a Internet. Esto significa que no cuentan con la protección de los cortafuegos empresariales, que pueden detectar y prevenir los ataques a la red. Como los recursos son escasos, resulta muy difícil aplicar niveles rigurosos de seguridad en un entorno tan limitado.

  1. Ataque a escala

Los dispositivos integrados suelen fabricarse a gran escala. Esto significa que una sola vulnerabilidad o fallo puede afectar a millones de dispositivos, a veces en todo el mundo. Contener el impacto de un ataque a un sistema embebido puede ser, por tanto, un reto enorme.

¿Qué hace que un sistema integrado sea seguro?

En las siguientes secciones, veremos algunas características de software y hardware de los sistemas empotrados seguros.

Mejores prácticas de seguridad del hardware

Un sistema empotrado seguro tiene:

  • Un entorno de ejecución de confianza

Un entorno de ejecución de confianza (TEE) permite aislar a nivel de hardware las operaciones críticas para la seguridad. Por ejemplo, la autenticación del usuario puede ejecutarse en un área segregada, lo que permite salvaguardar mejor la información sensible.

  • Recursos de hardware debidamente divididos

Los diferentes componentes de hardware, como los procesadores, la caché, la memoria y las interfaces de red, etc., deben estar adecuadamente segregados, realizando sus funciones de la forma más independiente posible. Esto ayuda a evitar que un error en un componente se propague a otros componentes.

  • Protección del espacio ejecutable (ESP)

La protección del espacio ejecutable, o ESP, es la práctica de marcar ciertas regiones de memoria como no ejecutables. Si alguien intenta ejecutar cualquier código dentro de estas regiones marcadas, se lanza una excepción.

Mejores prácticas de seguridad del software

A la hora de crear software embebido hay que tener en cuenta las siguientes buenas prácticas:

  • Utiliza el arranque seguro:

Cuando un dispositivo integrado arranca, la imagen de arranque se verifica mediante algoritmos criptográficos. Esto garantiza que la secuencia de arranque es correcta y que el software (firmware y cualquier otro dato relevante) no ha sido manipulado. 

  • Utilizar un sistema operativo de micronúcleo

Un SO de micronúcleo es mucho más pequeño que un SO tradicional y contiene un subconjunto de sus características. El espacio del kernel es minúsculo, y muchos servicios de usuario (como la gestión del sistema de archivos, etc.) se mantienen en un espacio separado, conocido como espacio de usuario. Como hay menos código y operaciones que se ejecutan en el espacio del núcleo, la superficie de ataque se reduce significativamente.

  • Utilizar aplicaciones de software correctamente empaquetadas

Todas las aplicaciones de software deben ser autónomas y estar debidamente empaquetadas. Por ejemplo, si una aplicación requiere una dependencia de terceros, ésta no debe instalarse globalmente en el sistema operativo. Por el contrario, debe formar parte del paquete/contenedor de la aplicación.

  • Validar todas las entradas

Todos y cada uno de los datos recibidos de fuentes externas y/o no confiables deben ser adecuadamente saneados y validados, antes de ser pasados a los componentes críticos de software y/o hardware. 

Si una aplicación obtiene datos de una integración API externa, y cambia alguna configuración basada en ella, los datos recibidos deben ser rigurosamente validados antes de cambiar la configuración.

  • Proteja los datos en reposo:

Todo el software sensible, los datos, los archivos de configuración, las claves seguras y las contraseñas, etc., que se almacenan en un dispositivo integrado, deben estar protegidos. Esto se suele hacer mediante el cifrado. Las claves privadas utilizadas para encriptar los datos deben almacenarse en un hardware de seguridad específico.

La pirámide de la seguridad: seguridad integral de los sistemas empotrados

Se acabaron los días en los que la seguridad era una idea tardía. Un requisito no funcional. Hoy, la seguridad debe ser intrínseca. Los dispositivos deben ser seguros por diseño. Para ello, es esencial aplicar los requisitos de seguridad de extremo a extremo en un entorno integrado. Esto significa: pensar en la seguridad al elegir el hardware, al definir la arquitectura del sistema, al diseñar el sistema y, por supuesto, al escribir el código.

Empezar por el hardware

Por muy robusta que sea la seguridad de su software, si su hardware es deficiente, será susceptible de ser atacado. Las técnicas de seguridad en el chip pueden permitir un arranque seguro y una gestión eficaz de las funciones criptográficas y los secretos. Algunos componentes de hardware también pueden permitir que el sistema operativo ofrezca diversas funciones de seguridad, como la detección de anomalías en las llamadas del sistema, el cifrado del sistema de archivos y las políticas de control de acceso.

Un sistema tolerante a fallos

Hay numerosas razones para diseñar un sistema tolerante a fallos, y evitar los ataques de análisis diferencial de fallos es sólo una de ellas. En un ataque de este tipo, un posible hacker puede utilizar técnicas de inyección de fallos para intentar producir errores en un dispositivo embebido. Sin embargo, hay varias formas posibles de detectar y proteger contra esos fallos:

  • Replicar las operaciones más críticas, de modo que se puedan comparar diferentes salidas, en un momento dado, para detectar la inyección de un fallo.
  • Fallo por defecto: Cuando se manejan múltiples condiciones (dentro de una condición If o un bloque switch), siempre falla en el caso por defecto, es decir, cuando nada más coincide.
  • Introduzca un comportamiento aleatorio: Añadir pequeños retrasos aleatorios antes de las operaciones cruciales garantiza que su sincronización nunca sea predecible. Esto es clave en la detección de intrusos, ya que hace que sea muy difícil para los hackers determinar patrones de operación, y realizar ataques de sincronización.
  • Escudos protectores: Los fabricantes deben utilizar escudos para cubrir los componentes más cruciales, protegiéndolos de la manipulación externa.
  • Detectar fluctuaciones anormales: Detecta las fluctuaciones anormales de la tensión, la corriente u otros valores, y lanza las excepciones correspondientes.

Asegure su aplicación... y su sistema operativo

Construir la defensa de su dispositivo a nivel de aplicación implica:

  • Elegir componentes de software y hardware de terceros, probados y de buena reputación, que puedan actualizarse regularmente.
  • Perfeccionamiento de los desarrolladores en las mejores prácticas relativas a la seguridad de los sistemas empotrados.
  • Utilice un sistema operativo de micronúcleo para garantizar que se ejecute un número mínimo de operaciones en el espacio del núcleo.
  • Supervise y proteja contra los ataques de software, incluidos los virus, los troyanos y el malware.
  • Elimine todos los servicios innecesarios. Tu firmware debería tener sólo lo que absolutamente necesitas. Por ejemplo, puede que no necesites transferir archivos o capturar paquetes, así que puedes desactivar los protocolos de transferencia de archivos y los paquetes de red como telnet.
  • Utilice protocolos seguros como SFTP, IPsec, SSL, TLS, SSH y DNSSEC.

Herramientas para la seguridad de los sistemas empotrados

Esta es una lista no exhaustiva de herramientas que pueden ayudar a asegurar los sistemas embebidos:

  • Bus blaster: Una plataforma de depuración de alta velocidad que puede interactuar con los puertos de depuración de hardware.
  • Salae: Decodifica varios protocolos como el Serial, el SPI y el I2C, etc. Puedes usar analizadores de protocolo construidos por la comunidad, o construir el tuyo propio.
  • Hydrabus: Hardware multiherramienta de código abierto que puede utilizarse para depurar, hackear y/o realizar pruebas de penetración en hardware embebido.
  • Explotación: Un marco de pruebas de seguridad y explotación del Internet de las cosas (IoT) de código abierto.
  • FACT (The Firmware Analysis and Comparison Tool): Marco utilizado para automatizar el análisis de seguridad del firmware.
  • Routersploit: Un marco de explotación de código abierto para dispositivos integrados.
  • Firmadyne: sistema de código abierto para la emulación y el análisis dinámico del firmware embebido basado en Linux.

¿Qué carencias tienen las soluciones de seguridad integradas modernas?

Aunque hay varias soluciones disponibles para depurar, explotar y realizar pruebas de penetración en las soluciones integradas, no se utilizan fácilmente. Se sigue prestando mucha atención a la seguridad física del dispositivo, pero no se hacen suficientes esfuerzos para protegerlo contra los ataques relacionados con el software. Incluso los riesgos y vulnerabilidades de seguridad de las aplicaciones más simples y fáciles de evitar siguen siendo comunes en los dispositivos integrados modernos.  

Una de las principales razones es la falta de concienciación de los desarrolladores sobre la seguridad integrada. Según una encuesta realizada por Tripwire, el 68% de los profesionales de TI cree que su personal no es suficientemente consciente de las posibles vulnerabilidades.

Los desarrolladores no saben cosas como: qué protocolos de seguridad elegir, qué marcos de trabajo evitar, qué componentes de hardware segregar, cómo tratar los datos sensibles y cómo determinar qué algoritmo de cifrado es el más seguro. Esta falta de conocimiento general y el desprecio por las mejores prácticas hacen que las aplicaciones que se ejecutan en dispositivos integrados sean susceptibles de ser comprometidas.

El futuro de la seguridad integrada

Se está trabajando mucho en el mercado de la seguridad integrada. Los expertos creen que la tasa de crecimiento anual compuesta (CAGR) del mercado puede alcanzar una cifra del 5,5% durante el periodo 2021-2026. Con el lanzamiento de más y más dispositivos IoT, podemos esperar que se establezcan nuevos estándares de seguridad integrada.

La creciente adopción de dispositivos médicos portátiles también va a aumentar la demanda de soluciones de seguridad integradas fiables. Para que los dispositivos contengan y procesen datos médicos delicados, deben pasar ciertas listas de control de seguridad, y esperamos que eso haga que los proveedores e ingenieros se centren más en la seguridad.

En el futuro, también podremos contar con soluciones que permitan la visibilidad, la supervisión y el control remotos de los principales componentes de software y hardware de los dispositivos integrados. Esto supondrá un verdadero cambio en el mundo de la seguridad de los sistemas integrados.

A fin de cuentas, las firmas digitales, el cifrado de datos, la adición de cortafuegos, la implementación del control de acceso y la aleatorización de las operaciones sólo pueden llevarnos hasta cierto punto. Para construir dispositivos verdaderamente seguros, los desarrolladores deben estar capacitados para escribir código seguro. Identificar los posibles riesgos de seguridad y mitigarlos durante la fase de diseño de la aplicación contribuye en gran medida a que los sistemas sean intrínsecamente seguros.

Cómo puede ayudar Secure Code Warrior

El producto estrella deSecure Code Warrior- learning platform - tiene numerosos retos interactivos, courses, y evaluaciones que pueden ayudar a entrenar a los desarrolladores a escribir código C/C++ seguro. El contenido de la plataforma es específico del marco de trabajo y muy atractivo. Nuestros retos de codificación en C/C++:Embed se inspiraron tanto en MISRA C, como en AUTOSAR C++ (MISRA C++) y en IEC.

Los desarrolladores pueden embarcarse en viajes de aprendizaje personalizados, en los que identifican las vulnerabilidades específicas de C/C++ y, lo que es más importante, aprenden a corregir esos errores. En este proceso, los desarrolladores pueden hacer un seguimiento de su progreso para identificar sus puntos débiles, e incluso disfrutar de una competición amistosa de codificación con sus compañeros. Descubra más sobre cómo ayudamos a las industrias de la automoción y el transporte con nuestras soluciones.

¿Quieres descubrir lo interactivos y enfocados que son nuestros retos? Prueba algunos de los retos de C/C++:Embed en learning platform hoy mismo.

Índice

Descargar PDF
Ver recurso
¿Quiere saber más?

Secure Code Warrior hace que la codificación segura sea una experiencia positiva y atractiva para los desarrolladores a medida que aumentan sus habilidades. Guiamos a cada programador a lo largo de su propio camino de aprendizaje, para que los desarrolladores con conocimientos de seguridad se conviertan en los superhéroes cotidianos de nuestro mundo conectado.

Secure Code Warrior está a disposición de su organización para ayudarle a proteger el código a lo largo de todo el ciclo de vida de desarrollo de software y crear una cultura en la que la ciberseguridad sea una prioridad. Tanto si es director de AppSec, desarrollador, CISO o cualquier persona implicada en la seguridad, podemos ayudar a su organización a reducir los riesgos asociados a un código inseguro.

Reservar una demostraciónDescargar
Compartir en:
Centro de recursos

Recursos para empezar

Más entradas
Centro de recursos

Recursos para empezar

Más entradas