Première rédaction de cet article le 23 mai 2013
Vous avez confiance dans les composants électroniques de votre
ordinateur ? Vous croyez que, lorsque vous tapez ou sélectionnez
http://www.impots.gouv.fr/
, vous vous retrouverez
bien là où vous pouvez déclarer vos revenus ? Vous avez
tort. L'électronique, c'est fragile. Un bit 1 peut se changer en 0
subitement (ou le contraire) et, à partir de là, le
http://kremlin.ru/
se change en
http://kremlin.re/
... C'est le bit
flipping (le changement de la valeur d'un bit), qui permet
le bitsquatting (l'enregistrement par un méchant
d'un domaine proche d'un
bit du domaine dont on veut détourner le trafic).
Mais pourquoi un 0 se transformerait-il en 1 subitement ? Il existe des tas de raisons physiques possibles, d'un rayon cosmique (la Terre en reçoit en permanence) à la radioactivité en passant par la simple agitation thermique. Moins il y a d'atomes pour faire un bit (avec les progrès de la miniaturisation) et plus le risque est important. Mais les ordinateurs n'ont pas de moyen de se défendre, de la redondance, des contrôles ? Si, cela existe, cela se nomme les mémoires ECC mais elles sont plus chères et n'équipent pas les engins de bas de gamme. Ceux-ci, bon marché mais connectés à l'Internet, sont de plus en plus nombreux.
Quels sont les changements possibles ? En regardant la table
ASCII, on voit que e est représenté par
01100101 et u par 01110101. Un changement du quatrième bit suffit donc
à passer de la Russie à l'île de la
Réunion comme dans l'exemple ci-dessus. Mais le
bit flipping ne change pas que des lettres en
lettres. Par exemple, n est représenté par 01101110 et le
point par 00101110. En changeant le deuxième bit,
on change tout dans le nom de domaine. windowsupdate.com
peut
devenir wi.dowsupdate.com
en modifiant un seul
bit. Même chose entre o (01101111) et la
barre oblique (00101111). Un
https://ecampus.phoenix.edu
tapé dans un
navigateur peut devenir
https://ecampus.ph/enix.edu
, qui est dans un tout
autre TLD.
Mais les protocoles de sécurité comme X.509 ou DNSSEC ne vont pas s'y opposer ? Si le bit flipping avait lieu dans le réseau, sans doute. Mais il a souvent lieu dans la machine originale. Auquel cas, ces protocoles ne peuvent pas aider, le problème étant dès le début. S'il a lieu dans le réseau, notons que les simples mécanismes de contrôle existants comme la somme de contrôle UDP suffisent à l'attraper.
Bon, le bit flipping est possible. Est-il fréquent ? Pose-t-il un vrai problème en pratique ? La première question est délicate car on ne connait pas le nombre de fois où un nom de domaine est manipulé et copié dans une machine. Même si le pourcentage de bit flipping est très faible, il faut le multiplier par le nombre de machines existantes et par le nombre de fois qu'elles tripotent des noms de domaine. En fait, personne ne sait vraiment.
Et le risque de sécurité ? C'est que quelqu'un de mal intentionné n'enregistre le nom avec un bit changé et n'intercepte alors du trafic légitime, comme dans l'exemple du Kremlin ci-dessus. L'expérience (voir la bibliographie) montre que ces noms bitsquattés attirent effectivement du trafic, même s'il n'est pas toujours facile d'être certain de son origine. À la dernière réunion OARC à Dublin, Jaeson Schultz a présenté une entreprise de bitsquatting de grande envergure, afin d'étudier le phénomène, et ses mesures semblent indiquer que le bit flipping est plus répandu qu'on en le pensait.
Il a aussi étudié le passé et montré que
wwwnfacebook.com
, bitsquatting
de www.facebook.com
, avait été enregistré deux
ans avant la publication du premier papier sur le
bitsquatting. Cela ne veut pas dire que celui qui a
fait l'enregistrement connaissait le phénomène du bit
flipping, peut-être le
domainer a-t-il essayé beaucoup de noms et
constaté empiriquement que celui-ci recevait du trafic.
Mais il est difficile de faire la part de ce qui est du vrai bit flipping. Il peut s'agir de fautes de frappe (Schultz note que des domaines très éloignés sur le clavier mais proches en bits reçoivent eux aussi du trafic, donc les fautes de frappe n'expliquent pas tout) ou d'un simple bruit de fond (enregistrez n'importe quel nom de domaine, vous aurez du trafic).
L'article de Schultz contient aussi des suggestions de techniques pour limiter le bitsquatting mais aucune ne me semble réaliste. J'en ai quand même déployé une dans le source de cet article : les noms de domaine dans les URL sont en majuscules (il y a moins de possibilités de bit flipping en majuscule).
Un peu de bibliographie :
Enfin, un script Python pour afficher les
variantes bit-flipées d'un nom, bitflip.py
:
% python bitflip.py labanquepostale mabanquepostale nabanquepostale habanquepostale dabanquepostale lcbanquepostale lebanquepostale libanquepostale lqbanquepostale lacanquepostale ...
Version PDF de cette page (mais vous pouvez aussi imprimer depuis votre navigateur, il y a une feuille de style prévue pour cela)
Source XML de cette page (cette page est distribuée sous les termes de la licence GFDL)