Jeudi 27 mai 2010
La nouvelle "attaque" à la mode question sécurité semble être le Tabjacking (Je ne vais pas refaire les explications, vous pouvez les lire chez Korben).
Est-ce vraiment une menace ?
Il faut déjà que le site vous affiche une page de login d'un service que vous utilisez vraiment. Si je voyais tout à coup une page de login Facebook, je crois que ça me ferait bien marrer. Bien sûr en tapant dans les gros (GMail, Hotmail, Facebook...) il y a de bonnes chances de viser juste, mais ça risque bien de tomber à côté.
Ensuite, les sites de phishing sont généralement très rapidement repérés et bloqués par les navigateurs (par exemple la protection anti-phishing de Firefox fournie par Google), sans compter les extensions comme WOT. J'ai déjà reçu d'innombrables mail de phishing concernant free.fr pour m'apercevoir que les pages étaient déjà bloquées par Google/Firefox, OpenDNS ou WOT.
Au final, le problème vient du fait que l'utilisateur ne fait pas attention au nom de domaine affiché quant il clic sur un onglet déjà ouvert. Mais on peut imaginer une parade.
Il existe des hashs visuels. On les trouve sous l'appellation d'identicon, visiglyph ou visprint. OpenSSH le fait aussi sous forme de texte.
A l'image des hashs comme MD5, les hashs visuels créent une image qui est unique. A titre d'illustration, j'ai bricolé rapidement un petit programme qui créé des hashs visuel et je propose une solution d'intégration aux navigateurs pour aider les internautes à éviter le phishing.
Mon petit programme s'appelle vizhash (jeu de mot sur "visuel", "hash" et "visage"). C'est en quelque sorte un moyen de donner un visage à un site web. Le programme prend en entrée du texte (par exemple le nom de domaine) et créé une image unique, spécifique à ce texte. vizhash possède les caractéristiques suivantes:
Laissez moi vous donner quelques exemple: Voici différents noms de domaine que j'ai donné à manger à mon programme. Il a créé une image spécifique à chaque nom de domaine:
facebook.com |
google.com |
laposte.net |
sebsauvage.net |
twitter.com |
siteduzero.com |
S'il y avait une tentative de phishing, la moindre lettre différente dans le nom de domaine donnerait une image totalement différente:
sebsauvage.net |
sebsauvaga.net |
sebsauvag.net |
sesauvage.net |
L'image peut être mise à différentes dimensions ou ratios tout en gardant ses caractéristiques identifiables:
siteduzero.com 80x80 |
siteduzero.com 400x60 |
siteduzero.com 60x200 |
On pourrait imaginer que le navigateur calcule lui-même cette image et l'affiche, mais uniquement si l'utilisateur est dans un formulaire de login (comportant un champ de type "password"). L'internaute ayant l'habitude de voir toujours la même image lorsqu'il se connecte serait sûrement interpellé si l'image est totalement différente. Cette image ne devrait en aucun cas être affichée dans l'espace de la page, mais dans la barre d'adresse, sous forme d'icône dans la barre de navigation, voir sous forme de persona Firefox. Je n'ai malheureusement pas le temps de développer une extension Firefox, mais voici ce que ça donnerait intégré aux personas:
Bon, soyons honnête: C'est juste une idée lancée comme ça. Ma solution n'est ni belle, ni idéale: Elle fait encore appel à l'attention de l'internaute, mais elle lui donne un indice visuel fort de l'identité du site. Le fait d'utiliser les personas le rend particulièrement visible. Cet indice visuel étant généré côté navigateur à partir du nom de domaine, il ne peut être spoofé (sauf en cas de détournement DNS, mais là c'est une autre histoire).
vizhash se basant sur un hash, on peut s'en servir pour hasher des adresses IP, fournissant ainsi une identité visuelle automatique à chaque visiteur d'un site, sans révéler son adresse IP. C'est en fait très similaire au MonsterID (dont Bohwaz a fait sa version).
On pourrait également s'en servir pour des hashs de fichiers, par exemple pour vérifier qu'un téléchargement est correct: Au lieu de taper la commande md5sum en ligne de commande et de comparer deux chaînes de 32 caractères, le navigateur de fichiers pourrait être équipé d'une extension qui affiche son hash visuel et comparer rapidement avec celui affiché sur le site web. En un coup d'oeil, on voit si le fichier est correct.
Page web proposant le téléchargement:
Onglet "Vizhash" dans les propriétés du fichier:
Ainsi je n'ai aucune commande à taper, et je sais immédiatement si le fichier que j'ai récupéré est correct.
vizhash est un petit programme d'une centaine de lignes, utilisable en ligne de commande. Le code source n'est pas formidablement compliqué. Il prend quelques options:
Usage: vizhash.py [options]
Options:
-h, --help show this help message and exit
-t TEXT, --text=TEXT Text to hash.
-f FILE, --file=FILE File to hash.
-x WIDTH, --width=WIDTH
(Optionnal) Width of image (default:80)
-y HEIGHT, --height=HEIGHT
(Optionnal) Height of image (default:80)
-o OUTPUT, --output=OUTPUT
(Optionnal) Output filename (default:approximate input
text or filename with png extension). You can use any
extension supported by ImageMagick.
Il nécessite Python 2.6 et ImageMagick. La chaîne en entrée est hashée en SHA256, et la valeur de chaque octet en sortie du SHA256 sert à piloter les opérations graphiques (type d'opération, paramètres). Le programme utilise ImageMagick pour effectuer ces opérations sur les images. ImageMagick étant assez lourd, l'intégration dans un navigateur nécessiterait de refaire ça de manière plus légère. On pourrait aussi sans aucun doute améliorer la génération d'image (générateurs de textures, fractales, meilleure harmonie des couleurs...). Il y a de la place pour l'amélioration. Je diffuserai sans doute mon programme par la suite.