Vista de perfil de Elfy, sentada en una silla de ruedas, hablando en un escenario con micrófono de diadema y fondo azul.
 

39º Chaos Communication Congress

Elfy. Pwn2Roll – Who needs a 599€ remote when you have a wheelchair? («Pwn2Roll – ¿Quién necesita un mando de 599 € cuando tienes una silla de ruedas?»).
Charla presentada en el «39.º Chaos Communication Congress (39C3)», encuentro internacional de hackers celebrado en Alemania. Contenido original en inglés.

Accede a la charla original en inglés: Pwn2Roll – Who needs a 599€ remote when you have a wheelchair? Traducción y adaptación no profesional realizadas por ACCIUMRed para lectura personal.

Lectura simplificada

Elfy es una persona especialista en tecnología y seguridad informática.
Tiene esclerosis múltiple y usa un sistema eléctrico que ayuda a mover su silla de ruedas.

En esta charla, Elfy explica que el dispositivo funciona bien para desplazarse,
pero que la empresa que lo fabrica bloquea funciones básicas y obliga a pagar por ellas.

Por ejemplo, si Elfy quiere:

• cambiar el modo de ayuda de su silla (por ejemplo, casa o calle),
• usar su móvil como mando,
• ir un poco más rápido,

tiene que pagar más dinero dentro de una aplicación, aunque la silla ya hace todo eso.

Elfy demuestra que no hace falta comprar nada más, porque la silla ya tiene esas funciones.
La empresa las bloquea con programas informáticos solo para ganar más dinero.

En la charla, también explica que el sistema de la empresa no es seguro.
Las claves que controlan la silla están mal protegidas y cualquiera puede obtenerlas.

Eso significa que cualquiera podría tomar el control de la silla.

Por ejemplo, podría:

• reducir la velocidad,
• impedir que la persona se mueva,
• provocar una situación peligrosa.

Esto es un riesgo grave, porque la persona depende de ese dispositivo para moverse.
Para demostrarlo, Elfy analiza la tecnología del sistema: su aplicación, los mandos y cómo controlan la silla.

El objetivo de la charla es denunciar que un dispositivo de apoyo no debería poner barreras, riesgos ni costes extra a las personas que lo necesitan.

Elfy defiende que las personas tienen derecho a entender y controlar la tecnología de la que dependen.
Por eso comparte información y herramientas para ayudar a otras personas y exigir más transparencia a las empresas.

El material de ayuda está publicado en su repositorio de GitHub: https://github.com/roll2own.

    Texto en letras blancas irregulares sobre fondo oscuro con interferencias: «You wouldn’t hack a wheelchair?» («¿No piratearías una silla de ruedas?»).
    ALT. Texto en letras blancas irregulares sobre fondo oscuro con interferencias: «You wouldn’t hack a wheelchair?» («¿No piratearías una silla de ruedas?»).

    Introducción

    Un control remoto para silla de ruedas de 595 € que envía varios comandos Bluetooth. Una función de la app de 99,99 € que hace exactamente lo mismo que el hardware de 595 €. Una mejora de velocidad de 6 a 8,5 km/h con un precio de pago de 99,99 €, porque, al parecer, coger el autobús es una función premium.

    ¡Bienvenido al maravilloso mundo del DRM en dispositivos de asistencia, donde la movilidad básica, ya de por sí cara, tiene un coste adicional e incluye compras dentro de la app! Y como los hackers van a hackear, esto no podía quedar impune.

    Esta charla describe la ingeniería inversa de un popular sistema de accionamiento de silla de ruedas eléctrica: el Alber e-motion M25: un dispositivo de asistencia de varios miles de euros que trata la movilidad como una suscripción SaaS. Mediante ingeniería inversa de aplicaciones Android, análisis de protocolos Bluetooth propietarios, horas de observación de volcados hexadecimales (en lugar del vacío) y el clásico rastreo de paquetes, expondremos cómo los fabricantes limitan artificialmente las funciones esenciales y monetizan la movilidad humana básica.

    Un par de ruedas para silla de ruedas con sistema integrado.
    Aro con regulador de asistencia eléctrica.
    Batería circular acoplable a la rueda.
    Módulo central del motor integrado en la rueda.
    Cargador de batería con cables y conectores.
    Control portátil con pantalla y botones.

    Componentes del dispositivo de ayuda a la propulsión eléctrica Alber e-motion. De tu izquierda a tu derecha: ruedas, aros de propulsión, baterías, motor integrado, cargador de batería y mando a distancia.

    Lo que aprenderás:

    • Cómo una etiqueta con un código QR de 22 caracteres, etiquetada como «Clave de ciberseguridad», se convierte en cifrado AES
    • Por qué su unidad de silla de ruedas de 6000 € incluye una aplicación con integración de facturación de Google Play para funciones que el hardware ya admite
    • Los componentes internos, las posibilidades y las características de una electrónica que vale 30 € disfrazada de dispositivo médico de 595 €
    • La implementación técnica del limitador de velocidad «paga 99,99 € o sigue lento» (6 km/h frente a 8,5 km/h)
    • Cómo se pueden sustituir casi 2000 € en hardware y funciones de aplicaciones por unos pocos cientos de líneas de Python
    • Por qué la variante premium (autónoma) de 8000 € tiene un hardware literalmente idéntico con un indicador booleano y un firmware diferentes, además de otro control remoto (más caro).

    Cubriremos la metodología completa: desde el reconocimiento inicial, el rastreo y descifrado de paquetes para realizar ingeniería inversa del protocolo de comunicación propietario, hasta PoC de reemplazos de Python, herramientas, técnicas y consideraciones éticas de ingeniería inversa de dispositivos médicos.

    Esta es una historia sobre la escasez artificial, el DRM explotador, la ética y el poder de la industria, y cómo las criaturas con mentalidad hacker deberían reaccionar y actuar ante esto.

    Esta charla será interpretada simultáneamente en lengua de signos alemana (Deutsche Gebärdensprache también conocida como DGS).



    Transcripción

    00:00:16.760 → 00:00:18.559

    Elfy (dirigiéndose al auditorio):

    Necesito sacar primero mis notas. Hoy LibreOffice decidió cargarse mis presentaciones, así que vamos a improvisar un poco.

    Gracias por venir y por la cálida bienvenida. Creo que nos vamos a divertir un poco aquí. Un poco de diversión sarcástica. Lo cierto es que no es tan divertido…

    Abro mis notas y empezamos. ¿Dónde está la ventana? ¡Aquí!

    00:00:52.920 → 00:01:24.450

    Uso una silla de ruedas de vez en cuando, especialmente en eventos como este, y tengo un hardware específico para ello.El hardware lo paga un seguro médico alemán (Krankenkasse) y, la verdad, es bastante decente: hace su trabajo y funciona de forma cómoda.

    Es similar a una bicicleta eléctrica: proporciona asistencia, no se mueve por sí solo. Pero yo tengo una variante que sí puede moverse por sí misma.

    Así puedo desplazarme sin manos, por ejemplo al subir una cuesta o en otros momentos del día en los que necesito conservar energía. En esos casos puedo usar la función completa de automatización.

    Es un hardware muy bueno: me gusta mucho y hace exactamente lo que se supone que tiene que hacer. Es una buena solución cuando se necesita.

    00:02:29.310 → 00:02:42.629

    Cuando conseguí este sistema de tracción en 2023, pagué 3.000 euros más por la variante de conducción autónoma. El seguro no me lo cubría. Tras seis meses discutiendo con ellos y conseguir que aceptaran cubrir costes, me dijeron que cubrirían la versión básica.

    Les respondí: «Vale. Yo pagaré los 3.000 euros de mi propio bolsillo, porque podía estar otros seis meses yendo y viniendo entre fabricante y seguro, o simplemente pagar y tener tranquilidad».

    Decidí darles mi dinero y quedarme en paz.

    00:03:31.490 → 00:03:49.129

    El sistema de tracción en sí es bueno. Tiene principalmente dos modos de conducción: uno más pensado para exteriores, con mayor alcance cuando empujo la silla, y otro para interiores.

    Para cambiar entre estos modos, el fabricante vende un mando a distancia. Es uno de los dos mandos que voy a mostrar hoy. Os lo muestro solo para ilustrar lo absurdo. No tiene prácticamente hardware. Hablaremos de él más tarde.

    Y también hay un segundo mando. Ese segundo mando se utiliza para la conducción autónoma: se puede girar y la silla se mueve hacia delante.

    Conseguí este sistema de tracción en 2023. Leí un poco los manuales y había indicios de que se podía usar una aplicación para sus funciones, así que la descargué. Y me encontré con algunas sorpresas.

    La primera sorpresa fue que vendían funciones con DRM (Gestión de Derechos Digitales): podías comprar por 300 euros funciones como ir más rápido de 6 km/h o sustituir este mando físico por un mando «software» dentro de la app del fabricante.

    Y sí, eso me pareció realmente raro.

    Luego, dentro de la app, descubrí un acceso a modo distribuidor. Aparentemente, era para distribuidores, no para la plebe que quiere configurar su propio sistema de tracción.

    En ese modo se podían ajustar parámetros como el comportamiento de conducción o cuánto avanzaba con un solo empuje; y había funciones que se comercializaban por 99 euros como características con DRM.

    Pero el cambio entre los dos modos de asistencia estaba disponible ahí, sin pagar. Y a partir de este punto empieza toda mi investigación.

    00:05:55.129 → 00:06:10.449

    Al parecer, no era un «límite del hardware», sino una imposición por software: una función de pago para acceder a una interfaz que permite alternar entre el modo de asistencia 1 y el modo de asistencia 2.

    Y, por supuesto, el modo distribuidor podía acceder a eso sin pagar.

    Para entrar, solo había que saber la contraseña… que no estaba muy bien escondida: estaba en algunos PDFs en internet, para «negación plausible». Aunque yo la obtuve desde la app de Android.

    Este detalle lo encontraremos varias veces a lo largo de la charla: la gestión de secretos.

    00:06:43.370 → 00:07:04.389

    Así que pensé: ¿qué hacemos con este dispositivo? En Chaos lo sabemos: abrirlo, mirarlo por dentro, tanto el software como el hardware, y divertirnos con él.

    Un dispositivo de asistencia que forma parte de mi vida también puede tener peculiaridades «divertidas».

    Esto fue en 2024, y desde entonces me lo he pasado muy bien. 

    Así que… bienvenidas y bienvenidos a Pwn2Roll.

    Pasemos a la siguiente diapositiva.

    00:07:23.970 → 00:11:11.649

    Empecemos por el principio: dinero, dinero, dinero. En pantalla hay un catálogo del hardware, para daros una visión general de cuánto cuesta la silla en la que estoy sentada.

    Porque esto es solo el sistema de tracción: son dos ruedas que se intercambian. El coste grande viene del sistema de tracción en sí.

    Y además hay una lista de opciones «necesarias», porque sin este mando o sin la compra dentro de la app, no puedes cambiar entre los modos de asistencia 1 y 2.

    El modo de asistencia 1 es muy, muy lento; está pensado para interiores. Yo lo probé una vez fuera, subiendo una cuesta, y es horrible, no es nada divertido.

    Necesitas este botón del mando para cambiar al modo de asistencia 2, o tienes que pagar 99 euros a la empresa mediante una compra dentro de la app para poder alternar modos.

    Por suerte, el seguro cubrió esta función en mi caso, y también muchas de las piezas que aparecen en estos cálculos (señala la diapositiva), pero no cubrió la variante de conducción autónoma. Eso hizo que yo acabara pagando unos 3.000 euros.

    Siguiente diapositiva.

    Cuando pasamos a las compras dentro de la app, puedes desbloquear la velocidad por 99 euros, aumentando de 6 km/h a 8,5 km/h. También hay una función de control remoto de la que ya he hablado.

    Luego está el modo crucero, en el que puedes hacer que la silla se mueva sola: no defines una distancia, defines una velocidad, y puedes avanzar sin manos.

    Y hay un modo de aparcamiento, que es bastante gracioso, porque puedes mover la silla cuando no estás sentado en ella. Por ejemplo, para sujetar un Tschunk (un cóctel) en la barra.

    También hay un contador de empujes. No sé quién necesita un contador de empujes, pero ahí está. Cuesta 9,99 euros.

    En total, todas estas funciones suman 349,95 euros. Pero el distribuidor, que es muy generoso, te dice que puedes comprarlo todo por 300 euros.

    Fue muy divertido descubrir todo esto.

    Y como el seguro paga el mando físico, pero si no quiero llevarlo encima, tengo que pagar al fabricante para usar el «mando» en la app, el fabricante acaba ganando dinero de todo el mundo. Es un modelo de negocio muy bueno (con sarcasmo). Es realmente salvaje.

    El DRM en dispositivos médicos no es algo bueno, en mi opinión. Y por esa razón empecé esta investigación.

    00:11:14.090 → 00:11:23.730

    Continuemos.

    También tienen otros productos. Fueron pioneros del DRM en sillas de ruedas: empezaron en 2014. Es, en parte, el predecesor del sistema de tracción de mi silla.

    Dejaron de fabricarlo en 2022. Se reportaron incidencias a la BfArM (Instituto Federal de Medicamentos y Dispositivos Médicos).

    Ya en 2014 ofrecían: «Danos 390 euros y podrás ir más rápido; tendrás funciones extra en la app». Y lo aplicaron a otros productos: el VP15 (un carro de arrastre) con mejora de velocidad, el e-Fix con mejora de velocidad, el paquete Mobility Plus y el smoov O10, que creo que es lo más nuevo de su línea, también con funciones de pago ‘sobre el papel’ para características que realmente ya están ahí.

    Bien, hasta aquí solo quería daros una visión general sobre precios, funciones de pago y demás.

    00:12:36.129 → 00:12:51.169

    Así es como se ve el mando dentro de la app. No es nada espectacular. Y este es el modo distribuidor, con más opciones de configuración.

    Aquí puedes alternar entre el modo de asistencia 1 y 2. Para ello solo necesitas la contraseña de internet. La tecleas y, al menos, algunas funciones del control remoto ya no hace falta comprarlas.

    He mirado muchísimas cosas y he leído documentos realmente molestos y aburridos para que no tengáis que hacerlo.

    En 2020 hubo un problema de seguridad que afectó a muchas implementaciones de Bluetooth (las vulnerabilidades conocidas como SweynTooth). La FDA envió una carta general a fabricantes de dispositivos médicos pidiendo que informaran si sus productos estaban afectados y, en caso afirmativo, cómo lo habían corregido o mitigado.

    Alber (el fabricante del sistema), como también vende en Estados Unidos, tuvo que responder.

    La respuesta de Alber a la FDA fue: «Estas vulnerabilidades no se pueden explotar de forma remota; para atacar hay que tener el Bluetooth activado y estar cerca físicamente, dentro del alcance del Bluetooth». Y añadían algo como: «Toda la comunicación inalámbrica está cifrada».

    Esa respuesta suena tranquilizadora, pero es engañosa: en SweynTooth, el problema no se resuelve diciendo «ciframos la comunicación», porque SweynTooth es un ataque a nivel de capa de enlace (link layer), donde ese cifrado no evita el fallo. Aun así, da a entender que con esa explicación el fabricante «salió del paso» ante la FDA.

    Alber no corrigió el problema: en sus manuales terminaron incluyendo algo del tipo «si hay un ataque, la silla simplemente se detiene», e incluso mencionan SweynTooth explícitamente, lo que evidencia que lo conocían.

    Existen parches para los módulos Bluetooth, pero el módulo que usa su sistema sigue anunciándose como una versión antigua (de 2016) y no lo actualizaron. Y la mitigación que ofrecen suena a «no pasa nada grave porque solo se para», dando el caso por cerrado. Eso muestra una forma muy deficiente de gestionar la seguridad en un dispositivo del que una persona depende físicamente.

    No sé si la FDA no sabe que esa mitigación no funciona realmente, porque esto es un ataque a nivel de enlace, no de transporte (que es lo que ellos cifran). Se salieron con la suya.

    Esa es la situación. Y yo estoy usando este sistema con este problema.

    00:19:19.859 → 00:19:33.359

    Otro de los grandes problemas es cómo manejan la seguridad y la gestión de secretos. Como habéis visto, el tráfico está cifrado. ¿Y qué necesitamos para cifrar? Claves.

    ¿Y cómo conseguimos una clave? Hay que distribuirla y luego reutilizarla.

    Puedo enseñaros dónde está la clave de cada rueda: es un código QR impreso en el buje. Con esa clave se puede tomar el control completo de la silla.

    La frase «estrella» es que lo llaman «clave de ciberseguridad», cuando cualquier persona con una cámara puede acercarse y hacer una foto. Por Bluetooth puedes tomar el control del sistema de tracción: puedes limitarlo a 2 km/h, borrar el firmware… puedes hacer cualquier cosa. Tienes acceso total. Ese es su concepto de seguridad.

    Por suerte, parece que se puede cambiar. Si la gente sabe que la clave se ha robado, se puede cambiar. Yo no lo he probado, pero está en una aplicación de mantenimiento del fabricante.

    ¿Cómo pasa el contenido del QR a ser una clave AES? El QR contiene una cadena de 22 caracteres, con un alfabeto personalizado de 64 caracteres. Cada carácter equivale a seis bits. 22 por 6 son 132. Para AES-128 necesitas 128 bits, así que eliminan los primeros cuatro bits. Esa es la clave. Esa es toda la seguridad del dispositivo.

    Si alguien tiene esa clave, game over. Y no lo ocultan: el manual básicamente dice «escanea esta clave para emparejar». Los vídeos de formación lo muestran y la aplicación de mantenimiento también.

    00:22:49.569 → 00:23:22.490

    Creo que ellos saben todo esto y han decidido que «esté bien».

    Lo curioso es que la criptografía en sí no es mala: usan AES-128 en modo CBC. También usan ECB, lo cual es raro, pero ese es otro tema. Usan librerías estándar; al menos no se inventaron su propia criptografía.

    El problema es que el equipo que diseña la criptografía y el equipo que gestiona la distribución de claves deberían haberse reunido alguna vez.

    Porque están enviando dispositivos así constantemente, y son populares: en este congreso ya he visto dos o tres más aparte del mío.

    Por favor, no escaneéis códigos QR de otras personas con aplicaciones, porque podéis causar daño. Como ya he dicho, el Bluetooth no se puede desactivar. Nunca. La única forma sería arrancar físicamente el módulo Bluetooth del sistema de tracción.

    Se podría parchear; yo no lo he probado, pero parece posible. Aunque cargarte la garantía siempre es «divertido».

    En resumen: el muro de pago es puro teatro, y la seguridad también es puro teatro.

    Eso fue lo que me hizo interesarme todavía más. Quienes me conocen saben que me encanta la ingeniería inversa, los protocolos inalámbricos, el cifrado y las rarezas de seguridad. Así que pensé: «Esto puede ser divertido».

    Después de dedicarle varios cientos de horas, empecé por lo básico: descompilar la app de Android de la Play Store usando jadx, que descompila clases Java.

    Encontré un método llamado is_speed_enabled, referenciado desde la parte de facturación. Eso ya da una pista: la función de velocidad no parece depender del hardware, sino del software.

    Con este sistema puedes ir a 8,5 km/h si pagas 99 euros. Y eso puede marcar una diferencia real: por ejemplo, para una parada de autobús a 400 metros.
    A 8,5 km/h tardas unos 2 minutos y 50 segundos; a 6 km/h tardas 4 minutos. Y alguien me está limitando artificialmente.

    Pero aquí viene el giro: en Alemania, ir a más de 6 km/h en silla de ruedas es ilegal. No es una infracción administrativa: es un delito penal.

    No encontré casos judiciales ni multas documentadas, al menos hasta ahora. Pero en la práctica están vendiendo algo parecido a «crimen como servicio»: te suscribes y cometes un delito.

    El fabricante lo sabe. Por eso añaden la frase típica de «respete las normativas y leyes locales», y así pueden decir luego que la responsabilidad es de la persona usuaria.

    En la aplicación, el DRM se aplica de forma simple: se comprueba si la función está pagada. Si lo está, se desbloquea el acceso a determinadas partes de la app.

    El pago no cambia absolutamente nada en el sistema de tracción: solo desbloquea partes de la interfaz gráfica. Otro indicio de que la limitación es puramente software, no hardware.

    Si alguien tiene mucho tiempo, recomiendo mirar las respuestas del fabricante en la Play Store alemana y estadounidense: son bochornosas.

    Por ejemplo, una respuesta del fabricante a una valoración: las compras están vinculadas a la cuenta de Play Store, no al hardware. Solo tienes que reinstalar la app y volver a emparejar las ruedas y las funciones compradas siguen funcionando. Es decir: el propio fabricante confirma que todo esto es software.

    Eso me enfadó todavía más, así que entré a fondo en el protocolo. Todo se comunica por Bluetooth: mandos, app, todo. Diseñaron su propio protocolo sobre Bluetooth. En teoría no es especialmente complicado: tiene decisiones de diseño curiosas, pero funciona.

    Tiene unos 14 servicios: gestión de batería, perfiles de conducción, estadísticas, telemetría y parámetros de configuración. Cada servicio tiene identificadores de parámetros.

    La ingeniería inversa fue sobre todo trabajo pesado y muchas pruebas. Tenía la clave AES, sabía qué cifrado usaban y podía capturar el tráfico con Wireshark, tanto por Bluetooth como por USB usando la app de mantenimiento.

    También usan una «contraseña AES» basada en el nombre del fabricante y el modelo, truncada porque no cabía en AES-128. Parece que les gusta recortar cosas para que encajen en claves y contraseñas.

    Y así acabé con gigabytes de volcados de paquetes, analizando todo esto por las noches o cuando estaba aburrida.

    00:37:26.920 → 00:43:31.360

    Con el protocolo entendí qué hace exactamente este mando: tiene cinco funciones.

    1. Encendido y modo de espera.
    2. Nivel 1 (el modo de asistencia 1 del que hablaba antes).
    3. Nivel 2 (el modo de asistencia 2, el «modo exterior»).
    4. Un modo de aprendizaje que nunca usé, pensado para familiarizarte con el sistema sin estamparte.
    5. Un ajuste de retardo de retroceso: como un freno en pendiente; si estás en una cuesta y te paras, no ruedas hacia atrás automáticamente.

    Y ya está.

    Este mando cuesta 500 euros. Pensé: quizá podemos hacerlo más barato.

    Conociendo el protocolo, escribí algunos scripts en Python. Funcionó. Y ese botón de alternar, que sale a 100 euros (sin impuestos), lo puedo sustituir por comandos.

    Pero ¿y este otro mando? Cuesta 980 euros, para la conducción autónoma, y lo pagué yo. No lo uso mucho, pero funciona.

    El hardware de este mando es casi idéntico: módulo Bluetooth de Texas Instruments, electrónica mínima y LEDs. El otro mando tiene pantalla LCD. Uno no se puede cargar; este sí, por USB-C.

    Con este, si giro la rueda, la silla se mueve sin manos. También hay una función en la app para esto por 99 euros, pero no la recomiendo: tienes que teclear en el móvil mientras conduces. Me parece una mala idea, y aun así lo venden.

    Esto me confirmó que la variante «más cara» es exactamente el mismo hardware que la variante «no cara»: la variante cara es literalmente un flag booleano en el software de configuración del fabricante. Lo venden como si fueran dos productos distintos. Escasez artificial.

    El aumento de velocidad fue lo principal que me interesó. La app de Android solo comprueba si esa función está comprada.

    Además, existe una prueba de 30 días para ese modo, con la que puedes ir a 8,5 km/h, es decir, de forma «ilegal». Puedes desbloquear la capacidad de incumplir la ley comprando algo. Es «muy conveniente». Yo no lo uso porque soy «muy legal».

    La app tiene una demo de 30 días para todo, para probar funciones de pago. Y lo gracioso es que, del lado del sistema de tracción, queda registrado que ese mes de prueba ha empezado, pero sigue indefinidamente. El diseño es: inicias la prueba y, básicamente, te queda la capacidad de poner el sistema más rápido.

    Con todo este trabajo he sustituido el mando: son varios cientos de líneas de código Python hablando con el sistema de tracción. Puedo sustituir el modo de aparcamiento, algunas funciones de mantenimiento, el modo distribuidor y también el modo de conducción autónoma.

    En total, quizá son 2.000 euros de ahorro solo por usar scripts en Python. La tarifa por hora fue malísima… pero fue divertido.


    00:46:58.539 → 00:49:23.750

    Se nos acaba el tiempo, pero una cosa más. Voy a publicar el código y las herramientas en GitHub (github.com/roll2own) para que la gente pueda usar su silla como quiera.

    Lo subiré con toda la cadena: cómo obtener la clave desde el QR, cómo cifrar y descifrar paquetes, cómo analizar paquetes, documentación de la estructura, cómo configurarlo… todo.

    Creo que es muy importante entender los dispositivos de los que dependes. Y es importante que los fabricantes no hagan lo que les dé la gana solo porque nadie habla de esto. Parece que casi nadie comprueba dispositivos médicos como se comprueban otros dispositivos.

    Si tenéis otros dispositivos con Bluetooth u otras interfaces, contactad conmigo. Será divertido analizarlos.

    También encontré otras cosas que hoy no quiero divulgar. Solo diré esto: hay más que esto. Pero requiere divulgación responsable; aún no he contactado al fabricante. Eso será para el año que viene, supongo.


    Turno de preguntas

    00:49:23.750 → 00:50:33.659

    Herald / moderación:
    Gracias, Elfy. Es tiempo de preguntas. Quienes vean la emisión en directo pueden preguntar en hackint.org (canal #39c3-hall-zero). En la sala, por favor, id a los micrófonos. La primera pregunta viene del chat.

    ¿Puedes abrir la interfaz «lockdown» en ADB para acceder manualmente?

    Elfy:
    Sí. Puedes descompilar la aplicación, editar algunos retornos de funciones y funciona… pero no lo he hecho porque eso es ilegal.

    Además: cualquiera con la app desbloqueada puede desbloquear otra silla del mismo modelo para ponerla a mayor velocidad. Si alguien usa una silla como la mía… puedo «desbloquearla».


    00:51:03.869 → 00:56:23.099

    Persona del público:
    Has dicho que el cifrado está bien hecho en el sentido de AES-CBC. Pero cuando oigo AES-CBC, pienso: ¿hay autenticación? ¿HMAC? Si no, hay ataques de bit-flipping y otras cosas.

    Elfy:
    No. Usan lo estándar. Aplican padding PKCS#7. En varios puntos tuve la sensación de que conocen lo básico, pero luego dejan de pensar en los problemas. Es mejor que nada, pero frustra que lo intentaran y no lo terminaran bien.

    Persona del público:
    ¿Has explorado esto como vulnerabilidad? Si puedes manipular paquetes sin autenticación, podría ser un ataque horrible.

    Elfy:
    No quiero contar demasiado, pero hay un contador en los paquetes cifrados que aumenta con cada paquete enviado, y al dispositivo le da igual si envías el mismo paquete varias veces. Es incluso más simple: con un paquete Bluetooth puedes lanzarlo 100 veces al dispositivo y no tienes que volver a cifrar ni nada.

    Persona del público:
    Has dicho que hay un servicio de estadísticas. ¿Qué tipo de estadísticas hay?

    Elfy:
    Cosas aburridas: depende del servicio. Puede haber estadísticas de batería, ciclos de carga, salud de batería, energía consumida, distancia recorrida, tiempo de actividad… Son estadísticas básicas. Cuando suba el código, mirad el protocolo «m25»: hay un fichero de especificación en Python que documenta casi todo lo que comunican estos dispositivos.

    Intenté configurar por encima de 8,5 km/h, pero el dispositivo devuelve error. Los updates de firmware no parecen estar firmados, así que si alguien quiere hacer una versión libre y de código abierto… quizá haya una oportunidad.

    Otra persona del público:
    ¿Se puede escalar a 10 km/h?

    Elfy:
    Lo intenté. No funciona. Devuelve error y no tuve tiempo de probar más. El dispositivo Twion de la presentación sí llegaba a 10 km/h y es el predecesor. Sospecho que, en teoría, por motores podría, pero no sé si está bloqueado a nivel firmware o si la configuración permitiría algo especial. Probé lo básico y no salió. Y bueno… (con ironía) he oído que es ilegal.

    Persona del público:
    Gracias por la charla. Como dices que hay más cosas y que tienes que hablar con el fabricante, ¿te da miedo que te respondan igual que a la FDA?

    Elfy:
    Sí, quizá. Pero cuando lo pregunte y cuando pueda divulgarlo…

    Herald / moderación:
    Perfecto. Gracias. Último aplauso, y gracias también por la interpretación en lengua de signos alemana.