¿Es posible explotar desbordamientos de búfer de pila en una placa de Arduino?
Respuestas
¿Demasiados anuncios?Tu pregunta puede ser leído de dos maneras, DarkCoffee:
Si un particular dispositivo basado en Arduino puede ser inducida por el desbordamiento de la pila, puede ser explotado?
Sí, es posible explotar un desbordamiento de pila en una placa Arduino.
Un posible ataque es la función de colas método, que requiere suficientemente complejo firmware. Así, uno de defensa aquí es mantener su firmware tan simple como sea posible. Es muy poco probable que el Arduino "hola mundo" sketch es vulnerable. Eso no debería ser una gran comodidad para usted, sin embargo, debido a que un LED intermitente no es muy útil. Útil firmware tendrá más funciones, y por lo tanto más la función de las colas de la cosecha para su uso en una máquina abstracta.
El Arduino también tiene un gestor de arranque, que intrínsecamente tiene el poder sobreescribir el firmware. Es posible explotar a sobreescribir benigno, pero vulnerables firmware con maligna de firmware.
Mi lectura de la primera página de el INRIA ataque de papel me lleva a creer que combina ambos enfoques: la función de la cola de la cosecha para ejecutar el código necesario para activar el auto-actualización de la capacidad de los AVR, por lo que el código arbitrario puede ser permanentemente cargado.
Hay desbordamiento de la pila de ataques en los Arduinos en general?
No estoy al tanto de cualquier ataque que funciona en todas basado en Arduino dispositivos. De nuevo, el "hola mundo" LED luz intermitente del boceto es, probablemente, invulnerable, simplemente porque es demasiado trivial para ser vulnerable.
El código más escribes, más probable es que usted va a crear una vulnerabilidad.
Tenga en cuenta que la escritura de 5.000 líneas de código, a continuación, la sustitución de 2 kLOC con 1.000 nuevas líneas no es un ahorro neto de 1 kLOC, desde un punto de vista de seguridad. Si esos 5 kLOC fueron seguras y usted desordenado, mientras que la escritura de algunos de los nuevos 1 kLOC, es una vulnerabilidad. La moraleja de la historia es que la mayoría de código de seguridad tiende a ser el que se clavó en la más larga, y eso significa que mantiene inalterado el mayor tiempo posible.
Obviamente, cada vulnerabilidad debe ser reparado lo antes posible. Esto no es argumento para mantener viejas vulnerabilidades alrededor. Es un argumento en contra de la adición de características irreflexivamente a código que se creen seguras aunque inspección, auditoría y análisis.
Lo importante es que no podemos responder a esta pregunta con un "no" con nada parecido a la certeza absoluta, a menos que formalmente se verifique un determinado Arduino sistema, como implementar, instrucción por instrucción, y ni siquiera entonces.
Los Arduinos han opcional interfaces ethernet y otra forma de comunicación a distancia, por lo remoto de los exploits son posibles en el concepto. Hay una pila TCP para conexiones en red, e incluso si es pequeño y simple, que podría tener defectos.
Pero, en concreto, son la pila de desbordamientos de búfer posible? Considere la posibilidad de que el Atmel AVR procesadores tienen una arquitectura Harvard, lo que significa que el código y los datos reside en diferentes espacios de memoria. Que tiende a descartar explota, donde el código es inyectado en la pila y posteriormente ejecutado. Una dirección que se coloca en la pila mediante un vector de ataque será interpretada en el espacio de código, mientras que el resto de ataque vector de bytes que contiene la carga maliciosa en el espacio de los datos.
Si usted mira lo que normalmente se obtiene explotado en sistemas x86, es decir, la pila se desborda, desbordamientos de pila, seh sobrescribe, cadenas de formato, etc no hay que la gran superficie de ataque. Con la posible excepción de las cadenas de formato no veo ninguno de esos ataques de trabajo desde la arquitectura simplemente no lo permite.
Si usted está interesado en este tipo de investigación, recomiendo mirar el reloj y el voltaje de fallas, esto a menudo permite la extracción de información de los dispositivos, incluso cuando está bloqueado, y sólo buggering con ellos en general. También se podría tratar de una diferencia de poder de análisis si usted está para arriba para las estadísticas. Por último sincronización de los ataques son probablemente los más fáciles de explotar si usted está buscando algo para empezar.
En la recta de hardware lado hay un programa llamado degate que permite invertir fichas en el silicio nivel. Ha habido un par de decente discursos de la conferencia sobre el tema y es probable que el amor de aquellos.
No es algo a explotar en un procesador embebido el ATmega (usa en Arduino) puesto que hay solamente una ejecución (acceso completo) y no lujo cosas como Intel/AMD CPU anillo de protección (manteniendo el código de usuario de código del kernel en hardware).
Si conexión un depurador obtienes acceso a RAM y flash, por lo que no es necesario explotar nada, realmente...
Búfer explota con intención de control a través de trabajo único de incection de código contra la arquitectura de Princeton, porque el almacenamiento de datos y programa comparten la misma memoria.
Ahora nuestro Atmel poco valiente tiene una arquitectura de Harvard, ejecuta código desde una memoria diferente de datos. Y nuestro desbordamiento astutamente explotada sólo puede escribir a SRAM, que no se puede ejecutar.
Podría crash el Arduino, sin embargo, si usted tiene una manera de transferir datos en el búfer.