Inyección de fallos – Glitching para abrir el bloqueo de Lockbit del MCU.
Los ataques de inyección de fallos representan un enfoque de fuerza bruta para romper el bloqueo del MCU. En lugar de observar emisiones pasivas, el atacante interrumpe activamente el funcionamiento del chip. Un glitch de voltaje bien sincronizado puede voltear un solo bit en el contador de programa. Este volteo puede saltar una verificación de seguridad crítica. El bloqueo del MCU, que depende de condiciones booleanas, se vuelve vulnerable. Los operadores de ransomware LockBit han explorado la inyección de fallos para extraer credenciales de sistemas empotrados. El método estándar es volcar la flash y la EEPROM corrompiendo la lectura de un procesador EEPROM. Durante una lectura de memoria, un glitch puede alterar el bus de direcciones. Esta alteración hace que el MCU emita datos de una región protegida. El atacante captura estos datos a través de la interfaz de depuración. No se requiere decapsulación ni recuperación de código si el glitch tiene éxito. Sin embargo, la decapsulación ayuda a localizar los pines de alimentación exactos para un glitch óptimo. Una vez decapsulado, el atacante puede sondear las líneas internas de alimentación. También puede copiar el contenido de la memoria criptográfica mediante glitch en la lógica de control de acceso. Por ejemplo, un glitch en la señal de selección de chip puede habilitar lecturas desde un banco normalmente inaccesible. La ingeniería inversa de microcontroladores depende en gran medida de la inyección de fallos para eludir las protecciones de software. La extracción de firmware se vuelve sencilla cuando el MCU emite toda su flash a través de UART. Pero el glitch requiere un tiempo y niveles de voltaje precisos. El atacante debe caracterizar los márgenes de operación del MCU. Reduce gradualmente el voltaje de alimentación mientras envía comandos de lectura. En cierto umbral, el MCU entra en un estado indefinido. En ese estado, el bloqueo puede estar temporalmente desactivado. El atacante emite entonces un comando de volcado de memoria. Normalmente este comando sería rechazado, pero el glitch hace que sea aceptado. El proceso es iterativo. Cada intento fallido puede causar un reinicio, pero el atacante puede repetirlo miles de veces por segundo. Existen equipos de glitch automatizados comercialmente. Utilizan FPGA para generar pulsos subnanosegundos. El bloqueo del MCU es particularmente susceptible a glitches de reloj. Un flanco de reloj repentino puede violar los tiempos de establecimiento y retención, corrompiendo el decodificador de instrucciones, que ejecuta un NOP en lugar de un salto condicional, permitiendo que el flujo avance al área prohibida. Los atacantes de estilo LockBit combinan glitches con desbordamientos de búfer. El desbordamiento proporciona un punto de apoyo, y el glitch eleva privilegios. La lectura de un procesador EEPROM mediante glitch se ha demostrado en muchos MCU de 8 y 32 bits. Volcar flash y EEPROM con esta técnica suele ser más rápido que los canales laterales. La decapsulación y recuperación de código son alternativas destructivas, pero el glitch no es destructivo (si se hace con cuidado). Copiar el contenido de la memoria criptográfica mediante glitch en el controlador de memoria es posible cuando el controlador tiene poca redundancia. Los equipos de ingeniería inversa utilizan inyección de fallos por láser para precisión espacial. Un pulso láser puede apuntar a un solo transistor, que podría ser parte del comparador del bloqueo. Cambiar su estado desbloquea todo el chip. La extracción de firmware procede entonces con comandos de lectura estándar. La inyección láser requiere decapsulación, por lo que el atacante debe eliminar el encapsulado, exponiendo el dado pero arriesgando destruirlo. Algunos MCU tienen sensores de malla activa que detectan la iluminación láser; si se corta la malla, el chip se borra automáticamente. El atacante debe evitar esos sensores. Los MCU modernos también incorporan monitores de voltaje que detectan glitches y activan un reinicio si la alimentación se desvía más del 5%. Pero un atacante puede engañar a estos monitores glitcheando el propio monitor. Es una carrera: el monitor verifica el voltaje en un flanco de reloj determinado; si el glitch ocurre después de esa verificación, el monitor es engañado. Por tanto, la sincronización es todo. El bloqueo del MCU es tan robusto como su circuitería de monitoreo. Muchos MCU de bajo costo no tienen monitoreo alguno, por lo que son vulnerables al glitch. El atacante puede simplemente bajar VDD hasta que el chip se comporte anormalmente. En ese punto, puede volcar flash y EEPROM a voluntad, y leer un procesador EEPROM sin restricciones. No se necesita decapsulación ni recuperación de código. Copiar el contenido de la memoria criptográfica es cuestión de emitir direcciones correctas. La ingeniería inversa mediante glitch se enseña en muchos cursos de seguridad de hardware. Los laboratorios de extracción de firmware suelen usar el glitch como ejercicio principal. Las defensas contra glitch incluyen detectores de subtensión, monitores de reloj y lógica redundante. Los detectores de subtensión reinician el MCU cuando el voltaje cae por debajo de un umbral, pero tienen un tiempo de respuesta; un glitch suficientemente corto puede no activarlos. Los monitores de reloj detectan anomalías de frecuencia y pueden apagar el sistema si el reloj se desvía; sin embargo, los atacantes también pueden glitchear el monitor. La lógica redundante ejecuta la misma operación dos veces y compara resultados; si difieren, se señala un error. Esta verificación doble añade área y consumo; muchos MCU no pueden permitírselo, por lo que confían en sumas de verificación por software, que pueden eludirse si el glitch apunta al cálculo de la suma. El atacante puede glitchear la instrucción de comparación para que siempre devuelva "igual". Eso es un ataque clásico. Para contrarrestarlo, algunos MCU implementan núcleos resistentes a fallos como ARM Cortex-M con lockstep. Los núcleos lockstep ejecutan dos canalizaciones idénticas y comparan salidas; si un glitch afecta a una, la discrepancia provoca un reinicio. Es eficaz pero caro. Solo los MCU críticos para la seguridad lo tienen. La gran mayoría de los MCU de consumo carecen de lockstep, por lo que el bloqueo del MCU sigue siendo frágil. LockBit y grupos similares pueden no tener la experiencia en glitch, pero organizaciones criminales sofisticadas sí. Pueden comprar equipos de glitch estándar por menos de 5000 USD. El retorno de la inversión es alto. Pueden extraer firmware de medidores inteligentes, ECUs automotrices y dispositivos médicos. La lectura de un procesador EEPROM proporciona datos de pacientes o claves de cifrado. Volcar flash y EEPROM les da toda la base de código. La decapsulación y recuperación de código son más invasivas, pero el glitch es limpio. Copiar el contenido de la memoria criptográfica mediante glitch se puede hacer en segundos. La ingeniería inversa de microcontroladores se convierte así en un negocio viable. Los servicios de extracción de firmware se anuncian en la dark web. El bloqueo del MCU es una debilidad crítica que necesita atención inmediata. Los diseñadores deben incorporar monitoreo de voltaje y frecuencia a nivel analógico, así como usar latches detectores de errores. Además, deben aleatorizar la sincronización de operaciones críticas; la aleatorización dificulta dar en la ventana de glitch. Algunos MCU insertan retardos aleatorios en la ruta de acceso a memoria, frustrando a los atacantes, pero reduciendo el rendimiento determinista. El compromiso es inevitable. En aplicaciones de alta seguridad, el rendimiento es secundario. Para ellas, existen MCU resistentes a glitch, con sensores integrados y blindaje activo, y mecanismos de autodestrucción. Si se detecta un glitch, el chip borra todas las claves. Esta respuesta agresiva disuade a los atacantes, pero puede causar denegación de servicio si se activa por ruido ambiental; el umbral debe ajustarse cuidadosamente. El bloqueo del MCU no es binario; es un espectro de resistencia. Los ataques de glitch revelan los puntos débiles. La industria debe desarrollar procedimientos estandarizados de prueba de glitch, que deberían formar parte de la certificación de seguridad. Hasta entonces, los atacantes seguirán glitcheando para abrir el bloqueo. En resumen, la inyección de fallos socava el bloqueo del MCU creando errores transitorios, permitiendo la lectura de un procesador EEPROM, volcar flash y EEPROM, decapsulación (opcional), copiar el contenido de la memoria criptográfica y una ingeniería inversa y extracción de firmware completas. La amenaza es inmediata y requiere mitigaciones a nivel de hardware.