A pesar del creciente número de ataques de red a dispositivos IoT, la seguridad del firmware a menudo se coloca en una posición secundaria.A medida que los atacantes penetran en la pila del sistema y se dirigen al proceso de arranque y la configuración de hardware subyacente, la elección de la arquitectura de memoria se ha convertido en una decisión clave para establecer una cadena de confianza verificable.
Por lo tanto, garantizar la seguridad del firmware requiere que cada componente se someta a una verificación de cifrado antes de su ejecución.responsable de cargar y verificar el firmware principalSin embargo, la tecnología de memoria utilizada en cada paso puede resultar en vulnerabilidad del firmware a modificaciones no autorizadas.
Memoria flash interna y externa
La ubicación física de la memoria no volátil utilizada para almacenar firmware es uno de los factores más críticos en los modelos de amenazas de dispositivos.Los ingenieros de firmware deben elegir entre flash integrado en el chip (eFlash) y módulos flash externos conectados a través de interfaces serie como SPI o QSPI.
La memoria flash incrustada generalmente se integra directamente en microcontroladores o chips SoC.Esta arquitectura proporciona el más alto nivel de seguridad física ya que no hay autobuses externos disponibles para que los atacantes manipulenIncluso el acceso a la memoria flash interna está controlado por registros y bits de bloqueo dedicados.
Además, la memoria flash incorporada soporta protección permanente de lectura.Los desarrolladores pueden desactivar las interfaces de depuración JTAG o SWD para evitar que los hackers modifiquen las imágenes del firmwareSin embargo, a medida que los SoC se mueven hacia nodos más pequeños, esta tecnología enfrenta importantes desafíos de escalabilidad.
Por el contrario, la memoria flash externa se coloca fuera del procesador principal y se comunica a través de una interfaz serial de alta velocidad.pero también expande la superficie de ataque del sistemaCualquier dato transmitido entre el procesador y la memoria flash externa es inherentemente vulnerable a amenazas como escuchas, ataques de hombre en el medio y manipulación física.
Para hacer frente a estos riesgos, los ingenieros de firmware deben implementar medidas de protección de hardware y software sólidos.Cuando el pin se coloca a una tensión específica, la lógica interna del chip evitará que se ejecuten comandos de borrado o escritura.
Figura 1: La memoria flash W77Q32JWSSIR TR de Winbond Electronics tiene capacidades complejas de cifrado de canales de comunicación.
Sin embargo, si los datos pueden ser leídos, simplemente bloquear la memoria flash no es suficiente.Esta vulnerabilidad ha llevado al desarrollo de dispositivos flash seguros especializados, incluyendo mecanismos de confianza basados en el hardware, canales de comunicación cifrados y contadores monótonos para evitar ataques de retroceso.
Sin embargo, si se elige la arquitectura de almacenamiento incorrecta, el dispositivo dejará defectos fundamentales que no pueden ser completamente corregidos por parches de software.los diseños que almacenan firmware en EEPROM externa sin cifrado o verificación son siempre vulnerables a los atacantes de hardwarePor el contrario, la elección de una memoria con restricciones excesivas puede afectar su funcionalidad.
Por lo tanto, los ingenieros deben comprender las mejores prácticas y técnicas de diseño para maximizar la seguridad del firmware a través de la arquitectura de memoria.
Mejores prácticas para el diseño de almacenamiento de firmware seguro
Al diseñar una ruta segura de almacenamiento de firmware desde el inicio hasta el tiempo de ejecución, los ingenieros de firmware deben seguir los siguientes principios:
1. Raíz de confianza basada en hardware
La ejecución siempre debe comenzar desde áreas de memoria inmutables. Por ejemplo, la ROM de arranque o el sector flash seguro permanentemente deben contener código para verificar todo el firmware.Esto asegurará que los atacantes no puedan eludir la verificación al manipular la contraseña inicial.
2Utilice firmas cifradas.
Configure el cargador de arranque seguro para que solo ejecute imágenes de firmware firmadas con claves privadas de confianza.Si se requiere la confidencialidad, el firmware almacenado puede ser cifrado.
3. Utilice las características de seguridad del hardware
Si la arquitectura del sistema utiliza almacenamiento externo, los ingenieros deben elegir dispositivos que admitan la seguridad del hardware, como la protección de contraseña incorporada o el cifrado simple.Aunque estos dispositivos pueden no ser tan robustos como los componentes completos de seguridad, añaden otra capa de protección.
Figura 2: Macronix admite MX25L3233FM2I-08Q 32 Mb de memoria flash NOR serie con interfaz periférica serie. (Fuente de imagen: Macronix)
4. Aislar el firmware y los datos
organizar el área de memoria y separar el código más sensible en MCU, colocar instrucciones de rutina críticas en un área de memoria segura incluso el firmware, si es compatible con el hardwarepuede marcar ciertos bancos de memoria flash como ejecutables o de solo lectura.
5. Plan de actualización del firmware de seguridad
Asegúrese de que el proceso de actualización en sí mismo se valide (por ejemplo, que se requiera la firma del paquete de actualización).deben adoptarse las mismas medidas de seguridad que el almacenamiento principal del firmware.

