Por qué la codificación segura en sistemas integrados es nuestra ventaja defensiva

Ejército tostador rebelde

Hay muchas referencias de la cultura pop a la inteligencia artificial, los robots y los dispositivos deshonestos que se vuelven contra sus amos humanos. Se trata de ciencia ficción, entretenimiento y fantasía, pero a medida que IoT y los dispositivos conectados se están generalizando en nuestros hogares, debemos hablar más sobre seguridad cibernética.

El software está a nuestro alrededor y es muy fácil olvidar cuánto confiamos en las líneas de código para realizar todas esas cosas inteligentes que nos brindan tanta innovación y comodidad.

Al igual que el software basado en la web, las API y los dispositivos móviles, el código vulnerable puede explotarse en los sistemas integrados si un atacante lo detecta.

Aunque es poco probable que un ejército de tostadores venga a esclavizar a la raza humana (aunque el robot de Tesla es un poco inquietante) como resultado del ataque cibernético, los eventos cibernéticos dañinos aún son posibles. Algunos de nuestros automóviles, aeronaves y dispositivos médicos también se basan en códigos de sistemas integrados complejos para realizar tareas clave, y la posibilidad de poner en peligro estos objetos es potencialmente mortal.

Como cualquier otro tipo de software, los desarrolladores se encuentran entre los primeros en obtener el código al comienzo de la fase de desarrollo. Y como cualquier otro tipo de software, este puede ser un caldo de cultivo para vulnerabilidades insidiosas y comunes que podrían pasar desapercibidas antes de que el producto esté listo y funcionando.

Los desarrolladores no son expertos en seguridad y ninguna empresa debería esperar que desempeñen este papel, pero pueden estar equipados con un arsenal mucho más sólido para hacer frente al tipo de amenazas que son relevantes para ellos. Los sistemas integrados, generalmente escritos en C y C ++, se utilizarán con mayor frecuencia a medida que nuestras necesidades tecnológicas continúen creciendo y cambiando, y la capacitación especializada en seguridad para desarrolladores sobre herramientas en este entorno es una estrategia de defensa fundamental contra los ataques cibernéticos.

Resumen

Freidoras explosivas, vehículos descarriados… ¿estamos en peligro real?

mientras ellos están allí algunos estándares y regulaciones con respecto a las mejores prácticas de desarrollo seguro, para estar seguros, debemos tomar medidas mucho más precisas y significativas hacia todos los tipos de seguridad del software. Puede parecer complicado pensar en un problema que puede ser causado por alguien que irrumpe en una freidora, pero ha tomado la forma de un ataque de ejecución remota de código (permitiendo que el actor de la amenaza eleve la temperatura a un nivel peligroso), como así como vulnerabilidades que conducen a la adquisición de vehículos.

Los vehículos son especialmente complejos, con muchos sistemas integrados a bordo, cada uno de los cuales se encarga de microfunciones; todo, desde limpiaparabrisas automáticos hasta capacidades de motor y freno. Conectado con un número cada vez mayor de tecnologías de comunicación, como Wi-Fi, Bluetooth y GPS, el vehículo conectado representa una infraestructura digital compleja que está expuesta a múltiples vectores de ataque. Y con 76,3 millones de vehículos conectados en todo el mundo que se espera que salgan a las carreteras para 2023, es un monolito de bases de defensa para brindar seguridad real.

MISRA es una organización clave que lucha bien contra las amenazas de los sistemas integrados, ya que ha desarrollado pautas para facilitar la seguridad, la portabilidad y la confiabilidad del código en el contexto de los sistemas integrados. Estos lineamientos son la estrella del norte en los estándares que toda empresa debe buscar en sus proyectos de sistemas embebidos.

Sin embargo, crear y ejecutar código que se adhiera a este estándar de oro requiere ingenieros de sistemas integrados que estén seguros, sin mencionar la seguridad, conscientes de las herramientas.

¿Por qué la mejora de la seguridad integrada es tan específica?

Los lenguajes de programación C y C ++ son geriátricos según los estándares actuales, pero siguen siendo ampliamente utilizados. Forma el núcleo funcional de la base de código de los sistemas integrados, y el C/C++ integrado disfruta de una vida moderna reluciente como parte de un mundo de dispositivos interconectados.

Aunque estos lenguajes tienen raíces relativamente antiguas, y muestran un comportamiento de vulnerabilidad similar a problemas comunes como errores de inyección y desbordamiento de búfer, para que los desarrolladores realmente logren mitigar las vulnerabilidades de seguridad en los sistemas integrados, deben estar familiarizados con el código. que imita los entornos en los que trabajan. La capacitación general de C en los procedimientos generales de seguridad simplemente no será tan efectiva y memorable como cuando pasa más tiempo y atención trabajando en el contexto de Embedded C.

Con una docena a más de cien sistemas integrados en un vehículo moderno, es esencial que los desarrolladores reciban capacitación precisa sobre qué buscar y cómo solucionarlo, directamente en el IDE.

Proteger los sistemas embebidos desde el principio es responsabilidad de todos

El statu quo en muchas organizaciones es que la velocidad de desarrollo supera la seguridad, al menos en términos de responsabilidad del desarrollador. Su capacidad para generar código seguro rara vez se evalúa, pero el rápido desarrollo de características sorprendentes es un indicador de éxito. La demanda de software solo aumentará, pero esta es la cultura que nos ha preparado para la batalla perdida contra las vulnerabilidades y los subsiguientes ataques cibernéticos que permiten.

Si los desarrolladores no están capacitados, no es su culpa, y es un vacío que alguien en el equipo de AppSec debe llenar recomendando los programas de capacitación adecuados disponibles (sin mencionar los evaluables) para toda su comunidad de desarrollo. Al comienzo de un proyecto de desarrollo de software, la seguridad debe ser lo primero y todos, especialmente los desarrolladores, deben considerar lo que necesitan para desempeñar su papel.

Experimente problemas de seguridad con sistemas integrados

Los desbordamientos de búfer, los errores de inserción y los errores de lógica comercial son errores comunes en el desarrollo de sistemas integrados. Cuando se entierra profundamente en el laberinto de los microcontroladores en un solo vehículo o dispositivo, puede ser un desastre de seguridad.

Un desbordamiento de búfer es especialmente común, y si desea profundizar en cómo ayudó a comprometer la freidora de la que hablamos anteriormente (permitiendo la ejecución remota de código), consulte este informe en CVE-2020-28592.

Ahora es el momento de probar la vulnerabilidad de desbordamiento de búfer en código C / C ++ incorporado real. Juegue este desafío para ver si puede encontrar, identificar y corregir los patrones de codificación incorrectos que conducen a este error insidioso:

[PLAY NOW]

¿Cómo hiciste eso? Visite www.securecodewarrior.com para obtener capacitación precisa y efectiva sobre seguridad de sistemas integrados.

Continua leyendo