Blog des Gens Compliqués

Facebook et le Clickjacking

20/12/2018 12:21:54+01:00|Par DkVZ
3 minutes de lecture (facile)

Il est techniquement possible de planquer des boutons "Like" voire tout le formulaire de partage de Facebook en arrière-plan de manière invisible, et provoquer un clic non-désiré qui partage ou "Like" quelque chose contre votre gré.

Particulièrement aujourd'hui c'était la fête à ce genre de posts:

Cette page affiche un bidule "HEY EST-CE QUE T'AS 16 ANS:

Et si vous cliquez sur l'icône de fermeture ou le gros bouton en étant connecté sur Facebook dans ce navigateur, BOOM, auto-partage!

Notez qu'à l'heure actuelle, Facebook a bloqué le partage de ces éléments donc vous devriez pouvoir cliquer tranquille en ce moment.

Comment éviter le clickjacking

Outre les solutions vraiment brutales comme désactiver le Javascript, ce n'est pas nécessairement simple d'éviter le clickjacking. Particulièrement sur un mobile.

Voici quelques idées:

  • Si le lien affiche un popup de "consentement" en premier ou vous demander de cliquer sur un truc, ça sent déjà très mauvais;
  • Vérifier le nom de domaine du lien, si c'est un hébergement gratuit comme s3.amazonaws.com c'est pas bon signe;
  • Ouvrez le lien sur un autre navigateur non connecté à Facebook;
  • Deconnectez-vous de Facebook avant d'ouvrir le lien.

Le dernier plan consiste à ne pas cliquer mais utiliser le clavier. La faille exploitée se base entièrement sur des superpositions de bidules qui créent des chaines d'évènement quand on clique. Utiliser le clavier est normalement sans risque.

Je dis normalement parce qu'ils pourraient intercepter tous les évènements clavier et créer artificiellement des évènements click, mais je ne pense pas que ça puisse affecter les éléments en arrière-plan comme un clic direct.

Sur un ordinateur fixe, utiliser la touche tab et la barre d'espace pour sélectionner le bouton devrait sérieusement limiter les risques.

Avoir un antivirus, firewall, bloqueur de pub et autres n'a aucun effet sur ce type d'attaque. Tout se calme naturellement quand Facebook se décide à bloquer l'indésirable.

Pourquoi?

Je ne comprends pas pourquoi.

J'ai d'abord pensé à un déni de service parce qu'il y a une vérification du pays d'origine puis un appel vers un site Polonais qui n'existe pas (plus?) - Uniquement si on accède à la page depuis une adresse IP polonaise.

Ouais je comprends pas, voyez vous-mêmes:

var request = new XMLHttpRequest();
request.open('GET', 'https://get.geojs.io/v1/ip/country');
request.send();
request.onreadystatechange = function () {
  if (request.readyState === 4 && request.status === 200) {         
    if (request.response == "PL\n"){
      top.location.href = 'http://niedlapsakurwadlapana.to';
    }     
  }
}

Le déni de service est le cas d'utilisation le plus évident pour le clicjacking en général. Si 100000 personnes provoquent des requètes sur un pauvre site innocent qui n'était pas prêt, ça risque de le mettre à genou.

L'autre possibilité, vu tous les marqueurs de statistiques qui sont insérés, c'est qu'il s'agit d'un genre d'expérience en partage "viral" d'information.

Je suppose pour démontrer combien de paires d'yeux on peut rassembler sur quelque chose en peu de temps? Par curiosité ou pour tester des méthodes de désinformation massives?

Facebook ça pourrait être mieux

Est-ce qu'on pourrait aussi avoir quelques options du genre:

  • "Ne jamais conserver d'historique de recherche" (pourquoi c'est pas présent d'office dans une app qui sert à stalker les gens??)
  • "Demander double ou triple confirmation avant de like ou partager quelque chose" - Parce que outre les problèmes de clickjacking c'est très facile de glisser sur un bouton like avec son gros doigt plein de beurre sur un mobile et en général c'est toujours sur le billet "Mon hamster vient de décéder" de votre patron
  • Ne pas autoriser le partage par iframe. C'est possible en ajoutant une en-tête côté serveur
  • Retirer le plan "Vous devez utiliser votre vrai nom complet" de leurs conditions d'utilisation. C'est juste dangereux pour certaines personnes qui se sont fâchés avec le mauvais groupe de dingos sur Internet

On peut toujours rêver.

Commentaires

Il faut JavaScript activé pour écrire des commentaires ici

#1

dkvz
23/12/2018 12:51:05+01:00
Okay donc l'histoire du script qui vérifie si vous êtes Polonais c'est parce qu'apparemment la personne ne voulait pas que le clickjacking fonctionne si vous êtes Polonais. Probablement parce qu'il est euh... Ben... Ouais. La traduction serait quelque chose du genre "PASUNPUTAINDECHIEN.TO". Rhaaa la jeunesse...

Ajouter un commentaire

Votre commentaire a été ajouté
(enfin, je pense)