Bonjour Nal<
Quelques mots rapides pour prévenir d'une faiblesse dans les navigateurs Firefox et Chrome pour leurs versions actuelles (respectivement 52 et 57.) : il s'agit d'un problème avec l'usage de l'unicode dans l'enregistrement de domaines permettant de faire passer ceux-ci pour d'autres domaines. Firefox et Chrome n'y voient que du feu.
Concrètement : on clique sur un lien malicieux (qui lui même présente un nom légitime lors du passage de la souris en survol) qui nous amène vers un site malicieux, et nos navigateurs affichent le nom de domaine légitime. Si le site malicieux présente un chiffrement fiable alors nous verrons même le petit cadenas vert indiquant que tout va bien. Depuis quelques jours un exemple est donné par le site "wordfence" :
L'image de la barre d'adresse de firefox visitant le site légitime :
L'image de la barre d'adresse de firefox visitant le site malicieux :
Difficile dès lors de se douter que quelque chose ne va pas, mais alors pas du tout. On imagine sans peine ce que cela donne avec un nom de domaine unicode qui se fait passer pour le domaine d'une banque…
Pour éviter ce comportement de Firefox, éditez sa configuration ainsi :about:config
-> network.IDN_show_punycode = true
Bon dimanche.
Et merci aux experts de la ³bune, ici Finss<, pour avoir relayés ce lièvre là \o/
https://www.wordfence.com/blog/2017/04/chrome-firefox-unicode-phishing/
# Correction
Posté par Antoine . Évalué à 8.
Il faut passer la valeur à "true", pas "false" (qui est la valeur par défaut).
[^] # Re: Correction
Posté par Benoît Sibaud (site web personnel) . Évalué à 4.
Corrigé, merci.
# s/false/true
Posté par Dareg . Évalué à 2.
Il faut passer la valeur de network.IDN_show_punycode à true afin de voir l'url «réel».
[^] # Re: s/false/true
Posté par Benoît Sibaud (site web personnel) . Évalué à 4.
Corrigé, merci.
# Commentaire ci-dessous
Posté par Faya . Évalué à 3.
Quel est le caractère (ou les …) qui ont été remplacés ici, et par quoi ? Les divers "punycode converters" m'affichent toujours epic.com, et si je copie paste ou regarde le code source c'est l'orthographe fiable avec les caractères latins qui est affichée.
Du coup je comprends bien le trick mais je ne vois pas où il est placé… ?
[^] # Re: Commentaire ci-dessous
Posté par claudex . Évalué à 4.
Je n'ai jamais rien compris au punycode mais est-ce que ce ne serait pas une représentation des caractères latin via les calculs du punycode ? (cette phrase ne veut pas dire grand chose mais j'espère que quelqu'un comprendra)
« Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche
[^] # Re: Commentaire ci-dessous
Posté par Faya . Évalué à 3.
Ma question n'était déjà pas claire, ça n'aide pas … Les navigateurs font sûrement une corrélation entre le caractère unicode et le caractère ascii le plus proche.
Mais oui le punnycode c'est imbitable, donc je comprends qu'ils ne l'affichent pas tel quel. Et du coup ça pose les problèmes soulevés ici. La solution serait ptêt d'avertir l'utilisateur que l'URL contient des caractères non-ascii
[^] # Re: Commentaire ci-dessous
Posté par claudex . Évalué à 4.
Ce que je veux dire, c'est que le punycode en question correspond peut-être à de l'ascii. Je vais partir une représentation qui n'est pas du pynicode. Donc, en utilisant une méthode à la con où on remplace les caractères unicode par <4chiffres pour leur représentation unicode>.
déf
devientd\00E9f
. On pourrait représenter le domaineabc.com
par\U+00610062\0063.com
. C'est peut-être la même technique qui est employée dans ce cas.« Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche
[^] # Re: Commentaire ci-dessous
Posté par nah (site web personnel) . Évalué à 7.
L'astuce est ultra-simple (et connue depuis 2001 ?). Il suffit de remplacer un caractère ascii (range 31-255 ?) par un caractère y ressemblant (par exemple, des lettres de l'Alphabet_cyrillique).
Bon courage pour faire la différence entre ces deux URL :
https://www.аррӏе.com/
https://www.apple.com/
Ici, la différence subtile est sur la lettre 'l', comme le montre l'extension IDND dans Mozilla Firefox. La première URL n'est pas le site officiel, contrairement à la seconde URL.
Le punycode sert à faire la conversion entre www.аррӏе.com (il)lisible par les humains en un truc résolvable par les DNS, comme www.xn--80ak6aa92e.com
[^] # Re: Commentaire ci-dessous
Posté par claudex . Évalué à 3.
La question original, du thread, c'est de savoir lequel justement dans ce cas ci.
J'ai bien compris ça, c'est l'algo que je ne comprends pas, comment arrive de www.аррӏе.com à www.xn--80ak6aa92e.com.
« Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche
[^] # Re: Commentaire ci-dessous
Posté par Anonyme . Évalué à 3.
[^] # Re: Commentaire ci-dessous
Posté par claudex . Évalué à 4.
J'ai lu, mais je ne trouve pas ça clair du tout.
« Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche
[^] # Re: Commentaire ci-dessous
Posté par pulkomandy (site web personnel, Mastodon) . Évalué à 5.
Par exemple, аpple.com (avec un a en cyrillique), devient xn--pple-43d.com.
On voit le xn--, le "pple" (аpple sans le а), le -, et le 43d qui dit "il faut insérer un а en position 0".
[^] # Re: Commentaire ci-dessous
Posté par claudex . Évalué à 8.
Mais comment tu traduit 43d en "il faut insérer un а en position 0" ?
« Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche
[^] # Re: Commentaire ci-dessous
Posté par Kerro . Évalué à 4.
Pareil lorsqu'il y a plusieurs zone de remplacement : pаpа.com avec les a en cyrillique, ça donne xn--pp-7kcb.com
J'ai lu vite fait les spécifications. Il manque une bête présentation globale du fonctionnement.
[^] # Re: Commentaire ci-dessous
Posté par flagos . Évalué à 4.
Il y a une tentative de demystification sur wikipedia. Ca n'a rien d'évident ou de trivial, mais ca permet d'apprehender la mecanique de l'algo:
https://en.wikipedia.org/wiki/Punycode
[^] # Re: Commentaire ci-dessous
Posté par Arthur Accroc . Évalué à 2.
L’explication n’est pas encore d’une clarté époustouflante…
Quoiqu’il en soit, même si on comprend comment fonctionne le Punycode, ça reste illisible.
Si les navigateurs avaient la bonne idée d’afficher, plutôt que le Punycode, les caractères ASCII tels quels et les numéros Unicode (précédés d’un caractère d’échappement) pour les autres, ce serait déjà un peu plus gérable.
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
[^] # Re: Commentaire ci-dessous
Posté par groumly . Évalué à 2.
Tu connais la table Unicode par cœur?
Je sais pas toi, mais \uD83D\uDD95 ou A43D pour moi c'est kif kif, je sais pas ce que c'est
Linuxfr, le portail francais du logiciel libre et du neo nazisme.
[^] # Re: Commentaire ci-dessous
Posté par Arthur Accroc . Évalué à 2.
Je sais que les caractères latins courants sont au début, avant U+0300 (et même avant U+0100 pour la plupart de ceux utilisés en français). Si j’étais russe, je suppose que j’arriverais à retenir à peu près la zone des caractères cyrilliques.
Donc si je vois ça dans la barre d’adresse, c’est louche, improbable que ce soit un URL légitime. Enfin si j’ai un doute, je peux toujours regarder dans la table de caractères (d’ailleurs les codes que tu as choisis ne correspondent même pas à des caractères).
Oui, enfin un code Punycode, il faut le « dépunycoder » puis chercher quand même dans la table de caractères pour savoir ce que c’est vraiment. Une étape de plus.
Sans compter qu’avec le Punycode, on ne voit même pas où s’insèrent les caractères non ASCII. C’est quand même particulièrement abscons.
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
[^] # Re: Commentaire ci-dessous
Posté par groumly . Évalué à 3.
Et ca t'avance a quoi? T'es toujours pas capable de lire le nom de domaine.
C'est pas des "caractères", c'est un emoji. C'est précisément mon point, unicode est un encodage particulièrement complique, prétendre pouvoir le lire a la volée est délirant.
Linuxfr, le portail francais du logiciel libre et du neo nazisme.
[^] # Re: Commentaire ci-dessous
Posté par Arthur Accroc . Évalué à 4.
Je n’ai pas besoin de me rappeler tous les caractères par cœur pour savoir que ce n’est pas le site d’une banque…
Après, je t’accorde que pour cr\u00E8ditmutuel.fr, il faudrait avoir la version décodée à côté pour ne pas avoir à vérifier dans la table des caractères (en l’occurrence, ce n’est pas un é mais un è, mais entre E9 et E8, on pourrait se tromper).
Mais si tu as xn--crditmutuel-bbb.fr et pas d’affichage de la version décodée, tu fais quoi ?
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
[^] # Re: Commentaire ci-dessous
Posté par Faya . Évalué à 2.
Oui oui j'avais bien compris ça. Mais c'est le caractère unicode (trompeur) que je cherche. Parce que la version punycode est incompréhensible.
[^] # Re: Commentaire ci-dessous
Posté par Benoît Sibaud (site web personnel) . Évalué à 6.
[^] # Re: Commentaire ci-dessous
Posté par claudex . Évalué à 4.
La question, c'est quelle est le caractère non ASCII dans epic.com, autrement dit xn--e1awd7f.com.
« Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche
[^] # Re: Commentaire ci-dessous
Posté par Benoît Sibaud (site web personnel) . Évalué à 5.
Même réponse : copier/coller l'info du site initial, et mêmes commandes dans un terminal.
[^] # Re: Commentaire ci-dessous
Posté par claudex . Évalué à 4.
Merci, j'ai dû raté un copier-coller, j'avais 65 70 69 63 dans les deux cas.
« Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche
[^] # Re: Commentaire ci-dessous
Posté par Faya . Évalué à 3. Dernière modification le 17 avril 2017 à 20:33.
Excellent, merci.
Avec l'hexadecimal et https://software.hixie.ch/utilities/cgi/unicode-decoder/utf8-decoder j'ai pu retrouver les caractères :
[^] # Re: Commentaire ci-dessous
Posté par BFG . Évalué à 10.
Je vais faire un peu de publicité non-dissimulée, l'outil en ligne de commande univisible affiche quels points de code constituent une chaine :
[^] # Re: Commentaire ci-dessous
Posté par ckyl . Évalué à 10.
Tous.
Ce genre d'attaque est veille comme le monde, enfin comme au moins le début des années 2000, et les navigateurs s'en protège en affichant l'URL en punycode lorsqu'ils détectent une URL qui correspond au mixed script confusable c'est à dire qu'un caractère d'un autre script a été utilisé (exemple: tu remplaces le a latin de paypal par un a cyrillique).
La seule nouveauté ici, c'est qu'ici quelqu'un a pensé a remplacer tous les caractères du domaine par leur équivalent d'un autre script. Forcément les navigateurs ne gueulent pas par ce que c'est valide et souhaité par certains utilisateurs utilisant autre chose que les caractères latins.
Pour ceux que ca intéresse la notion de confusable, mixed script confusables ou whole script confusables est très bien expliquée et documentée là: http://unicode.org/reports/tr39/
Unicode est un outil formidable qui te permet de prendre en pleine face tous les problèmes issus de quelques milliers d'évolution humaine et quelques dizaines d'années d'évolution informatique. Les normalisations NFC / NFD, le dépassement des 16 bits du BMP, le bi-di, les algos de collation, de localisation et les dizaines d'autres subtilités sont des sources de joies permanentes :)
# représentation visuelle des noms de domaine
Posté par boarf . Évalué à 8.
Ayant été professionnellement confronté à cette problématique, je n'ai jamais trouvé de solution simple pour nos clients. Mais pour nous « geeks », je me suis dit que le salut tient dans une représentation visuelle du nom de domaine basée sur le hash cryptographique de celui-ci, mis à disposition par exemple par une extension du navigateur. Un peu le même mécanisme que les avatars automatiques qu'on peut trouver sur les forums.
[^] # Re: représentation visuelle des noms de domaine
Posté par robin . Évalué à 4.
C'est effectivement une bonne idée. Il serait à mon avis tout à fais possible de générer une fractale de la taille de barre d'adresse assez facilement, et deux fractales sont facilement différenciables entre elles à cause des formes et des couleurs assez caractéristiques.
bépo powered
[^] # Re: représentation visuelle des noms de domaine
Posté par Nicolas Boulay (site web personnel) . Évalué à 4.
Comme ici : https://github.com/nicolasboulay/ghash
Mais bon, il y a des trucs à corriger. Il y a trop de collision.
"La première sécurité est la liberté"
[^] # Re: représentation visuelle des noms de domaine
Posté par robin . Évalué à 1.
C'est effectivement à ça que je pensais quand j'ai écris mon commentaire. Merci du lien.
bépo powered
[^] # Re: représentation visuelle des noms de domaine
Posté par calandoa . Évalué à 2.
Et pourquoi pas afficher tout simplement les caractères non-ASCII avec une couleur de fond différent ? Par exemple dans l'exemple d'apple ci dessus, la fausse adresse s'afficherait: www . apple . com, avec la partie en gras sur fond orange au lieu de blanc.
Ça ne marcherait pas toujours, par ex. des sites légitimes avec un é pourraient avoir cette lettre remplacée par un caractère différent mais homographe (si ça existe), mais ça permettrait au moins de faire apparaitre le problème pour les noms ASCII, soit la grande majorité des sites.
[^] # Re: représentation visuelle des noms de domaine
Posté par boarf . Évalué à 4.
À mon sens, c'est moins universel qu'un « avatar automatique » : ça marche très bien pour les populations utilisant nativement l'alphabet ASCII ou proche (les parties latines d'Unicode, hors ASCII, autorisées par l'AFNIC par exemple), mais les utilisateurs d'alphabets grecs, cyrilliques, etc. seraient lésés dans le sens où la plupart des domaines, y compris légitimes, seraient colorés. Il ne faut pas oublier que chez eux, c'est l'inverse (on utilise le 'o' ASCII pour imiter un 'ο' (omicron))…
[^] # Re: représentation visuelle des noms de domaine
Posté par Arthur Accroc . Évalué à 4.
Alors une couleur de fond différente par alphabet (latin, cyrillique, grec…).
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
[^] # Re: représentation visuelle des noms de domaine
Posté par Octabrain . Évalué à 3.
Ça ne va pas, ton image générée n'est pas mémorisable (il y aurait trop d'images à retenir, trop de domaines).
Un avatar aléatoire, ça va bien par contre car il s'inscrit dans une discussion entre plusieurs avatars, du coup quand tu lis la conversation, tu vois que "rectangle bleu répond à cercle rouge, puis cercle rouge répond à rectangle bleu", tu les as tous sous les yeux.
Pour un site, tu ne peux pas comparer l'image générée pour le domaine normal et le domaine légèrement modifié.
[^] # Re: représentation visuelle des noms de domaine
Posté par Kerro . Évalué à 3.
Et surtout ça ne fonctionne que pour les domaines que tu visites régulièrement.
Première visite, c'est mort puisque tu n'as jamais vu à quoi ça ressemble.
Une visite tous les mois, je doute qu'on s'en souvienne (ou alors peu de gens).
# correction
Posté par Laurent J (site web personnel, Mastodon) . Évalué à 10.
Non, ce ne sont pas les navigateurs qui n'y voient que du feu : ils ne font qu'afficher le nom de domaine et le certificat qui va avec.
C'est l'utilisateur qui n'y voit que du feu. Malheureusement.
Après faudrait que les navigateurs détectent ce genre de tromperies, afin d'en avertir l'utilisateur. Mais là ce n'est pas évident.
Notez qu'il restera une différence si le site d'origine a un certificat validé manuellement (Extended Validated Certificate), puisqu'alors le nom du propriétaire du site apparait à coté de l'URL. Et que pour avoir un EVC, il faut montrer patte blanche (en théorie, il faut fournir de la paperasse pour prouver que l'on possède le nom de domaine). Mais il restera des utilisateurs qui ne feront pas gaffe (surtout si ils ne sont jamais allés sur le vrai site).
[^] # Re: correction
Posté par kna . Évalué à 6.
plus ou moins
La plupart ne font pas gaffe du tout
[^] # Re: correction
Posté par bubar🦥 (Mastodon) . Évalué à 3. Dernière modification le 18 avril 2017 à 18:33.
En théorie oui. En pratique peux tu dire que tu vois la différence entre : аррӏе & apple ? lorsqu'on y prête attention, on remarque la subtile différence, mais sincèrement, au jour le jour : regardes tu si précisement tout les domaines ? Ouvres tu systématiquement tout les certificats pour les regarder de tes yeux ? Tout tes utilisateurs le font aussi ?
Non, bien probablement non.
C'est pourquoi les navigateurs s'en protègent un peu, par exemple avec Chromium & Chrome :
https://www.chromium.org/developers/design-documents/idn-in-google-chrome
Mais ce n'est visiblement pas/plus suffisant. Alors bien que la vérification visuelle soit possible, et bien qu'effectivement la phrase "les navigateurs n'y voient que du feu" est incomplète, il n'en reste pas moins que des contre-mesures sont déjà en place, et que des mises à jour sont attendues.
[^] # Re: correction
Posté par Laurent J (site web personnel, Mastodon) . Évalué à 5. Dernière modification le 19 avril 2017 à 14:41.
Euh… je ne sais pas si tu as bien lu mon commentaire, mais on est d'accord hein…
Il y a juste le fait que l'utilisation de l'expression "navigateur n'y voit que du feu" n'est pas adéquate. Ça ne veut pas trop dire grand chose. Il me semble en effet qu'un navigateur n'est pas un être vivant, il n'a pas d'yeux, il ne voit pas, il se contente de traiter les données (certes, insuffisamment dans le cas présent). Bref, une histoire de français quoi.
# Ça pourrait être pire
Posté par Arthur Accroc . Évalué à 10.
… on pourrait être russe.
Imaginons une banque russe qui aurait un site parfaitement légitime avec une adresse en cyrillique.
Un « hameçonneur » fait un faux site avec un caractère latin remplaçant un caractère cyrillique identique.
Alors le client russe méfiant active l’affichage du Punycode sur son navigateur et doit faire la différence… entre deux chaînes ASCII imbitables !
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.