KRACK (CVE-2017-13082)

Introducción: 

Recientemente se descubrió una vulnerabilidad que afecta al protocolo WPA2, basada en la reinstalación de la llave utilizada para iniciar el cifrado de la información compartida entre un Access Point y un cliente.

Los ataques conocidos como key reinstallation attacks (KRACKs), permiten reiniciar los contadores requeridos para cifrar y descifrar el tráfico enviado entre un cliente y el Access Point. Cabe agregar que existe una serie de CVE asociados a las variantes existentes de los KRACK para forzar la reinstalación de llaves. En consecuencia, cada uno de ellos podría requerir de entornos y condiciones diferentes para ser explotado.

Pocos días después del anuncio público de la vulnerabilidad, la persona que identificó la falla en WPA2 proporcionó una prueba de concepto para la vulnerabilidad con identificador CVE-2017-13082. Dicha vulnerabilidad permite la reinstalación de la llave usando la transición rápida (FT, Fast Transition) durante el handshake para redes de categoría 802.11r, es decir, redes inalámbricas que permiten el roaming entre Access Points. La intención del roaming es mantener la conectividad de un dispositivo a una red, asociándose a diferentes Access Points de acuerdo a la cercanía con uno u otro, permitiendo la movilidad.

La herramienta utilizada en esta prueba de concepto se puede encontrar en el siguiente vínculo:

 https://github.com/vanhoefm/krackattacks-test-ap-ft

La prueba de concepto por el momento solo permite demostrar si un Access Point es susceptible a aceptar clientes que hayan reinstalado la llave y no permite descifrar el tráfico de los usuarios. A continuación presentamos un video que demuestra la prueba de concepto.

Laboratorio:

El laboratorio empleado para esta prueba de concepto consiste en un equipo con el programa proporcionado por el investigador y dos Access Point, configurados para operar en modo roaming, difundiendo el mismo nombre de red y empleando la misma contraseña de acceso.

Desarrollo:

La prueba de concepto requiere deshabilitar el cifrado a nivel de hardware en el equipo para eliminar posibles fallas al hacer uso de las funcionalidades de las tarjetas de red y después se debe reiniciar el equipo. Este paso solo se debe realizar una vez.

Como se detalló anteriormente, se deben conocer todos los datos necesarios para asociarse al Access Point, incluyendo contraseña y nombre de la red. Además, se debe especificar que el método para la administración de llaves será FT-PSK, es decir, transición rápida. Si se cuenta con los datos, se genera un archivo de configuración para la herramienta wpa_supplicant. El uso de FT-PSK es forzoso, de lo contrario el Access Point no es vulnerable al CVE-2017-13082, aunque podría ser vulnerable a otras variantes de los KRACK.

Si hasta ahora no se produce ningún error, se detiene la ejecución de wpa_supplicant y se procede a utilizar el programa krack-ft-test.py. Este archivo a su vez ejecutará el programa wpa_supplicant, como se ejecutó en el paso anterior. Sin embargo, antes de ejecutarlo se debe detener el administrador de red y permitir el uso de la interfaz inalámbrica sin él.

Una vez que se haya completado la asociación con el Access Point, se buscarán otros Access Point pertenecientes a la misma red roaming. Para ello se utiliza la herramienta wpa_cli y dentro de su interfaz se ejecuta scan_results, se selecciona el BSSID de un Access Point distinto del que se obtuvo acceso previamente. Así mismo, se debe generar tráfico hacia el Access Point.

Finalmente, se procede usar el comando roam con el BSSID seleccionado para asociarse a un segundo Access Point. La vulnerabilidad se comprueba sobre este Access Point, no sobre el primero. Si el segundo Access Point seleccionado es vulnerable, la herramienta lo reportará con el mensaje “AP is vulnerable!”.

Es importante señalar que la herramienta puede presentar falsos positivos debido a la retransmisión benigna de paquetes, lo cual es un comportamiento normal en entornos con ruido. El falso positivo se puede detectar si el número de secuencia se repite antes de mostrar el mensaje “AP is vulnerable!”.

 

Recomendación: 

Instalar parches de actualización en los Access Points y dispositivos que requieran conexión a la red.

Una lista de los proveedores que han proporcionado soluciones a esta vulnerabilidad se puede encontrar en el siguiente vínculo:

https://github.com/kristate/krackinfo

Se recomienda deshabilitar la transición rápida (FT, Fast Transition) en los Access Point que operen dentro de una red Roaming.

Referencias:

https://www.krackattacks.com/

https://github.com/vanhoefm/krackattacks-test-ap-ft

https://www.youtube.com/watch?v=aA4notyZph0

https://www.networkcomputing.com/wireless-infrastructure/wifi-fast-roaming-simplified/1993108957

https://github.com/kristate/krackinfo

https://www.youtube.com/watch?v=fOgJswt7nAc

Revisión histórica: 

Liberación original: Jueves, 17 Noviembre 2017

La Coordinación de Seguridad de la Información/UNAM-CERT agradece el apoyo en la elaboración y revisión de este documento a:

Castañeda González Fernando

Oscar Iván Flores Ávila