KRACK (Key Reinstallation Atack) – Vulnerabilidad de WPA 2

El día lunes 17 de octubre de 2017 se dió a conocer un grupo de vulnerabilidades en el protocolo de WIFI WPA2, el cual fue llamado KRACK (Key Reinstallation Atack).
El impacto de la explotación de estas vulnerabilidades incluye descifrado, repetición de paquetes, secuestro de conexión TCP, inyección de contenido HTTP y otros.

¿Qué es WPA 2?

El protocolo WPA 2 (WiFi Protected Access 2) es un sistema utilizado para proteger redes WiFi basado en el estándar 802.11i, el cual nos entrega WPA2-PSK para usos domésticos y su versión con opción para autentificar en un servidor remoto WPA2-enterprise.
Una de las ventajas de WPA2 es la integridad y la confidencialidad de sus comunicaciones, es decir alguien dentro de la misma red espiando el tráfico no podía ver el tráfico ajeno (o al menos no podía interpretarlo porque iba cifrado). Esto es así porque WPA2 realiza un cifrado punto a punto (entre el cliente y el AP) de todas las tramas usando AES o Raindol. AES usa llaves de cifrado para que la comunicación sea íntegra y confidencial, evitando ataques MiTM, expuesta de credenciales, robo de cookies, etc.

¿Qué es y cómo funciona KRACK?

KRACK ataca la comunicación inicial (conocida como handshake) que se realiza entre el dispositivo y el access point la cual genera el vínculo entre ellos. Este proceso se llama autenticación 4-way handshake. Aquí es cuando se negocian las claves compartidas y el Pairwise Master Key (PMK), para iniciar el cifrado de la comunicación. Justo después de recibir el mensaje número 3 del handshake, se instala la llave y una vez que la llave de cifrado está instalada, se utilizará para cifrar las tramas.

Debido a que las tramas pueden perderse o ser descartadas por asuntos como la calidad del espectro, la distancia, las interferencias etc… es posible que el AP retransmita el mensaje 3 del Handshake varias veces dependiendo de la situación (si el cliente no responde con el 4 mensaje del saludo) lo que deviene en reinstalar varias veces la misma llave de cifrado reseteando así el número de paquete incremental (nonce) y anunciando de vuelta el counter que usa WPA2 para evitar ataques por inyección de paquetes (por si en algún momento se preguntaron porque no podíamos inyectar tráfico en WPA2).

La vulnerabilidad que explota KRACK permite al atacante manipular o repetir de nuevo este tercer mensaje (MIC), permitiendo re-instalar la clave criptográfica que ya se ha utilizado cuando dicha clave deberia ser “one time use”.
Por otro lado, vale aclarar que esta ataque no sirve para cambiar las passphrase de WIFI.

Para obtener mayor información, puede vistar el sitio donde fue publicada y detallada la vulnerabilidad (https://www.krackattacks.com/).

¿Cuales productos/dispositivos son afectados?

Todos los productos que usen la versión 2.4/5 de WPA_supplicant (que es uno de los clientes mas usados en distros linux). La mayoría de los proveedores están trabajando para lanzar parches que corrigen esta vulnerabilidad.

CERT publicó una lista de vendors afectados y su fecha de última actualización, la cual se puede acceder por medio del siguiente link: https://www.kb.cert.org/vuls/byvendor?searchview&Query=FIELD+Reference=228519&SearchOrder=4. En este otro link (https://github.com/kristate/krackinfo), se puede realizar un seguimiento del avance de la respuesta de cada vendor.

Microsoft lanzó el pasado 10 de octubre, un parche que soluciona este problema para Windows 10 (https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2017-13080). Apple ya tiene su solución disponible en las versiones beta de sus sistemas operativos, pero aún no la publico para los SO de producción.

Cisco Meraki, DD-WR y Fortinet ha lanzado actualizaciones urgentes. En cuanto a Arch Linux y Ubuntu, también han realizado las actualizaciones necesarias. También hay parches disponibles de parte de LEDE/OpenWrt, MikroTik, Netgear entre otros.

Recomendaciones

  • Busque y aplique las actualizaciones pertinentes para todos sus dispositivos en cuanto estén disponibles.
  • Alerte a sus usuarios/comunidad sobre este riesgo.
  • Compruebe el uso del protocolo HTTPS al momento de realizar transacciones delicadas (lease transacciones bancarias o manipulación de información sensible).
  • Evite utilizar redes públicas o masivas.