WPS : la norme qui ébranle la sécurité du Wi-Fi

Le WPS est vulnérable

Image 1 : WPS : la norme qui ébranle la sécurité du Wi-Fi

Depuis quelques jours, la sécurité du Wi-Fi est ébranlée. Si le chiffrement WEP est cassé depuis des années, le WPA est quant à lui considéré comme sûr. Pourtant, une faille a été découverte et elle permet de se faufiler sur des réseaux protégés en WPA.

Ne nous méprenons pas : ce n’est pas le WPA lui-même qui n’est plus sécurisé, mais le WPS. Cette norme, déployée sur beaucoup d’appareils, est en effet faillible. Et en passant outre le WPS, il est possible de récupérer la clé WPA, sans toucher réellement à cette dernière donc.

Dans ce dossier, nous allons vous expliquer ce qu’est le WPS et d’où vient le problème. Pour le test, nous avons essayé de tirer parti de cette faille. Bien évidemment, les attaques ont été effectuées sur notre propre matériel : attaquer un matériel qui ne vous appartient pas est illégal.

Le WPS, c’est quoi ?

Le WPS, pour Wi-Fi Protected Setup, est une technologie lancée par la Wi-Fi Alliance pour simplifier la connexion d’un appareil à un réseau Wi-Fi. Si elle ne fait pas partie du standard 802.11, elle est utilisée dans beaucoup d’appareils.

L’idée est simple : au lieu d’obliger l’utilisateur à utiliser un mot de passe complexe et difficile à retenir, un jumelage « physique » est nécessaire. En effet, les créateurs de la norme s’étaient rendu compte que beaucoup d’utilisateurs ne sécurisaient pas le réseau Wi-Fi ou utilisaient des mots de passe simples, faciles à retenir, mais aussi vulnérables aux attaques par dictionnaire (par exemple). 

Pour régler le problème, le WPS propose un jumelage qui nécessite une action « physique » de la part de l’utilisateur, le mot de passe — complexe et potentiellement aléatoire — étant généré par le point d’accès.

Plusieurs méthodes sont proposées par la norme

La norme prévoit plusieurs méthodes pour la connexion.

La première méthode — qui est vulnérable — consiste à doter le point d’accès d’un code PIN. Les appareils qui veulent se connecter au point d’accès doivent donc connaître le code PIN (8 chiffres) de ce dernier. Selon les appareils, le code PIN en question est imprimé directement sur l’appareil, affiché via un écran ou simplement présent dans l’interface de l’appareil. Il est généralement fixé en usine et beaucoup d’appareils utilisent tout simplement la chaîne 12345670. Cette méthode est obligatoire pour obtenir la certification WPS.

La seconde méthode travaille aussi avec un code PIN, mais ce dernier est du côté de l’appareil qui va se connecter. Elle est courante sur les imprimantes Wi-Fi. Le code est donc imprimé ou affiché via un écran et il faut le rentrer dans le point d’accès. Cette méthode est moins pratique pour les utilisateurs, l’accès aux menus du point d’accès étant rarement user friendly.

Image 2 : WPS : la norme qui ébranle la sécurité du Wi-FiTroisième méthode, elle aussi obligatoire pour obtenir la certification, le PBC, pour Push Button Connect. Comme son nom l’indique, il est nécessaire de presser un bouton sur le point d’accès pour lancer le jumelage. Le bouton est soit physique — le cas le plus courant — soit virtuel, dans l’interface de l’appareil. Ensuite, il faut presser un bouton — lui aussi physique ou virtuel — sur le périphérique à connecter pour que les deux appareils soient liés.

Deux autres méthodes sont plus rares, mais sont aussi basées sur une connexion « physique ». La première est à base de technologie NFC (Near Field Contact). Il va donc être nécessaire d’approcher l’appareil à connecter du point d’accès pour que la liaison s’effectue. L’avantage est sa simplicité, le principal problème est évidemment que les points d’accès NFC et les appareils compatibles NFC sont très rares actuellement.

Enfin, une méthode proposée par Microsoft utilise une clé USB pour le transfert de la « clé ». L’appareil à connecter va générer les données sur une clé USB qu’il faudra ensuite connecter au point d’accès pour qu’il accepte la liaison. Cette méthode est rare.

Comme on le voit, toutes les méthodes nécessitent un accès physique aux appareils. Notons que si la première et la troisième méthode sont obligatoires pour obtenir une certification WPS, certains points d’accès peuvent en intégrer d’autres. Les bornes Wi-Fi d’Apple n’implémentent par exemple que le PIN externe et le PBC (avec un bouton virtuel) : elles sont donc compatibles WPS mais pas certifiées (et dans notre cas, pas touchées par la faille).

La faille du code PIN

La faille dont nous allons parler touche en fait la première méthode, obligatoire pour obtenir une certification WPS.

Image 3 : WPS : la norme qui ébranle la sécurité du Wi-FiPremier défaut, la norme n’empêche pas de tester toutes les possibilités. Dans les technologies qui utilisent un code PIN, par exemple les cartes SIM des téléphones GSM, il est généralement impossible de tester plus de 3 possibilités : au-delà, l’appareil se bloque. Avec le WPS, il est possible de tester toutes les combinaisons sans blocage. Plus exactement, la norme n’impose pas de blocages, mais certains appareils en implémentent un, qui consiste généralement à empêcher l’accès pendant un temps donné après x essais ratés.

Comme le code PIN fait 8 chiffres, le nombre de possibilités et de 100 000 000. Avec dans le meilleur des cas un essai toutes les 2 secondes, tester toutes les combinaisons peut prendre plus de 6 ans. Dans les faits, nos tests montrent qu’un appareil classique accepte en fait un test toutes les 10 secondes environ, soit 30 ans environ.

Première faille

Première faille, il n’y a en fait que 7 chiffres significatifs dans le code PIN. Le huitième chiffre est une somme de contrôle, que l’attaquant peut calculer. On passe donc à 10 000 000 de possibilités, soit entre 7 et 8 mois au maximum en théorie, plus de 3 ans dans la pratique.

Seconde faille

La seconde faille, plus gênante, c’est que l’appareil vérifie le code en deux fois. Concrètement, il est possible de vérifier si les 4 premiers chiffres sont justes et ensuite de vérifier si les quatre suivants sont bons. Au lieu de 100 000 000 de possibilités, on passe donc à 10 000 possibilités + 10 000 possibilités, soit 20 000 possibilités dans le pire des cas. On est à 11 heures de calcul au maximum en théorie, plutôt 55 heures dans la pratique (et dans le pire des cas).

On combine les failles

En prenant en compte les deux failles, on se rend compte que le nombre d’essais est même plus faible : 10 000 possibilités pour connaître la première partie du code et ensuite 1 000 possibilités pour la seconde partie, le dernier chiffre étant connu. On passe donc en théorie à une attaque qui prendra au pire environ 6 heures en théorie et au maximum 30 heures dans la pratique : le nombre de codes à tester est de seulement 11 000, au lieu de 100 000 000.

Dans la pratique

Dans la pratique, les temps sont évidemment théoriques : si on peut tester environ 6 codes par minutes sur un point d’accès (c’est parfois plus rapide et parfois plus lent), on peut découvrir la clé en quelques heures. En effet, s’il y a 11 000 possibilités, il y a statistiquement peu de chances que le code soit le dernier testé.

Qui est sensible à la faille ?

Maintenant, qui est sensible à la faille ? En théorie, tous les appareils certifiés WPS. Dans la pratique, ce n’est pas totalement vrai.

Les points d’accès certifiés WPS

Si vous avez un point d’accès Wi-Fi d’une grande marque, comme Netgear, Linksys, etc., il est probablement vulnérable. Nous avons testé avec succès l’attaque sur un point d’accès Linksys et un point d’accès Asus. Certains modèles Netgear ont un système qui bloque en partie l’attaque en introduisant des temps d’attente entre les essais, mais ils restent vulnérables. Dans la majorité des cas, le WPS est activé par défaut.

Les FAIBox

Image 4 : WPS : la norme qui ébranle la sécurité du Wi-FiSi vous avez une Box (Freebox, Livebox, Neufbox, BBox, etc.), l’attaque est généralement sans effet. Soit le WPS n’est pas activé par défaut (chez Free par exemple) soit l’appareil résiste à l’attaque, comme la Livebox. Visiblement, l’appareil introduit des temps d’attente et empêche le programme d’attaque de fonctionner. Enfin, certains modèles — les BBox 2 belges par exemple — obligent l’utilisateur à utiliser le bouton physique même en cas d’essai de connexion avec le code PIN, ce qui nécessite un accès physique. L’appareil est a priori techniquement vulnérable, mais l’accès physique limite les problèmes.

Les autres points d’accès

Si le point d’accès n’est pas certifié WPS, il y a peu de chances que l’attaque soit efficace. « Peu de chances » pour une seule raison : certains appareils peuvent être WPS sans être certifié. Le cas le plus courant est celui des bornes AirPort d’Apple, qui implémentent certaines fonctions sans être certifiées, et qui sont d’ailleurs insensibles à l’attaque (elles ne proposent pas la connexion via le code PIN). Mais il est possible que d’autres appareils implémentent la faille sans être certifiés.

Dans tous les cas, le moyen le plus simple de se protéger contre l’attaque est de désactiver le WPS. Si la technologie est pratique dans certains cas — notamment avec une imprimante —, la sécurité de votre réseau n’est pas réellement assurée si elle est active.

L’attaque

Pour tester l’attaque, avant d’écrire ce dossier, nous avons utilisé Reaver-WPS. Ce projet open source est disponible dans sa version 1.3 et permet d’attaquer les réseaux WPS en force brute sur le code PIN.

Bien évidemment, c’est un outil d’étude uniquement : il ne doit pas servir à attaquer des réseaux qui ne sont pas les vôtres. Nous l’avons testé sur plusieurs Livebox, une Bbox, un point d’accès Linksys (WAG120N), un point d’accès Asus (RT-N16) et une borne AirPort de type Time Capsule.

Les prérequis

Comme souvent un ordinateur sous GNU/Linux est nécessaire, avec une carte Wi-Fi capable de fonctionner en mode moniteur. Les cartes basées sur une puce Atheros, Realtek et Broadcom sont généralement compatibles et une liste des puces testées avec Reaver-WPS est disponible sur le site du programme.

L’attaque

Pour le reste, il faut connaître le BSSID du réseau. Un outil, Walsh, permet de lister les réseaux compatibles et le BSSID.

Ensuite, il faut lancer le programme. Nous vous laissons le soin d’aller vérifier sur le site dédié les commandes à utiliser, certains paramètres varient en fonction du réseau, il est par exemple possible de modifier l’adresse MAC de l’attaquant.

Si tout se passe bien, le programme va se connecter au réseau à attaquer et commencer à tester des codes PIN aléatoirement pour déterminer la première partie du code. Petite astuce, il est possible de forcer le premier code à utiliser et beaucoup de points d’accès ont le code 12345670 par défaut. En fonction du point d’accès et des conditions, la vitesse varie. Dans nos tests, les deux points d’accès qui étaient vulnérables (Asus et Linksys) permettaient respectivement de tester un code toutes les 8 secondes et un code toutes les 6 secondes.

Le programme va travailler en deux phases : la première est l’obtention des quatre premiers chiffres du code, environ 90 % du travail. La seconde est l’obtention des trois derniers chiffres, 10 % du travail. Le pourcentage d’avancement dans les tests est donc indicatif : il est calculé sur le pire des cas.

Sur notre premier essai, un point d’accès Asus, il a fallu 14 heures 47 minutes et 30 secondes pour trouver le code PIN. Une fois le code PIN trouvé, le programme permet de récupérer la clé WPA.

Image 5 : WPS : la norme qui ébranle la sécurité du Wi-Fi

Notre second essai, sur un point d’accès Linksys, a été un peu plus rapide : 12 heures 56 minutes et 37 secondes.

Image 6 : WPS : la norme qui ébranle la sécurité du Wi-Fi

Enfin, pour mémoire, un essai sur une borne compatible WPS mais insensible à l’attaque : le programme boucle sur le code PIN.

Image 7 : WPS : la norme qui ébranle la sécurité du Wi-Fi

Conclusion

En conclusion, le WPS est bien vulnérable. Nous ne pouvons que vous conseiller de désactiver la fonction quand c’est possible.

Notons tout de même que si l’attaque est réalisable, elle demande tout de même généralement beaucoup de temps. En attendant la version 2.0 de la norme — qui devrait régler en partie le problème — les constructeurs de points d’accès ont une solution simple : introduire des temps d’attente.

La norme 2.0 imposera notamment une pause de 1 minute après 3 essais ratés, ce qui va augmenter significativement le temps de calcul. En prenant par exemple notre attaque sur un point d’accès Linksys — qui a duré presque 13 heures —, cette simple mesure ajoute environ 43 heures au temps de calcul, ce qui la rend moins praticable dans la réalité. Et une des personnes qui a découvert la faille préconise même de mettre un temps d’attente de 60 minutes après 5 essais ratés, ce qui ne rend pas la faille inutilisable stricto sensu mais enlève tout son intérêt.

Petit rappel pour terminer, donc :

Pas de WEP.
Pas de WPS.