WPS, talon d'achille du WPA ?...

Publié le 03 janvier 2012 par Sid

L

a nouvelle a fait du bruit juste avant la trêve hivernale : le WPS serait cassé et, par effet boule de neige, WPA et WPA2 avec. Comme à l'accoutumée, le raccourci est un peu rapide mais, contrairement à de précédentes annonces, proche de la réalité du terrain.

Comme l'explique Stefan Viehböck sur son blog, il est possible dans un temps tout à fait raisonnable de brute-forcer un code PIN WPS et d'en tirer la PSK du réseau cible. À n'en point douter, c'est une situation pas terrible qui mérite qu'on s'y attarde. Histoire de comprendre de quoi il retourne et comment on se protège...

Pour se faire un idée plus précise du problème, il faut se pencher sur ce protocole appelé Wi-Fi Protected Setup, WPS pour les intimes. Introduit en 2007, ce système a pour but de fournir un moyen simple pour les utilisateurs peu férus d'informatique, et encore moins de sécurité, d'obtenir une configuration Wi-Fi sécurisée par une clé partagée (PSK) forte. À cette fin, quatre méthodes ont été standardisées :

  • utilisation d'un code PIN, avec deux variations :
    • fourniture à l'AP via son interface web d'un code PIN client (PIN interne), imprimé sur la carte Wi-Fi par exemple ;
    • fourniture au client d'un code PIN imprimé sur l'AP (PIN externe), qui est la méthode la plus répandue ;
  • utilisation d'un bouton (PBC, pour Push Button Connect) permettant de basculer dans un mode de négociation de clé, méthode popularisée par Linksys ;
  • utilisation d'un système NFC pour la transmission des éléments de négociation, très peu utilisée ;
  • utilisation d'une clé USB, méthode poussée par Microsoft.

On remarque d'emblée deux choses. D'abord, toutes ces méthodes supposent un accès physique à un équipement du réseau, ou du moins une proximité forte. Ensuite, l'introduction d'un élément limitant supplémentaire : canal de transmission de données hors-bande le NFC et l'USB, possibilité d'enregistrement limitée dans le temps pour le PBC ou accès préliminaire au réseau pour le PIN interne. En fait, seule la méthode PIN externe repose sur un schéma qu'on pourrait qualifier de classique, à savoir la fourniture d'un mot de passe composé de 8 chiffres sans autre forme de limitation. C'est sur cette première constatation de base que repose l'article de Stefan Viehböck dont le sous-titre est assez révélateur du problème : "when poor design meets poor implementation".

Cependant, le simple fait qu'une méthode WPS repose sur un code PIN de huit chiffres n'est pas en soi une faille de conception. En effet, bien d'autres systèmes d'authentification reposent sur un code PIN, souvent plus court, et ne sont pas pour autant considérés comme des passoires. La raison principale à cela est extrêmement simple : l'utilisateur dispose d'un nombre d'essais très limité, habituellement trois, avant que le système ne se verrouille. On contre-balance donc une faiblesse de design (mot de passe faible) par une mesure technique d'implémentation (limitation du nombre d'essais). Or, les tests montrent que ce n'est que très rarement le cas pour le WPS en PIN externe, ce qui constitue une réelle faille d'implémentation. Ensuite, il existe une faille de conception majeure dans l'échange de message qui permet de réduire très fortement la complexité du brute-force. D'abord parce que la première moitié du PIN est vérifiée indépendamment de la seconde, ce qui revient à casser deux PIN de 4 chiffres, soit une réduction considérable de l'espace de recherche[1]. Ensuite, parce que le dernier chiffre est un checksum des sept précédents[2]. C'est l'association de ces deux problèmes qui permet de faire tomber la PSK du réseau en quelques heures, sans compter la raccourcis malheureusement habituel du PIN par défaut...

Peu après cette publication, un outil appelé Reaver a été publié par Craig Heffner qui avait lui aussi découvert la faille de son côté. Viehböck mettra le sien à disposition peu de temps après. Ce qui nous donne deux implémentations pratiques de l'attaque donnant des résultats plus que probants comme le montrent les tests publiés. En particulier, on remarquera que la préconisation de la Wi-Fi Alliance pour la prochaine mouture du standard, à savoir un verrouillage de soixante secondes après un troisième essai infructueux est insuffisante puisqu'elle ne porte la durée de l'attaque qu'à un peu plus de deux jours, contre un mois pour un verrouillage d'une heure. Si ce verrouillage est en outre associé à l'introduction d'un temps d'attente non négligeable entre deux essais, on peut passer à plusieurs mois.

Comme on peut le voir, cette faille ne touche pas l'intégralité de WPS. On pourrait être tenté de dire qu'elle n'affecte que les configurations autorisant le WPS en PIN externe, mais c'est cette dernière méthode qui est aujourd'hui implémentée et activée par défaut sur nombre d'équipements d'accès Wi-Fi grand public, qu'il s'agisse de routeurs ou de boxes opérateur. Son exploitation permet de récupérer la clé partagée du réseau, affectant dès lors tout le reste de la chaîne indépendamment de la version de WPA utilisée[3] ou du chiffrement mis en place[4]. Toute autre configuration de sécurité[5] ne devrait pas être exposée.
C'est du côté des solutions que le bât blesse. Car le problème avec cette faille, c'est qu'en attendant une mise à jour de firmware de la part du constructeur, la seule contre-mesure disponible est la désactivation pure et simple de WPS sur l'AP, lorsque c'est possible. Et quand bien même le firmware mis à jour serait supposé corriger la faille, on sait pertinemment qu'à défaut d'une évolution majeure du standard[6], la vulnérabilité principale, à savoir la taille réduite de l'espace de recherche en brute-force, restera présente. On sait également qu'à moins que la Wi-Fi Alliance ne durcisse ses préconisations, cette faiblesse ne sera contre-balancée que par une mesure d'implémentation dont on sait déjà qu'elle sera insuffisante.

C'est pourquoi je ne saurais trop vous conseiller, si vous le pouvez, de désactiver complètement la fonctionnalité. Et à défaut, de penser sérieusement à changer d'équipement...

Notes

[1] On passe de 108 à 2x104.

[2] On passe finalement à 104+103.

[3] Mais on sait qu'il n'y a pratiquement pas de différence entre WPA et WPA2.

[4] AES ou TKIP, cela ne fera aucune différence.

[5] WPS en PIN externe non autorisé, WPS désactivé ou 802.1x, mais attention à la cohabitation des standards...

[6] Qui devra également être accompagnée d'une mise à jour du support WPS par les stacks Wi-Fi...