Mathy Vanhoef, l'auteur de l'attaque KRACK sur les réseaux sans fil utilisant WPA2, et Eyal Ronen, co-auteur de certaines attaques sur TLS, ont dévoilé des informations sur six vulnérabilités (CVE-2019-9494 à CVE-2019-9499) dans la technologie de protection des réseaux sans fil WPA3, qui permettent de reconstruire le mot de passe de connexion et d'accéder à un réseau sans fil sans connaître le mot de passe. Les vulnérabilités sont regroupées sous le nom de code Dragonblood et permettent de compromettre la méthode d'accord de connexion Dragonfly, offrant une protection contre les attaques par dictionnaire en mode hors ligne. En plus de WPA3, la méthode Dragonfly est également utilisée pour protéger contre les attaques par dictionnaire dans le protocole EAP-pwd, utilisé dans Android, les serveurs RADIUS et dans hostapd/wpa_supplicant.
L'étude a révélé deux principaux types de problèmes architecturaux dans WPA3. Les deux types de problèmes peuvent finalement être utilisés pour reconstruire le mot de passe d'accès. Le premier type permet d'exécuter une attaque de rétrogradation (downgrade attack) sur des méthodes cryptographiques peu fiables : les moyens d'assurer la compatibilité avec WPA2 (mode transit, permettant l'utilisation de WPA2 et WPA3) permettent à un attaquant de forcer le client à effectuer l'accord de connexion à quatre étapes utilisé par WPA2, ce qui rend ensuite possibles les attaques classiques de recrutement de mots de passe applicables à WPA2. En outre, une attaque de rétrogradation a également été identifiée directement sur la méthode d'accord de connexion Dragonfly, permettant de revenir à des types de courbes elliptiques moins protégés.
Le deuxième type de problème entraîne des fuites d'informations sur les caractéristiques du mot de passe par des canaux latéraux et est basé sur des défauts de la méthode de codage des mots de passe dans Dragonfly, permettant de reconstruire le mot de passe d'origine à partir d'informations indirectes, telles que la variation des temps d'exécution des opérations. L'algorithme utilisé dans Dragonfly pour la transformation de hachage en courbe elliptique (hash-to-curve) s'est avéré vulnérable aux attaques par suivi de l'information dans le cache processeur (cache attack), tandis que l'algorithme de transformation de hachage en groupe (hash-to-group) est vulnérable aux attaques par mesure du temps d'exécution des opérations (timing attack).
Pour exécuter des attaques par analyse de cache, l'attaquant doit être capable d'exécuter du code non privilégié sur le système de l'utilisateur se connectant à un réseau sans fil. Les deux méthodes permettent d'obtenir des informations nécessaires pour affiner le choix des caractères du mot de passe lors de sa recherche. L'efficacité de l'attaque est suffisamment élevée et permet de deviner un mot de passe de 8 caractères, incluant des caractères en minuscules, en interceptant seulement 40 sessions de négociation de connexion (handshake) et en dépensant des ressources équivalentes à la location de capacités Amazon EC2 pour 125 dollars.
Sur la base des vulnérabilités identifiées, plusieurs scénarios d'attaque ont été proposés :
- Attaque par rétrogradation sur WPA2 avec possibilité de mener un dictionary attack. Dans des conditions où le client et le point d'accès prennent en charge à la fois WPA3 et WPA2, l'attaquant peut déployer son propre point d'accès contrefait avec le même nom de réseau, qui ne prend en charge que WPA2. Dans cette situation, le client appliquera la méthode de négociation de connexion propre à WPA2, au cours de laquelle il sera déterminé que cette rétrogradation n'est pas acceptable, mais cela sera fait à un stade où les messages de négociation de canal ont déjà été envoyés et toutes les informations nécessaires à l'attaque par dictionnaire ont déjà fuitées. Une méthode similaire est applicable pour la rétrogradation vers des versions problématiques de courbes elliptiques en SAE.
De plus, il a été constaté que le démon iwd, développé par Intel comme alternative à wpa_supplicant, et la pile sans fil du Samsung Galaxy S10 sont soumis à des attaques par rétrogradation même dans des réseaux utilisant uniquement WPA3 — si ces appareils s'étaient déjà connectés à un réseau WPA3, ils tenteront de se connecter à un réseau WPA2 contrefait avec le même nom.
- Attaque par canaux latéraux avec extraction d'informations du cache processeur. L'algorithme de codage des mots de passe dans Dragonfly comprend des branches conditionnelles et un attaquant, ayant la possibilité d'exécuter du code dans le système de l'utilisateur du réseau sans fil, peut, sur la base de l'analyse du comportement du cache, déterminer quel bloc a été choisi dans l'expression if-then-else. Les informations obtenues peuvent être utilisées pour procéder à un craquage itératif du mot de passe en utilisant des méthodes similaires à celles des attaques par dictionnaire hors ligne sur les mots de passe WPA2. Pour se protéger, il est recommandé de passer à l'utilisation d'opérations ayant un temps d'exécution constant, indépendamment de la nature des données traitées.
- Attaque par canaux latéraux avec évaluation du temps d'exécution des opérations. Dans le code Dragonfly pour le codage des mots de passe, plusieurs groupes multiplicatifs (MODP) et un nombre variable d'itérations sont utilisés, dont le nombre dépend du mot de passe utilisé et de l'adresse MAC du point d'accès ou du client. Un attaquant distant peut déterminer combien d'itérations ont été effectuées lors du codage du mot de passe et les utiliser comme indicateur lors du craquage itératif du mot de passe.
- Appel à une attaque par déni de service. Un attaquant peut bloquer certaines fonctions du point d'accès en raison de l'épuisement des ressources disponibles en envoyant un grand nombre de requêtes de négociation de canal. Pour contourner la protection contre les inondations prévue dans WPA3, il suffit d'envoyer des requêtes avec des adresses MAC fictives et non répétitives.
- Rétrogradation vers des groupes cryptographiques moins sécurisés utilisés lors de la négociation des connexions dans WPA3. Par exemple, si un client prend en charge les courbes elliptiques P-521 et P-256 et utilise P-521 comme variante prioritaire, l'attaquant, indépendamment du soutien de P-521 du côté du point d'accès, peut forcer le client à utiliser P-256. L'attaque est menée en filtrant certains messages lors de la négociation de la connexion et en envoyant de faux messages avec des informations sur l'absence de support pour certains types de courbes elliptiques.
Pour vérifier les appareils à la recherche de vulnérabilités, plusieurs scripts avec des exemples d'attaques ont été préparés :
Dragonslayer — mise en œuvre d'attaques sur EAP-pwd;
- Dragonslayer — implémentation des attaques sur EAP-pwd;
- Dragondrain - un utilitaire pour vérifier la vulnérabilité des points d'accès dans l'implémentation de la méthode de négociation de connexion SAE (Authentication Simultanée des Égaux), qui peut être utilisé pour initier des attaques par déni de service;
- Dragontime - un script pour mener une attaque par des canaux secondaires contre SAE, tenant compte des différences dans le temps de traitement des opérations lors de l'utilisation des groupes MODP 22, 23 et 24;
- Dragonforce - un utilitaire de récupération d'informations (craquage de mots de passe) basé sur des distinctions dans le temps de traitement des opérations ou pour détecter des données persistantes dans le cache.
L'Alliance Wi-Fi, qui développe des normes pour les réseaux sans fil, a annoncé que le problème touche un nombre limité de premières implémentations de WPA3-Personal et peut être corrigé par une mise à jour du firmware et des logiciels. Aucun cas d'exploitation des vulnérabilités à des fins malveillantes n'a encore été enregistré. Pour renforcer la sécurité, l'Alliance Wi-Fi a ajouté de nouveaux tests au programme de certification des appareils sans fil pour vérifier la conformité des implémentations et a contacté les fabricants d'appareils pour coordonner la résolution des problèmes identifiés. Des correctifs ont été publiés pour hostap/wpa_supplicant. Des mises à jour sont disponibles pour Ubuntu. Les problèmes demeurent non corrigés dans Debian, RHEL, SUSE/openSUSE, Arch, Fedora et FreeBSD.
Source : opennet.ru
