Seguridad

Vulnerabilidades en plataforma de alquiler de bicicletas oBike

Se han descubierto varias vulnerabilidades en el sistema de bloqueo que utiliza la plataforma de alquiler de bicicletas oBike. Un atacante remoto podría eludir el mecanismo de bloqueo mediante ataques de repetición para reproducir textos cifrados en función de valores predecibles.

oBike es una plataforma de alquiler de bicicletas sin estaciones (se pueden recoger y entregar en cualquier ubicación donde esté permitido aparcar bicicletas o vehículos) originaria de Singapur, opera en más de 40 ciudades de Europa, Asia y Oceanía.

Desde la aplicación para smartphones, el cliente reserva una bicicleta que se encuentre ubicada cerca de su zona y mediante el escaneo de un código QR puede desbloquear y comenzar a utilizar la bicicleta gracias a un dispositivo IoT integrado en ella que actúa como sistema de bloqueo. En el momento en que la bicicleta es desbloqueada comienza el periodo de alquiler por el cual se facturará en tramos de 30 minutos.

Concretamente el protocolo de comunicación utilizado por oBike es el siguiente:

Protocolo de comunicación de la plataforma oBike

La app envía un mensaje de saludo [1] con las coordenadas GPS para desbloquear la bicicleta a través de Bluetooth (BLE o ‘Bluetooth Low Energy’) y recibe una cadena de 32 bits utilizada como desafío (‘keySource’) [2]. Esta cadena se envía a los servidores de oBike [3] donde se procesa y se devuelve a la app [4] un índice de clave ‘encKey’ y un texto cifrado de 128 bits en ‘keys’. Nuevamente a través de BLE, la app envía a la bicicleta el texto cifrado truncado a 96 bits y el índice de clave ‘encKey’ [5] y la bicicleta es desbloqueada emitiéndose una respuesta de confirmación [6] con los valores ‘macKey’ e ‘index’. Como último paso, la aplicación envía a los servidores de oBike estos dos valores en el mensaje ‘lockMessage’ [7] con el cual el alquiler de la bici queda registrado y se inicia el periodo de facturación.

Previamente, al analizar este protocolo, se descubrieron algunas vulnerabilidades que se exponen en el proyecto ‘Exploration of Weakness in Bike Sharing System’ realizado por estudiantes de la ‘School of Computing (National University of Singapure)’ en 2017-2018. Estas podrían permitir falsear la ubicación de las bicicletas, realizar una denegación de servicio al hacer que el servidor establezca que la bicicleta está defectuosa por lo que dejaría de aceptar intentos de desbloqueo, e incluso omitir la confirmación en el paso 7, con lo cual la bicicleta quedaría desbloqueada pero el alquiler no sería registrado y por tanto el cobro tampoco sería efectuado.

Un análisis más reciente realizado por Antoine Neuenschwander ha determinado que:

  • El campo ‘keySource’ (usado en el paso [2]) no es un valor aleatorio generados por el dispositivo IoT de bloqueo sino que representa la cantidad de milisegundos desde que se encendió el chip (lo cual corresponde a una ventana temporal de algo menos de 50 días: 2^32 milisegundos).
  • El texto cifrado de 128 bits ‘keys’, resultante de una operación criptográfica desconocida basada en los valores ‘keySource’ y ‘encKey’, probablemente utilice un cifrado AES-128.
  • ‘encKey’ selecciona la clave de encriptación de un conjunto de 64 índices distintos determinados por el servidor.


También se ha observado que si se fijan los valores ‘keySource’ y ‘encKey’, el valor resultante de ‘keys’ es siempre igual. Esto permitiría realizar ataques de repetición para desbloquear la bicicleta, enumerando todos los valores posibles de ‘keySource’ y capturando los valores correspondientes ‘keys’ y ‘encKey’ siendo posible reproducir estos valores posteriormente y de forma offline, sin necesidad de conectar con el servidor. Además es posible limitar el número de valores a enumerar gracias a un comando BLE que provoca un reinicio del chip, con lo que el ataque se simplifica en gran medida.

Esta vulnerabilidad tiene asignado el identificador CVE-2018-16242.

Juan José Ruiz
jruiz @ hispasec.com

Más información:

obike:
https://www.o.bike

CVE-2018-16242:
https://nvd.nist.gov/vuln/detail/CVE-2018-16242

Exploration of Weaknesses in Bike Sharing System:
http://isteps.comp.nus.edu.sg/event/11th-steps/module/CS3235/project/3

Reverse engineering of the oBike protocol communication (BLE and HTTP):






Powered by WPeMatico

Gustavo Genez

Informático de corazón y apasionado por la tecnología. La misión de este blog es llegar a los usuarios y profesionales con información y trucos acerca de la Seguridad Informática.