¿Se pueden extraer los programas cargados en la placa NodeMCU?


13

Estoy usando una placa NodeMCU con capacidades WiFi para construir un rastreador de activos simple. He logrado encontrar algunos bocetos de Arduino que permiten la conectividad a Azure IoT Hub y publicar mensajes.

Una de las claves que necesito "cargar" en la placa es la cadena de Azure Device Connection y, por supuesto, un SSID y contraseña de WiFi.

Mi temor es que alguien simplemente tome la pizarra y "descargue" los archivos para obtener acceso a las credenciales de seguridad.

¿Mi temor es injustificado o la pérdida de credenciales es una amenaza real que necesito mitigar?


3
Creo que las respuestas de @Mike Ounsworth y Bence Kaulics juntas me dan una opción decente. Lamentablemente, no puedo marcar ambas como respuestas aceptadas.
carneros

Respuestas:


12

[descargo de responsabilidad: soy un profesional de seguridad / criptografía y trato con preguntas de arquitectura de seguridad como esta todos los días].

Te has topado con el problema de almacenar credenciales de tal manera que un proceso desatendido puede acceder a ellas, pero un atacante no puede. Este es un problema bien conocido y muy difícil de resolver.

Si su dispositivo IoT tiene un almacén de claves de hardware integrado en la placa base, como algunos TPM, o el equivalente al Keystore con respaldo de hardware de Android o Apple Secure Enclave, puede usarlo.

Con los servidores tradicionales, puede usar HSM o tarjetas inteligentes, pero la única solución de software completa que conozco es derivar una clave AES de algún tipo de "huella digital de hardware" creada combinando números de serie de todos los dispositivos de hardware. Luego use esa clave AES para cifrar las credenciales. Un proceso que se ejecuta en el mismo servidor puede reconstruir la clave AES y descifrar las credenciales, pero una vez que extrae el archivo del servidor, esencialmente no se puede descifrar.

IoT arroja una llave en eso por dos razones:

  1. La suposición de que los números de serie del hardware son únicos probablemente no se cumple, y

  2. A diferencia de los servidores, los atacantes tienen acceso físico al dispositivo, por lo tanto, probablemente puedan obtener un shell en el dispositivo para ejecutar el programa de descifrado.

Tanto el cifrado de hardware (TPM) como el cifrado de "huella digital de hardware" son ofuscación en el mejor de los casos porque, fundamentalmente, si un proceso local puede descifrar los datos, un atacante capaz de ejecutar ese proceso local también puede descifrarlos.


Así que el truco estándar parece que no funciona aquí. La primera pregunta que debe hacerse es:

  • ¿Cuál es mi modelo de amenaza / dónde se ubica este proyecto en la Secure <--> Convenientescala?

En última instancia, creo que debe decidir eso security > conveniencey hacer que un humano ingrese las credenciales después de cada arranque (usando algo como la respuesta de @ BenceKaulics ), o decide eso security < conveniencey simplemente coloca las credenciales en el dispositivo, tal vez usando algo de ofuscación si Siento que eso hace la diferencia.


Este es un problema difícil que se hace más difícil por la naturaleza de los dispositivos IoT.

Para completar, la solución industrial completa a este problema es:

  • Dele a cada dispositivo IoT una clave pública RSA única en el momento de la fabricación. Registre esta clave pública en una base de datos contra el número de serie del dispositivo.
  • Almacene las credenciales confidenciales en un servidor adecuado, llamémosle una "puerta de enlace".
  • Cuando un dispositivo IoT se autentica en la puerta de enlace (usando su clave RSA), la puerta de enlace abre una sesión para él usando las credenciales almacenadas y devuelve el token de sesión al dispositivo.
  • Para una mejor seguridad, la puerta de enlace es una puerta de enlace física (o VPN) para que todo el tráfico del dispositivo IoT pase a través de la puerta de enlace y usted tenga más control sobre las reglas del firewall y otras cosas, idealmente evitando que el dispositivo tenga acceso directo (sin túnel VPN) acceso a Internet.

De esta manera, un atacante que comprometa un dispositivo puede abrir una sesión, pero nunca tiene acceso directo a las credenciales.


2
Si. Una gran parte del problema es que lo que se intenta proteger aquí es el secreto compartido que es una contraseña wifi. Los secretos compartidos son una mala idea cuando un dispositivo puede ser diseccionado físicamente. Un mejor diseño segregaría cada instancia del dispositivo (u otra computadora) en su propio entorno de seguridad con un canal único y seguro entre cada dispositivo individual y los sistemas con los que necesitan comunicarse. Para el caso, es posible que wifi no se ajuste muy bien a la aplicación de todos modos frente a algún esquema punto a punto de 2.4 GHz o incluso el protocolo "Esp Now".
Chris Stratton

1
Buen punto. Puede solucionar el problema secreto compartido mediante el uso de certificados de cliente empresarial WPA2 en lugar de una contraseña SSID (si el dispositivo IoT es lo suficientemente grande como para tener una pila TLS, muchos no lo son). No sé nada sobre Azure IoT Hub, pero supongo que esas cadenas de Azure Device Connection ya son únicas por dispositivo. Desafortunadamente, esto parece ser un blanco y negro bastante limpio entre "bricolaje sin seguridad" y "seguridad a escala industrial" sin mucho en el medio.
Mike Ounsworth

2
Me pregunto, si puedo abrir una sesión a voluntad, ¿por qué necesitaría las credenciales?
Andrew Savinykh

1
@AndrewSavinykh Depende de cuáles sean las credenciales. Tal vez todo lo que hacen es abrir una sesión, en cuyo caso sí, no hay mucha razón. Pero tal vez sean credenciales AD de dominio de Windows, o den acceso a API adicionales que normalmente no se usan / no se pueden acceder desde el dispositivo IoT. Tal vez esté bien con las sesiones que provienen de dispositivos comprometidos, pero no está bien con las sesiones que provienen de las computadoras portátiles de los atacantes. Sí, se vuelve específico al caso de uso bastante rápido.
Mike Ounsworth

3
¿¿¿Números seriales??? Encontrar un número de serie que sea único no debería ser un problema, pero los números de serie no son secretos. Son inútiles para formar una clave. ¿Dónde diablos está usando números de serie para formar una clave un "truco estándar"?
Gilles 'SO- deja de ser malvado'

6

La amenaza es real, pero afortunadamente no es usted el primero o el único con este tipo de problemas de seguridad.

Lo que necesita es el ESP WiFi Manager es lo que necesita aquí.

Con esta biblioteca, el ESP que no tiene una sesión guardada cambiará al modo AP y alojará un portal web. Si se conecta a este AP con una PC o teléfono inteligente, podrá configurar las credenciales de WiFi a través de una página web.

No tiene que codificar la información crítica y puede usar su dispositivo en cualquier red WiFi que desee sin la necesidad de actualizarla.

Cómo funciona

  • cuando su ESP se inicia, lo configura en modo Estación e intenta conectarse a un Punto de acceso previamente guardado

  • Si esto no tiene éxito (o no se ha guardado ninguna red anterior), mueve el ESP al modo de punto de acceso y activa un DNS y un servidor web (IP predeterminada 192.168.4.1)

  • utilizando cualquier dispositivo habilitado para wifi con un navegador (computadora, teléfono, tableta) conéctese al Punto de acceso recién creado

  • debido al portal cautivo y al servidor DNS, obtendrá un tipo de ventana emergente 'Unirse a la red' o cualquier dominio al que intente acceder redirigido al portal de configuración

  • elija uno de los puntos de acceso escaneados, ingrese la contraseña, haga clic en guardar

  • ESP intentará conectarse. Si tiene éxito, vuelve a ceder el control a su aplicación. Si no, vuelva a conectarse a AP y vuelva a configurar.

(Documentación de ESP WiFi Manager)


1
O simplemente descargue los registros o lo que sea mientras esté en modo AP. Esperemos que el póster no esté tratando de usar wifi en sí para el seguimiento de activos.
Chris Stratton

1
@ChrisStratton :-) en realidad, estoy tratando de usar el WiFi para el seguimiento de activos. Afortunadamente, la red WiFI que uso es pública y abierta, pero me preocupan las implicaciones cuando necesito usar otra que necesite una contraseña. También el hecho de que la cadena de conexión de AzureIoT Hub está en el dispositivo.
carneros

2
@rams Seguramente, leer la EEPROM del dispositivo no sería una gran tarea.
Bence Kaulics

3
@rams En su hardware, sí, se puede leer EPROM. Los dispositivos más nuevos pueden tener algunas regiones flash seguras que están mejor protegidas. Ciertamente, este es un problema conocido que necesita soporte en chip para intentarlo y hacerlo correctamente.
Sean Houlihane

2
@SeanHoulihane: el ESP8266 no tiene EEPROM. El flash SPI que utiliza para todo (incluida la emulación de la funcionalidad de Arduino) es externo al ESP8266. Incluso en el módulo de múltiples chips, es un dado distinto que puede ser probado en un laboratorio decente.
Chris Stratton

3

Sí, pueden acceder a su contraseña si la deja como texto sin formato.

Lo bueno es que muchas interfaces de conexión wifi aceptan contraseñas hash. Si bien los que utilicé aceptaron hash md5 y md5 no son súper seguros, sigue siendo un desafío muy difícil para Joe promedio. Dependiendo de su archivo de configuración, puede indicar el nombre de su algoritmo de hash y luego escribir su contraseña o usar el predeterminado que usa su interfaz wifi.


3
Si pueden extraer una contraseña hash que funciona mientras está en hash, ¿qué les impide usarla sin revertirla?
Chris Stratton

1
@ChrisStratton tienes razón. Las formas de cómo prevenirlo es para Information Security SE, esta pregunta se hace para evitar la pérdida de credenciales. Sin embargo, las contraseñas hash todavía no pueden ser utilizadas por los móviles para conectarse a la red sin software adicional.
atakanyenel

1
Sí, en efecto, ofrecería cierta protección en el caso de la reutilización de la contraseña wifi en algún otro sistema, pero no mucho contra la conexión no autorizada a ese punto de acceso wifi.
Chris Stratton

1
@ChrisStratton, sí, por ejemplo, la lista blanca de MAC es mucho más segura que simplemente tener una contraseña y cifrarla, pero estos pasos son para la seguridad wifi en general, no para la privacidad de las credenciales en los dispositivos públicos.
atakanyenel

2
No, la lista blanca de MAC es una broma: no hay ningún secreto en absoluto. Y, por supuesto, el MAC se extrae fácilmente del ESP8266 robado o su flash SPI. El único lugar en el que la lista blanca de MAC ayudaría es contra las personas que usan una GUI para unirse a redes wifi, o si un punto de acceso estaba allí esperando una conexión de un cliente que podría aparecer algún día, pero nunca se había conectado a ella , es decir , espada en la piedra tipo cosas.
Chris Stratton

1

Respuesta simple: sí. Se puede hacer. Debe, al menos, realizar algún tipo de ofuscación para proporcionar una protección mínima.


1
La ofuscación hace que sea más difícil descubrir cómo funciona el dispositivo, pero es inútil proteger contra la clonación del dispositivo. Es inútil protegerse contra la extracción de credenciales: todo lo que tiene que hacer es ejecutar el firmware en un emulador.
Gilles 'SO- deja de ser malvado'

Totalmente de acuerdo. Mi motivación para dar esa respuesta fue notar que <la seguridad de la red IoT debe considerarse>. @ Mike Ounsworth dio una respuesta detallada sugiriendo soluciones usando infraestructura AES y / o RSA. Estoy considerando dar una respuesta más, pero no estoy seguro de cómo sumergirme en la criptografía (también estoy durante muchos años en soluciones de pago y bancarias). Mi opinión es que tenemos que proporcionar consejos prácticos / equilibrados porque, por lo general, las personas evitarán profundizar en la criptografía para proteger los dispositivos IoT en su patio trasero.
Amit Vujic

1
Si las personas desean crear dispositivos inseguros porque no pueden molestarse en descubrir cómo crear dispositivos seguros, no veo ninguna razón para habilitarlos.
Gilles 'SO- deja de ser malvado'

Mi experiencia es que las personas quieren aprender, pero nuevamente, debe haber un equilibrio entre el nivel de seguridad y la complejidad. Hay una historia famosa en la industria de pagos con respecto a SET ( en.wikipedia.org/wiki/Secure_Electronic_Transaction ) que es / era muy seguro pero complejo de implementar y por eso falló en la práctica.
Amit Vujic

2
La ofuscación agrega complejidad sin mejorar la seguridad. Eso no es equilibrio.
Gilles 'SO- deja de ser malvado'
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.