Un programador de 15 años llamado Saleem Rashid dio a conocer una falla de seguridad en las carteras frías de Ledger Nano S y la compañía lanzó una actualización para corregirla.
La vulnerabilidad que detectó Rashid permitía que un atacante pudiese robar las claves privadas de los dispositivos incluso antes de que un usuario recibiera su cartera fría, en algún punto de la cadena de suministro, y también de forma remota.
Según explicó Saleem Rashid en su publicación, se trataría de una vulnerabilidad arquitectónica relacionada con las limitaciones del Elemento Seguro (SE) y que involucraría al microcontrolador (MCU) y el firmware, siendo el MCU un chip no seguro y el firmware del MCU fácil de reemplazar por los atacantes.
Rashid explicó que el SE se comunica con el MCU y verifica si el firmware que ejecuta es genuino de Ledger; con la vulnerabilidad un atacante podría hacer que la SE considere genuino a un software malicioso y así accedería a la interfaz de usuario y botones de hardware, y consecuentemente, podría acceder e incluso cambiar la semilla de recuperación.
Rashid señaló que la vulnerabilidad podía ser explotada por tres métodos: un acceso físico antes de la configuración de la semilla de recuperación, lo que llamó ataque a la cadena de suministro; un acceso físico después de su instalación y en tercer lugar, a través de un ataque de malware.
Rashid se enfocó en los ataques a la cadena de suministro, en donde existe acceso físico al hardware antes de que el usuario final configure la semilla de su cartera. Por ejemplo, un distribuidor de carteras frías podría copiar la semilla de recuperación de las carteras antes de venderlas al público, y después acceder a los fondos de quienes las compraron, ya que al tener la semilla de recuperación, podría controlar las claves privadas del dispositivo.
En el caso de un acceso físico después de su instalación, Rashid explicó que se podría generar un tipo de ataque llamado «Doncella Malvada», en el que un atacante podría instalar un software, específicamente un firmware de MCU personalizado que pueda filtrar las claves privadas sin que el usuario lo sepa.
“No requiere malware en la computadora de destino, ni requiere que el usuario confirme ninguna transacción. A pesar de los reclamos de lo contrario, he demostrado este ataque en un Ledger Nano S. Además, envié el código fuente a Ledger hace unos meses, para que pudieran reproducirlo”, aseveró el programador.
Con respecto a la tercera forma de explotar la vulnerabilidad, Rashid indicó que solo sería necesario conectar el dispositivo a una computadora infectada y actualizar el firmware de MCU. «El malware puede actualizar la MCU con código malicioso, lo que permite que el malware tome el control de la pantalla confiable y los botones de confirmación en el dispositivo», señaló.
Rashid explicó que no había recibido ninguna recompensa por parte de la empresa por haber detectado la vulnerabilidad, lo que le hubiese imposibilitado la publicación de su informe.
Opté por publicar este informe en lugar de recibir una recompensa de Ledger, principalmente porque Eric Larchevêque, CEO de Ledger, hizo algunos comentarios sobre Reddit que estaban llenos de imprecisión técnica. Como resultado de esto, me preocupó que esta vulnerabilidad no se explicaría adecuadamente a los clientes.
Saleem Rashid
Programador
La respuesta de Ledger
La empresa publicó un reporte sobre la revisión de las fallas, asegurando que la falla encontrada por Rashid, es real y que la verificación del Elemento Seguro al microcontrolador “no era lo suficientemente robusta”. Según Ledger, con la actualización 1.4.1 del firmware esta falla se soluciona completamente, toda vez que la empresa tomó varias medidas, que mostramos a continuación:
Nuestra actualización es bastante simple, pero completamente eficiente:
– El código MCU se ha refactorizado para evitar la simple duplicación de códigos
– La verificación de la firma ahora se aplica utilizando dos mecanismos diferentes;
– Dirección de aleatorización de búsqueda
– Limitaciones de tiempo que evitan que la MCU «descomprima» datos para enviar al SE
– Varios códigos CRC y comprobaciones se agregan llenando la memoria de la MCU y evitando la modificación de la memoria sin detección.
Saleem Rashid
Programador
La empresa agradeció al programador por el examen y el reporte de la falla, así como “su ayuda y su profesionalismo a través del proceso de divulgación”, de acuerdo con la publicación de su blog. Además, instaron a los usuarios de este dispositivo a actualizar el firmware a su versión 1.4.
We have published a full detailed analysis of the security issues patched in firmware 1.4.1. We thank the three security researchers Timothée Isnard, Saleem Rashid and Sergei Volokitin for their hard work https://t.co/E28JwlosGD
— Ledger (@LedgerHQ) 20 de marzo de 2018
No es primera vez que el hardware de Ledger recibe críticas acerca de sus características y vulnerabilidades. Ya en 2016 un usuario de Bitcointalk.org inquirió sobre la posibilidad de que alguien conociera las claves de recuperación precargadas en las carteras y cómo era posible garantizar que en el proceso de producción alguien no hubiese tenido acceso a esta data.
Más recientemente, a principios de febrero, el CTO de Ledger, Nicolas Bacca, se negó a adoptar públicamente unas correcciones sugeridas sobre la posibilidad de que un malware modificara la dirección de destino de los fondos, aunque posteriormente actualizaron y corrigieron dicha vulnerabilidad.
Más temprano, en octubre del año pasado el director de energía de ConsenSys, Karl Kreder, explicó que las carteras de Trezor y Ledger, poseen ciertos rasgos de vulnerabilidad que violan la promesa de seguridad que tienen los dispositivos frente a ataques, por lo que no es primera vez que las carteras frías de Ledger son puestas bajo la lupa.