Si tienes un SSD Crucial MX500 debes saber que no es seguro: sufre una vulnerabilidad que puede permitir la fuga de tus datos o bloquearlo
Un nuevo caso de vulnerabilidad en SSD, que en este caso y dado el modelo que es, afectará a cientos de miles de usuarios. Crucial es una de las marcas más queridas y respetadas del sector dentro de dichos SSD con modelos míticos como del que toca hablar hoy, y es que la compañía ha visto cómo sus MX500 sufren una vulnerabilidad crítica que causa una fuga de datos de la unidad, incluso en su último y más avanzado firmware.
Para el que no lo sepa, Crucial ha dotado a lo largo del paso del tiempo de dos controladoras distintas, pero extremadamente similares, a sus MX500. En concreto, hablamos de las SM2258 y las SM2259, ambas fabricadas por Silicon Motion y que son tan similares que comparten firmware por parte de Crucial, y es ahí precisamente donde está el problema y el por qué ninguna de las dos se salva.
Las controladoras hacen la diferencia en el hardware, pero no en el software
Diremos brevemente las diferencias, ya que ambas comparten firmware y esto es crucial, nunca mejor dicho. La más nueva SM2259 es una versión mejorada que ha sido construida en 28 nm por los 40 nm de la SM2258, y además, tiene soporte para memorias NAND Flash QLC, lo que la lleva a mejorar la eficacia de las demandas de lectura y escritura.
Además, y para finalizar las diferencias, la más nueva integra algoritmos Wear Leveling para nivelar el desgaste de las celdas de memoria, y por si fuese poco, incluye ECC en su haber. El resultado es que Crucial pudo elevar la capacidad de estos modelos MX500, hacerlos más fríos y eficientes, a la vez que más duraderos para los usuarios.
¿Por qué es relevante esto? Pues debido a que todos los problemas con la vulnerabilidad se identificaron en el mecanismo de actualización del firmware de ambas controladoras SSD, para ser específicos y según hemos podido saber por su CVE, desde el controlador de comandos del microcontrolador.
El último firmware M3CR046 está afectado, pero no se han comprobado los anteriores
Es lo más curioso del caso, aunque como el último es la actualización de los anteriores, se presupone que el resto también está afectado. Esto deja a todos los MX500 como inseguros, puesto que la vulnerabilidad CVE-2024-42642 afecta a todos por igual sin importar la versión o la controladora.
Se han detectado tres errores concretos dentro de la vulnerabilidad que pasamos a citar según su CVE:
Error 1
Este problema se refiere a los casos en los que el primer fragmento enviado es de un tamaño mayor que el
0x200
de los sectores. Si echamos un vistazo al interior del controlador de comandos ATA, específicamente a la lógica que se ejecuta cuando el tamaño del fragmento es mayor que el tamaño del sector y cuando el fragmento es el primero que se envía.Error 2
La imagen de descarga de entrada (para
M3CR046
) tiene un tamaño de0x242400
bytes y dentro de esta imagen hay 3 imágenes de firmware internas, de las cuales solo una de ellas se escribe en la memoria flash después de un proceso de actualización de firmware; cada una de estas imágenes tiene un tamaño de0xC0C00
bytes (o0x606
sectores). Esto significa que, cuando el mecanismo de actualización de firmware extrae la copia de firmware correcta de la imagen de descarga de entrada, debe verificar que su tamaño no exceda0xC0C00
los bytes. El controlador intenta hacerlo, pero hay algunos casos especiales que pueden provocar un comportamiento inesperado.Error 3
Como se indicó, el tamaño de la imagen descargada es de tamaño
0x242400
(o0x1212
sectores). El firmware verifica que el tamaño total de la imagen transferida no exceda este tamaño verificando que el próximo desplazamiento no exceda0x1212
los sectores. Esta verificación tiene sentido, pero el cálculo del próximo desplazamiento es erróneo
Reproducción de errores en el Crucial MX500 y su vulnerabilidad en el firmware M3CR046
El código fuente que reproduce todos los errores mencionados anteriormente se proporciona como parte de este repositorio. Para el error n.° 1 y el error n.° 2, el comportamiento esperado es que la unidad se bloquee hasta el próximo ciclo de encendido. Para el error n.° 3, el código fuente proporcionado no necesariamente bloquea el controlador, pero sí realiza una sobrescritura importante más allá del búfer de descarga.
En definitiva, los Crucial MX500 sufren una vulnerabilidad de tipo desbordamiento de búfer que, como bien cita el CVE, se desencadena al enviar paquetes ATA que son diseñados específicamente para las dos controladoras y el firmware en concreto. Como decíamos, es posible que el resto de firmware estén afectados puesto que se basan los unos en los anteriores, aunque esto no ha sido demostrado todavía.
Crucial ya está al tanto de esta vulnerabilidad, así que es cuestión de tiempo que lancen un firmware que la corrija, esperemos que, sin pérdidas de rendimiento, que no debería por la naturaleza de la misma. Por último, decir que todos los MX500 sin importar controladora o capacidad están afectados, tanto las versiones de 250 GB hasta las de 4 TB.
Actualización
Desde TechPowerUp ha surgido un nuevo usuario tras publicarse la noticia de esta vulnerabilidad que afirma ser el investigador que informó sobre este CVE denominado como lol1kVR, el cual, añade una serie de datos interesantes:
- Como alguien en los comentarios mencionó, para activar cualquiera de los errores informados bajo este CVE, uno debe tener acceso root a la PC que se comunica con el controlador. Por sí mismo, ciertamente no es algo trivial, pero existen todo tipo de métodos para lograrlo. Dado que el vector de ataque es local y se requieren privilegios elevados para esto, no es de extrañar que este CVE tenga una calificación de 6.7 (medio) en NVD, lo que significa que ciertamente no es tan crítico.
- Los primeros dos errores son en esencia ataques DoS, que no son particularmente un gran problema, sin embargo, el efecto es diferente a simplemente formatear la unidad o corromperla; este tipo de DoS no corrompe nada en la unidad (hasta donde puedo decir), pero hace que la unidad se bloquee, lo que la hace absolutamente insensible (a cualquier comando ATA) hasta el siguiente ciclo de energía. ¿Es este tipo de efecto interesante para los atacantes? Tal vez. Tal vez no, pero creo que aún así vale la pena informarlo.
- El último error es un desbordamiento de búfer controlado. Lo que esto significa es que, posiblemente con un poco más de investigación, se podría lograr la ejecución de código en el controlador SSD. Ahora bien, esto es mucho más interesante, porque los atacantes que residen dentro del controlador no están sujetos a todo tipo de mitigaciones aplicadas en los sistemas operativos host modernos.
- SM2259 es compartido entre varios proveedores de SSD y, por lo tanto, es absolutamente posible que cualquiera de estos errores también se aplique a ellos. Sin embargo, tenga en cuenta que los proveedores pueden realizar modificaciones de código en el firmware, lo que significa que estos errores específicos pueden no ser aplicables a ellos, pero pueden encontrarse otros similares dentro del mismo mecanismo vulnerable.
Seguiremos informando si hay más cambios o datos nuevos al respecto.