Investigadores de ciberseguridad de Bélgica y EE.UU. han publicado recientemente un artículo cuya presentación está prevista para finales de este año en la conferencia USENIX 2023.
Los tres coautores no pudieron resistirse a un título que hiciera juego de palabras, bautizando su ataque como Framing Frames, con un texto un poco más fácil de seguir que dice Bypassing Wi-Fi encryption by manipulating transmit queues (eludir el cifrado Wi-Fi manipulando las colas de transmisión).
Como acostumbran a hacer los investigadores de seguridad, el trío se preguntó: “¿Qué ocurre cuando un usuario de Wi-Fi se desconecta temporalmente de la red, ya sea accidentalmente o a propósito, pero podría perfectamente reaparecer en línea tras una breve interrupción?”.
¡Ponlo en la cola por si acaso!
El chip inalámbrico de un teléfono u ordenador portátil puede entrar temporalmente en modo ahorro de energía o “reposo” para conservar energía, o salirse del alcance y volver a entrar. Durante ese tiempo, los puntos de acceso suelen guardar los paquetes de respuesta que llegan para las solicitudes que aún estaban sin responder en el momento en que el dispositivo se apagó o salió del alcance.
Dado que un cliente desconectado no puede iniciar nuevas solicitudes hasta que anuncie su vuelta a la participación en la red, no es probable que un punto de acceso se atasque con tantos paquetes de respuesta sobrantes por cada usuario inactivo.
Entonces, ¿por qué no ponerlos simplemente en cola, siempre que quede suficiente espacio libre en la memoria, y entregarlos más tarde cuando el dispositivo se vuelva a conectar, para mejorar la comodidad y el rendimiento?
Si la memoria se agota, o un dispositivo permanece desconectado demasiado tiempo, los paquetes en cola pueden ser descartados inofensivamente, pero mientras haya espacio para mantenerlos ahí “para más tarde”, ¿qué daño podría causar eso?
Los paquetes perdidos
La respuesta, según descubrieron nuestros investigadores, es que los denominados adversarios activos podrían ser capaces de liberar al menos algunos datos en cola de al menos algunos puntos de acceso.
Resulta que los datos en cola se almacenaban descifrados, anticipando que más tarde habría que volver a cifrarlos con una nueva clave de sesión para su entrega.
Probablemente puedas adivinar adónde va esto.
Los investigadores descubrieron varias formas de engañar a algunos puntos de acceso para que liberaran esos paquetes de red en cola, bien sin ningún tipo de cifrado, bien cifrados con una nueva clave de sesión que eligieron al efecto.
Bypass dormido
En un ataque, simplemente le dijeron al punto de acceso que eran tu tarjeta inalámbrica y que estabas a punto de entrar en “modo reposo”, avisando así al punto de acceso para que empezara a poner datos en cola durante un tiempo.
Lamentablemente, las solicitudes de “Me voy a echar una siesta” no estaban cifradas, por lo que los investigadores ni siquiera necesitaban conocer la contraseña de la red Wi-Fi, y mucho menos haber conseguido la configuración de tu clave de sesión original (la PMK, o clave maestra por pares).
Poco después, fingirían ser tu portátil o teléfono “despertándose de nuevo”.
Te pedían que te volvieras a asociar al punto de acceso, pero esta vez sin clave de cifrado, y conseguían cualquier respuesta en cola que hubiera quedado de antes.
Descubrieron que numerosos puntos de acceso no se preocupaban por el hecho de que los datos en cola que se habían solicitado originalmente en un formato cifrado se estaban liberando ahora de forma no cifrada, por lo que al menos algunos datos se filtrarían.
No utilices esa clave, utiliza ésta en su lugar
En otro ataque, utilizaron una técnica ligeramente diferente.
Esta vez, enviaron paquetes falsos para obligar a tu tarjeta de red inalámbrica a desconectarse de la red, tras lo cual establecieron rápidamente una nueva conexión, con una nueva clave de sesión.
Para este ataque, por supuesto, necesitan conocer la clave de la red Wi-Fi, pero en muchas cafeterías o lugares de trabajo compartidos, esas claves son públicas, normalmente escritas en una pizarra o compartidas en un correo electrónico de bienvenida.
Si consiguieran echarte de la red exactamente en el momento adecuado (o en el momento equivocado desde tu perspectiva), por ejemplo, justo después de que hubieras enviado una solicitud que les interesara y consiguieran completar su reconexión falsa a tiempo, podrían descifrar algunos fragmentos de respuesta en la cola.
Aunque te dieras cuenta de que te habías desconectado de la red, probablemente tu ordenador intentaría reconectarse automáticamente.
Si los atacantes hubieran conseguido “comerse” entretanto alguna respuesta en cola, tu propia reconexión no sería del todo perfecta: por ejemplo, podrías ver una página web rota o una descarga fallida, en lugar de una recuperación sin problemas de la desconexión.
Pero los fallos cuando te desconectas y luego te vuelves a conectar a puntos de acceso inalámbricos son lo bastante comunes como para que probablemente no le des mucha importancia, si es que le das alguna.
¿Qué hay que hacer?
Para los desarrolladores de puntos de acceso:
- Si tus puntos de acceso funcionan con Linux, utiliza el kernel 5.6 o posterior. Esto aparentemente elude el primer ataque, porque los datos en cola no se liberarán si estaban cifrados a su llegada, pero estarían sin cifrar cuando finalmente se envíen.
- Vacía las colas de tráfico en los cambios de clave. Si un cliente se desconecta y quiere volver a conectarse con una nueva clave de sesión, niégate a volver a cifrar los datos en cola recibidos con la clave antigua. Simplemente descártalos.
Para usuarios de hotspot:
- Minimiza la cantidad de tráfico sin cifrar que envías. En este caso, estamos hablando de un segundo nivel de cifrado por encima de tu clave de sesión wifi, como HTTPS para tu navegación web y DNS-sobre-HTTPS para tus peticiones DNS.
Con una capa adicional de cifrado a nivel de aplicación, cualquiera que descifre tus paquetes wifis seguirá sin poder dar sentido a los datos que contienen.
Los atacantes podrían averiguar detalles a nivel de red, como los números IP de los servidores a los que te conectaste, pero si utilizas HTTPS mientras navegas, el contenido que envías y recibes no quedará expuesto a estos ataques, ciertamente limitados.