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.
El protocolo de
comunicación utilizado por oBike es el siguiente:
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.
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): https://github.com/antoinet/obike
Fuente:
Hispasec