"Captcha" contourné et détourné ...

Date : 06 Février 2007

"Captcha" ("Completely Automated Public Turing test to tell Computers and Humans Apart") est un système d'authentification de type "challenge-réponse" qui permet de déterminer si c'est un humain qui se trouve devant l'ordinateur distant (plutôt qu'un automate informatique). "Captcha" se base sur la génération d'images comportant une chaîne de caractères conçue de manière aléatoire tant au niveau des caractères choisis que de la police, de la couleur et de la position des lettres dans l'image. L'utilisateur est ainsi amené à saisir la chaîne de caractères représentée dans l'image.

Ce système permet de protéger entre autres

  • une ressource web protégée par une authentification de type "identifiant/mot de passe" contre des attaques en "force brute", par exemple pour l'accès aux services d'une banque en ligne,
  • une ressource web proposant des services gratuits contre les inscriptions abusives (automatiques), comme par exemple les fournisseurs de comptes de messagerie et les forums de discussions.

 Le principe du système "Captcha" est de proposer à l'utilisateur une image à partir de laquelle seul un humain est capable d'extraire la chaine de caractères qui y est dissimulée. Le corolaire de cette approche est qu'il est potentiellement impossible pour un automate informatique d'interpréter correctement une telle image.

Cette conclusion laisse donc entrevoir une utilisation détournée de ce type de système. En effet, ce type d'images est aujourd'hui couramment rencontré dans les messages de "Spam" et rend la détection de ces e-mails nuisibles de plus en plus ardue (voir à ce sujet l'article publié Cert-IST à propos des "images spam" publiées dans un bulletin précédent).

Néanmoins, nous nous intéresserons dans cet article à l'utilisation première de "Captcha" (authentification) pour découvrir que certaines implémentations sont vulnérables à des problèmes de sécurité permettant de mettre en défaut la protection offerte par ce système.

Bien que l'utilisation de logiciels de reconnaissances de caractères (OCR) élaborés permet une analyse de certaines images "Captcha", cette technique peut être également contournée par des vulnérabilités plus classiques et moins couteuses.

En effet, une mauvaise gestion des données retournées par l'utilisateur ou un abus des identifiants de session peuvent permettre à un programme automatisé d'outrepasser cette protection.

Exemple d'abus de l'identifiant de session :

Dans certaines implémentations, il suffit de sauvegarder l'identifiant d'une session HTTP (1) lié à une authentification manuelle préalable et de le rejouer avec les données "Captcha" associées (2), et ceci jusqu'à l'expiration de l'identifiant de session.

Cette méthode pouvant être d'automatisée, elle peut permettre un grand nombre de re-jeux contournant ainsi la protection du système "Captcha".
 

POST /vuln_script.php HTTP/1.0
Cookie: PHPSESSID=329847239847238947; <= Identifiant de session préalablement enregistré (1)
Content-Length: 49
Connection: close;

name=bob&email=bob@fish.com&captcha=le_texte <= Données "Captcha" préalablement visualisées (2)


De même, récemment, une vulnérabilité de ce type a été découverte dans le système "Captcha" proposé par le gestionnaire de contenu (CMS) "Drupal". Elle permet à un automate de contourner la sécurité du système "Captcha" en injectant des réponses spécifiques.

Il est donc recommandé lors de l'utilisation de logiciels "Captcha" de s'assurer de leur réelle capacité à protéger une ressource face à une attaque automatisée.


Pour plus d'information :

Précedent Précedent Suivant Suivant Imprimer Imprimer