Security
10 min read
3006 views

Attaques de Normalisation Unicode : quand "admin" ≠ "admin" 🔤

IT
InstaTunnel Team
Published by our engineering team
Attaques de Normalisation Unicode : quand "admin" ≠ "admin" 🔤

Comprendre le danger caché dans l’encodage des caractères

Dans le monde numérique, voir ne signifie pas toujours croire. Bien que le nom d’utilisateur “admin” puisse sembler identique à l’écran, il pourrait en réalité être représenté par des caractères Unicode complètement différents—ouvrant la porte à des cyberattaques sophistiquées qui contournent les filtres de sécurité, créent des domaines trompeurs ressemblant à l’original, et permettent la prise de contrôle de comptes. Bienvenue dans l’univers des attaques par normalisation Unicode, où la similarité visuelle dissimule une intention malveillante.

Quelles sont les attaques par normalisation Unicode ?

Les attaques par normalisation Unicode exploitent le fait que de nombreux caractères peuvent être représentés de plusieurs façons dans la norme Unicode. Unicode, le système d’encodage universel supportant presque toutes les langues écrites, contient plus de 149 000 caractères. Beaucoup de ces caractères se ressemblent ou sont presque identiques, mais sont assignés à des points de code complètement différents—les valeurs numériques que les ordinateurs utilisent pour identifier les caractères.

Une vulnérabilité récente de sécurité Android, CVE-2024-43093, illustre l’impact réel de ces attaques. Cette faille zero-day, exploitée activement lors d’attaques ciblées, impliquait une normalisation Unicode incorrecte permettant aux attaquants de contourner les filtres de chemins de fichiers conçus pour empêcher l’accès à des répertoires sensibles, menant à une escalade de privilèges locale.

Le problème central : plusieurs représentations

Le problème fondamental réside dans la gestion de l’équivalence des caractères par Unicode. La norme Unicode définit deux types d’équivalence :

Équivalence canonique : Les caractères ayant la même apparence et la même signification lorsqu’ils sont affichés sont considérés comme équivalents sur le plan canonique, même s’ils sont encodés différemment.

Équivalence de compatibilité : Une forme plus faible où les caractères représentent le même caractère abstrait mais peuvent être affichés différemment selon le contexte.

Pour standardiser ces variations, Unicode définit quatre formes de normalisation :

  • NFC (Normalisation Form Canonical Composition) : Compose les caractères en utilisant l’équivalence canonique
  • NFD (Normalisation Form Canonical Decomposition) : Décompose les caractères en utilisant l’équivalence canonique
  • NFKC (Normalisation Form Compatibility Composition) : Compose en utilisant l’équivalence de compatibilité
  • NFKD (Normalisation Form Compatibility Decomposition) : Décompose en utilisant l’équivalence de compatibilité

La vulnérabilité de sécurité apparaît lorsque les applications appliquent des contrôles de sécurité avant la normalisation, ou lorsque différentes parties d’un système normalisent le texte de manière incohérente.

Vecteurs d’attaque dans le monde réel

1. Injection SQL par contournement Unicode

Une des applications les plus dangereuses concerne les attaques d’injection SQL. Le caractère Unicode ‘FULLWIDTH APOSTROPHE’ (U+FF07) se normalise en une apostrophe standard (U+0027) lors de l’utilisation de NFKD ou NFKC. Si une application filtre les apostrophes standard avant la normalisation, les attaquants peuvent injecter la version pleine largeur, qui contourne le filtre mais devient une apostrophe malveillante après normalisation.

Considérez ce scénario d’attaque :

Requête originale : SELECT name, bio from profiles where name like '%chloe%'
Entrée de l’attaquant : chloe%uff07 UNION SELECT username, password from users -- 
Après normalisation : SELECT name, bio from profiles where name like '%chloe' UNION SELECT username, password from users -- %'

L’attaque contourne les filtres d’entrée conçus pour bloquer l’injection SQL en utilisant des caractères Unicode non détectés par le filtre mais qui se transforment en syntaxe SQL dangereuse après normalisation.

2. Exploits de Cross-Site Scripting (XSS)

Des vulnérabilités similaires affectent la prévention XSS. Des caractères comme ‘SMALL LESS-THAN SIGN’ (U+FE64) et ‘FULLWIDTH GREATER-THAN SIGN’ (U+FF1E) peuvent contourner les filtres qui bloquent les délimiteurs HTML standards, mais se normalisent en caractères c et e fonctionnels permettant l’injection JavaScript.

Un attaquant pourrait soumettre :

<img src=x onerror=alert(123)>

Alors que le filtre bloque les balises cimge standard, les équivalents Unicode en pleine largeur passent, pour se transformer en HTML exécutable après normalisation.

3. Traversée de chemin et attaques sur le système de fichiers

En 2025, des chercheurs ont découvert CVE-2025-52488 affectant DNN (anciennement DotNetNuke), un système de gestion de contenu largement utilisé. La vulnérabilité exploitait la normalisation Unicode pour contourner les contrôles de sécurité des chemins de fichiers. Les attaquants ont créé des noms de fichiers utilisant les caractères Unicode U+FF0E (point plein largeur) et U+FF3C (barre oblique inversée pleine largeur), qui passaient la validation initiale mais se normalisaient en points et barres obliques standards.

Cela permettait de créer des chemins UNC comme \\example.com\share.jpg, déclenchant des connexions SMB vers des serveurs contrôlés par l’attaquant, potentiellement en fuite des identifiants NTLM. La vulnérabilité était particulièrement insidieuse car les développeurs de DNN avaient mis en place des protections spécifiques, mais la normalisation après la validation créait une faille.

4. Prise de contrôle de compte via confusion de nom d’utilisateur

La normalisation Unicode peut conduire à des attaques de collision de noms d’utilisateur. Si un système autorise l’enregistrement avec des noms d’utilisateur Unicode mais normalise de manière incohérente lors de différentes opérations (inscription vs connexion), les attaquants peuvent créer des comptes semblant identiques à ceux légitimes.

Des chercheurs en sécurité ont démontré des attaques homographes IDN contre des serveurs SMTP où le remplacement de ‘a’ par ‘á’ (a avec accent aigu) permettait de détourner des liens de réinitialisation de mot de passe destinés à un compte, en les interceptant via une autre identité. En combinant cela avec des techniques de manipulation des réponses, cela aboutissait à une prise de contrôle complète.

Attaques homographes IDN : la tromperie par nom de domaine

Une des manifestations les plus visibles des attaques Unicode concerne les noms de domaine internationalisés (IDN). Les attaques homographes IDN exploitent le fait que de nombreux caractères de différents scripts se ressemblent. Par exemple, les alphabets cyrillique, grec et latin ont chacun une lettre ‘o’ qui semble identique mais représente des sons différents.

Mécanismes de spoofing de domaine

Le premier rapport de ces attaques date de décembre 2001, par les chercheurs Evgeniy Gabrilovich et Alex Gontmakher du Technion, qui ont réussi à enregistrer une variante de microsoft.com incorporant des caractères cyrilliques. Le problème a été largement médiatisé en février 2005 quand le chercheur en sécurité 3ric Johanson a démontré l’exploit lors de la conférence Shmoocon.

Des combinaisons de caractères particulièrement dangereuses existent dans l’alphabet cyrillique. Si un domaine cible comporte des lettres “ј ѕ і а е о р с у х s” (avec ’s’ de l’alphabet macédonien), les attaquants peuvent enregistrer un domaine totalement indiscernable de l’original latin. Par exemple, оорѕ.com ressemble à oops.com mais utilise des caractères Unicode totalement différents.

Défenses et limitations des navigateurs

Les navigateurs modernes ont mis en place l’affichage Punycode—une méthode de représentation des caractères Unicode en chaînes ASCII. Lorsqu’un IDN potentiellement dangereux est détecté, ils affichent la version Punycode (ex : xn--n1aag8f.com) au lieu de la représentation Unicode. Cependant, ces protections sont incohérentes.

En 2017, plusieurs navigateurs comme Chrome, Firefox, et Opera ont affiché normalement des IDN composés uniquement de caractères cyrilliques sans conversion en Punycode, permettant des attaques de spoofing. Chrome a corrigé cela dans la version 59 avec des restrictions renforcées sur IDN.

Une recherche de Bitdefender a révélé que les applications Microsoft Office—Outlook, Word, Excel, OneNote, PowerPoint—étaient particulièrement vulnérables aux attaques homographes IDN, toutes versions confondues affichant des noms de domaine internationaux au lieu de leurs vrais équivalents ASCII.

La prévalence des attaques IDN

Une analyse du trafic DNS d’Akamai a révélé l’ampleur inquiétante des attaques homographes. Sur une période de 32 jours, 6 670 IDN homographes ont été réellement consultés en DNS, avec une moyenne de 67 nouveaux domaines détectés chaque jour. Plus alarmant, 29 071 appareils ont accédé à au moins un IDN homographe durant cette période, avec plus de 850 appareils par jour pour la première fois.

Menaces émergentes : vulnérabilités IA et LLM

Des recherches récentes ont identifié que les attaques basées sur Unicode représentent une menace croissante pour les systèmes d’intelligence artificielle, notamment les grands modèles de langage (LLMs). Les attaquants utilisent emojis, caractères à largeur zéro, substitutions homoglyphes, et marques de combinaison pour obfusquer des entrées malveillantes, contournant la modération de contenu alimentée par IA et les systèmes de validation.

La vulnérabilité s’étend aux émulateurs de terminal traitant les sorties LLM. Lorsqu’un LLM génère des codes d’échappement ANSI via manipulation Unicode, les attaquants peuvent prendre le contrôle des terminaux, manipuler l’affichage visuel, insérer du texte caché, et même accéder au presse-papiers.

La Jailbreak Emoji

Google Cloud a documenté des “Emoji Jailbreaks” où des attaquants exploitent des vulnérabilités dans les algorithmes de tokenisation et la normalisation Unicode pour insérer des prompts adverses dans les LLM. Ces attaques contournent les contrôles de sécurité traditionnels en embrouillant la tokenisation.

Stratégies de détection et de prévention

Pour les développeurs

1. Normaliser tôt, valider de manière cohérente

La défense la plus cruciale consiste à normaliser toute entrée utilisateur immédiatement après réception, avant toute validation ou filtrage de sécurité. Cela évite la vulnérabilité “valider-puis-normaliser” qui permet la plupart des attaques Unicode.

# Approche correcte
user_input = normalize_unicode(user_input)  # Normaliser en premier
if is_valid(user_input):  # Puis valider
    process(user_input)

2. Utiliser une liste blanche stricte de caractères

Au lieu de blacklister les caractères dangereux, autoriser uniquement les caractères attendus pour chaque champ. Si un champ doit contenir uniquement des lettres ASCII, rejeter tous les caractères Unicode.

3. Mettre en œuvre plusieurs couches de validation

Valider les entrées à plusieurs étapes du traitement, surtout après toute transformation ou normalisation. Le principe est que les contrôles de sécurité doivent être effectués après normalisation, pas avant.

4. Connaître les particularités des frameworks

Lorsqu’on travaille avec .NET sur Windows, les opérations sur le système de fichiers présentent des risques inhérents. Des fonctions comme File.Exists, System.Net.HttpRequest, et System.Net.WebClient peuvent déclencher des connexions SMB si des chemins contrôlés par un attaquant sont fournis, potentiellement en fuite des identifiants NTLM. Les développeurs doivent auditer soigneusement leur code pour ces points.

5. Surveiller les motifs suspects

Mettre en place une journalisation pour détecter des caractères Unicode inhabituels dans les entrées, notamment dans les champs censés contenir uniquement du texte ASCII. Signaler et examiner les soumissions contenant : - Caractères en pleine largeur - Marques diacritiques combinées - Caractères à largeur zéro - Contenu en scripts mixtes

Pour les organisations

1. Enregistrement proactif de domaines

Les organisations devraient enregistrer de manière proactive des domaines homographes potentiels pouvant usurper leur marque. Étant donné que les IDN sont limités à un ensemble de caractères, les combinaisons sont finies et prévisibles. Peu d’entreprises mettent en œuvre cette stratégie défensive actuellement.

2. Filtrage email et web

Déployer des solutions de filtrage email qui détectent et mettent en quarantaine les messages contenant des IDN homographes ou des motifs Unicode suspects. Configurer les clients email pour afficher les versions Punycode des IDN.

3. Sensibilisation des utilisateurs

Former les employés à vérifier les URL en regardant la barre d’adresse du navigateur avant d’entrer des identifiants. En 2025, avec un coût moyen de phishing de 4,88 millions de dollars par incident et 10,22 millions aux États-Unis, et une augmentation de 1 265 % des attaques de phishing pilotées par IA, le spoofing par homographie constitue une menace critique.

4. Authentification multi-facteurs

Mettre en place une MFA robuste sur tous les systèmes. Même si des attaquants volent des identifiants via du phishing homographe, la MFA constitue une barrière supplémentaire essentielle.

5. Surveillance des certificats

Surveiller les logs de transparence des certificats pour détecter des enregistrements de domaines suspects. Les attaquants obtiennent souvent des certificats TLS valides via des services comme Let’s Encrypt pour leurs domaines homographes, et près de 10 % des domaines homographes utilisent HTTPS, renforçant la confiance des utilisateurs dans des sites malveillants.

Pour les utilisateurs finaux

1. Vérifier soigneusement les URL

Toujours vérifier la barre d’adresse avant d’entrer des informations sensibles. Rechercher : - Caractères inhabituels ou marques diacritiques - Représentations Punycode (commençant par xn--) - Variations mineures dans l’orthographe du domaine

2. Taper manuellement les URL

Lors de l’accès à des sites sensibles comme des portails bancaires, taper l’URL manuellement plutôt que de cliquer sur des liens dans des emails ou messages. Bien que le typosquatting repose sur des erreurs d’utilisateur, les attaques homographes fonctionnent même lorsque les utilisateurs cliquent soigneusement sur des liens légitimes.

3. Utiliser les fonctionnalités de sécurité du navigateur

Activer et configurer la protection anti-phishing intégrée dans les navigateurs modernes. S’assurer que le navigateur est à jour, ce qui inclut une meilleure détection des attaques homographes IDN.

4. Mettre en favoris des sites de confiance

Créer des favoris pour les sites sensibles fréquemment visités. Cela élimine le risque de navigation vers des faux domaines homographes.

Défense avancée : la sanitation Unicode pour les systèmes IA

Le “Black Box Emoji Fix” représente une approche défensive innovante pour les systèmes LLM. Cette méthode intègre une normalisation Unicode complète utilisant NFKC (Normalisation Form Compatibility Composition), une analyse des grappes de caractères, et des techniques de filtrage multilayer pour neutraliser les injections Unicode.

Le processus se déroule en plusieurs étapes : 1. Remplacer les grappes de caractères contenant des caractères Unicode dangereux par des chaînes sûres 2. Supprimer ou remplacer les emojis dans les configurations où ils ne sont pas autorisés 3. Déployer des tokenizers personnalisables pour détecter les attaques d’explosion de tokens 4. Appliquer un mode strict pour un filtrage étendu basé sur l’analyse des catégories Unicode

L’avenir de la sécurité Unicode

Alors que l’internationalisation continue de s’étendre sur Internet, les attaques Unicode évolueront en sophistication. Les défis majeurs à venir incluent :

Cibles IA et Machine Learning : Avec la généralisation des LLM, les techniques d’injection de prompt et de jailbreak basées sur Unicode progresseront.

Vulnérabilités des appareils IoT : Les appareils connectés à Internet avec une puissance de traitement limitée peuvent effectuer une normalisation Unicode incohérente, créant de nouvelles surfaces d’attaque.

Risques dans la chaîne d’approvisionnement : Les attaques homographes ciblant la communication dans la chaîne d’approvisionnement—usurpant des fournisseurs, clients ou partenaires critiques—pourraient permettre des campagnes sophistiquées de compromission d’e-mails.

Caractères à largeur zéro et invisibles : Les attaquants utilisent de plus en plus les joiners à largeur zéro, non-joiners, et autres caractères invisibles pour dissimuler des charges malveillantes à l’œil nu.

Conclusion : vigilance dans la couche visuelle

Les attaques par normalisation Unicode représentent un défi fondamental à l’intersection de l’internationalisation et de la sécurité. La similarité visuelle qui rend Unicode utile pour la communication globale rend également leur utilisation dangereuse pour les systèmes de sécurité basés sur la correspondance et le filtrage des caractères.

Les leçons clés pour se défendre contre ces attaques sont :

  1. Ne jamais faire confiance à l’apparence visuelle—toujours normaliser et valider de manière programmatique
  2. Normaliser avant de valider—les contrôles de sécurité sur une entrée non normalisée sont inefficaces
  3. Supposer l’existence de multiples représentations—pour tout caractère, il peut exister des dizaines d’équivalents Unicode
  4. Superposer les défenses—aucune mitigation unique ne suffit
  5. Rester informé—de nouvelles techniques d’attaque émergent régulièrement avec l’évolution de Unicode

Que vous soyez développeur, professionnel de la sécurité ou utilisateur final, comprendre que “admin” n’est pas toujours “admin” est crucial. Dans l’univers Unicode, ce que vous voyez n’est pas toujours ce que vous obtenez—et cette différence invisible peut ouvrir la voie à de graves brèches de sécurité.

La guerre invisible entre caractères identiques continue de faire rage, cachée à la vue de tous. La seule défense consiste en la conscience, la vigilance, et des contrôles techniques robustes qui regardent au-delà de la surface pour les points de code sous-jacents que les ordinateurs traitent réellement. En cybersécurité, comme dans la vie, les apparences peuvent être trompeuses dangereusement.


Mots-clés : attaques de normalisation Unicode, attaques homographes, spoofing IDN, cybersécurité, injection SQL, attaques XSS, prise de contrôle de compte, phishing, spoofing de domaine, vulnérabilités d’encodage des caractères, sécurité LLM, sécurité Unicode, noms de domaine internationalisés, Punycode, CVE-2025-52488, vol d’identifiants NTLM, attaques de traversée de chemin

Continue from this article into the most relevant product guides and workflows.

Related Topics

#Unicode normalization attacks, Unicode security, Unicode encoding vulnerability, Unicode spoofing, Unicode bypass, Unicode normalization 2025, Unicode phishing, Unicode homoglyphs, Unicode normalization bug, Unicode normalization vulnerability, CVE-2024-43093, CVE-2025-52488, Unicode path traversal, homograph attacks, IDN homograph, domain spoofing, internationalized domain names, IDN spoofing, Punycode phishing, visual spoofing, mixed script domain attack, zero width character attack, invisible Unicode characters, fullwidth characters, combining marks attack, zero width joiner, zero width non joiner, Unicode SQL injection, Unicode XSS, fullwidth apostrophe, Unicode HTML bypass, Unicode account takeover, Unicode username confusion, Unicode login spoofing, AI Unicode jailbreak, LLM Unicode attack, emoji jailbreak, prompt injection Unicode, character encoding exploit, Unicode canonical equivalence, NFKC normalization, NFD normalization, normalization bug exploitation, cross-language spoofing, Unicode normalization bypass, Unicode validation best practices, Unicode sanitizer, Unicode security 2025, IDN phishing campaign, NTLM credential leak Unicode, Unicode normalization defense, Unicode vulnerability mitigation, homoglyph detection, Unicode normalization filter, Unicode confusion attack, Unicode threat AI, Unicode-based prompt injection, Unicode bypass filters, Unicode spoofing prevention

Keep building with InstaTunnel

Read the docs for implementation details or compare plans before you ship.

Share this article

More InstaTunnel Insights

Discover more tutorials, tips, and updates to help you build better with localhost tunneling.

Browse All Articles