De nombreuses entreprises informatiques ont conscience de la fragilité de leurs systèmes. Elles offrent donc des récompenses aux hackers pour découvrir les failles et les leur signaler. Ce type de programmes de « chasseurs de prime » peut être très lucratif pour les experts.
C’est d’ailleurs le but : que les pirates préfèrent signaler les vulnérabilités décelées à l’entreprise plutôt que les revendre sur le dark web. Facebook, qui détient Instagram, a également recours à cette pratique et a même récemment augmenté les montants offerts.
C’est ce qui a poussé le spécialiste informatique indien Laxman Muthiyah à rechercher des vulnérabilités dans le processus de connexion d’Instagram. Il a d’abord épluché la fonction « Renvoyer le mot de passe » de la page Web. Sans succès. Instagram envoie dans ce cas à l’utilisateur un lien de réinitialisation à son adresse électronique – impossible d’accéder au compte sans ce dernier.
L’application mobile d’Instagram utilise un code de réinitialisation
Toutefois, l’application mobile Instagram propose une option supplémentaire consistant à se faire envoyer un code de six chiffres sur le numéro de téléphone ou sur l’adresse électronique. Si le code est saisi avec le nom d’utilisateur dans l’application, l’utilisateur peut se reconnecter.
Tout assaillant connaissant le code et le nom d’utilisateur du compte Instagram peut donc également se connecter. Le titulaire légitime du compte sera alors bloqué, puisque le mot de passe aura été modifié.
Passer par le compte e-mail ou le numéro de téléphone pour obtenir le code demanderait trop d’efforts pour un piratage réussi. Laxman réalise toutefois qu’il n’a absolument pas besoin de ces données. Il lui suffit de tester toutes les combinaisons possibles jusqu’à trouver la bonne.
Attaque par force brute avec un million de combinaisons possibles
Pour un code à six chiffres, l’assaillant doit tester au maximum tous les chiffres entre 0 et 999 999 pour trouver la bonne combinaison. Pour les craqueurs de mot de passe automatisés, ce n’est pas un problème. Le fait que le code de réinitialisation ne soit valable que 10 minutes complique toutefois les choses.
En plus, les serveurs sont relativement bien protégés contre ce qu’on appelle des « attaques par force brute ». Facebook a pris ses précautions à ce sujet et prévu ce type d’attaque. Laxman décide tout de même de faire un test sur son propre compte Instagram.
Il commence modestement en envoyant 1 000 demandes avec différentes combinaisons à son propre compte Instagram. 250 d’entre elles sont acceptées contre 750 refusées. Lors d’une tentative suivante, le nombre de refus est encore plus élevé : Instagram semble avoir détecté l’attaque.
Les adresses IP ne sont pas bloquées
À ce moment, Laxman remarque toutefois que les adresses IP – à l’origine de l’attaque – ne semblent pas être bloquées. Seul le nombre de tentative de connexion par adresse IP est limité. Tout devient évident : s’il utilise suffisamment d’adresses IP différentes pour tenter de se connecter, il réussira.
Pour être plus précis, il lui a fallu environ 5 000 adresses IP pour réussir le piratage. Cela semble beaucoup mais pour des grands hébergeurs comme Amazon ou Google, ce n’est pas un problème. En tout, réaliser l’attaque complète avec 1 million de combinaisons a coûté 150 dollars à Laxman.
Après avoir réussi à pirater son compte, il envoie un e-mail à Facebook en lui faisant part de ses observations. Une fois le cas vérifié, Facebook finit par verser 30 000 dollars au hacker, et corrige la faille. Laxman a pu se remettre à la chasse aux vulnérabilités et le programme de chasseurs de prime s’assurer que ce savoir ne tombe pas entre de mauvaises mains.