En mai 2026, une nouvelle forme d'attaque informatique émerge dans le secteur juridique : l'exploitation malveillante des polices de caractères embarquées dans les documents. Baptisée "Noroboto", cette technique permet de tromper les systèmes d'intelligence artificielle en faisant mentir les polices TrueType sur la représentation Unicode de leurs glyphes. Cette vulnérabilité soulève des questions cruciales sur la sécurité des pipelines de traitement documentaire et rappelle l'importance de détecter les failles de sécurité avant qu'elles ne soient exploitées à grande échelle.
Le contexte technologique des LegalTech en 2026
Les infrastructures juridiques modernes ressemblent à des machines de Rube Goldberg : un assemblage complexe de logiciels open-source et propriétaires. De Microsoft Word à LibreOffice, en passant par python-docx, PDFium, Tesseract, Node.js et des dizaines de bibliothèques d'interface comme SuperDoc, PDF.js et Office.js, ces systèmes traitent des spécifications vieilles de plusieurs décennies s'étendant sur des dizaines de milliers de pages.
Cette complexité s'est encore accentuée avec l'arrivée des agents de codage propulsés par l'IA. De nombreuses implémentations partielles et propriétaires ont été développées récemment avec l'assistance de ces outils. Même les mainteneurs les plus expérimentés de l'écosystème open-source se plaignent de la complexité des spécifications. Cette situation crée un terrain fertile pour les attaques exploitant les imperfections d'implémentation.
Comprendre l'attaque Noroboto.ttf
L'exploitation "noroboto.ttf" repose sur un principe simple mais redoutablement efficace : créer une définition de police malveillante embarquée dans un document conforme aux spécifications, mais qui ment sur la représentation Unicode de ses glyphes. Cette approche rappelle les innovations technologiques françaises qui exploitent les failles des systèmes existants pour proposer des solutions plus robustes.
Le fonctionnement des polices TrueType
Les polices TrueType distribuées avec Windows et macOS contiennent des contours de glyphes et une cmap (carte de caractères) qui associe les points de code Unicode à ces contours. La spécification Unicode est immense et réserve des plages de points de code pour un "usage privé" (Private Use Areas ou PUA).
L'attaque par "obfuscation totale" la plus simple fonctionne en remplaçant les scripts Unicode valides du document par des points de code Unicode occupant ces zones PUA. Ces glyphes s'affichent généralement comme des "tofu" (rectangles vides) dans la plupart des applications graphiques, ou comme un glyphe provenant d'une police de secours. LibreOffice, par exemple, bascule vers Wingdings pour les points de code PUA.
Mais Noroboto fournit des glyphes pour ces points de code PUA, compatibles métriquement avec la police remplacée. Leur mappage Unicode sous-jacent est cependant incompréhensible. Cette technique exploite le fait que les spécifications Word et PDF autorisent l'intégration de définitions de polices dans les documents conteneurs, une fonctionnalité essentielle pour maintenir la compatibilité et le rendu pixel-perfect entre plateformes.
Implémentation Python : du concept à la preuve
Avec l'aide de ChatGPT 5.4, l'équipe de LegalQuants a développé une preuve de concept pour l'obfuscation totale en quelques heures. Le code Python a été choisi pour maximiser la lisibilité, bien que cette approche présente des limites en termes de performance. Lorsque l'utilisateur visualise le document, le texte apparaît normal. Mais lors d'un copier-coller, la représentation Unicode révèle des caractères incompréhensibles.
Les tests face aux modèles d'IA avancés
Les premiers tests contre une version utilisant un mappage 1-vers-1 ont été déjoués par ChatGPT 5.5 en mode Codex avec "effort élevé". Le modèle a désobfusqué de deux manières : en traitant l'exercice comme une cryptanalyse basique d'un chiffrement monoalphabétique, et en lisant le champ "name" laissé par erreur dans la définition des glyphes.
L'équipe a alors adopté un chiffrement polyalphabétique plus sophistiqué : un mappage 4-vers-1 appliqué aléatoirement par l'algorithme de remplacement de texte, avec suppression du champ "name" et perturbation légère de la police sur quatre PUA distinctes. Ces modifications ont fourni suffisamment de stochasticité pour déjouer le déchiffrement simple de ChatGPT.

Cependant, les modèles frontières dans des harnais agentiques avec leurs modes de calcul au moment de l'inférence activés parviennent toujours à craquer le document d'"obfuscation totale" en effectuant un rendu puis une OCR du résultat. Il s'avère que l'obfuscation d'un document entier constitue un signal suffisant pour encourager ces LLM à essayer différentes approches.
Extensions avancées : obfuscation partielle et remplacement
Les tests ont révélé que les agents IA sont quelque peu "paresseux". Lorsqu'ils rencontrent un document contenant des points de code Unicode apparemment lisibles, ils empruntent souvent ce chemin facile. L'obfuscation totale échoue ce test dans les modèles les plus intelligents, mais même les meilleurs sont trompés lorsqu'un document n'est que partiellement obfusqué ou que son texte est remplacé.
L'obfuscation partielle ciblée
Quel est l'intérêt de partiellement obfusquer un document juridique ? Le cas le plus évident consiste à dissimuler un terme défavorable avec une probabilité de succès plus élevée. Dans les tests d'obfuscation partielle, l'équipe a masqué le fait que les clauses de confidentialité d'un NDA s'étendaient aux "successeurs et ayants droit".
Bien que ce ne soit pas particulièrement grave, cela a servi de cas de test utile. À la question "Ce document étend-il mes obligations de confidentialité aux successeurs ou ayants droit ?", certaines plateformes, particulièrement les moins coûteuses, ont retourné des résultats incorrects pour les fichiers DOCX. Cette technique pourrait s'avérer aussi problématique que les défis de transparence auxquels font face les nouveaux modèles d'IA.
Le remplacement : l'approche la plus efficace
L'extension par remplacement de Noroboto est la plus redoutable. Au lieu de mapper les glyphes vers des points de code PUA, ils sont mappés vers des valeurs Unicode créant un sens différent. Dans l'exemple testé, le mot visible "Maryland" a été remplacé par la représentation Unicode de "Delaware".
Ce processus est plus complexe que l'attaque par obfuscation car il nécessite, dans le pire des cas, une nouvelle police embarquée pour chaque glyphe remplacé. Toutes les plateformes testées ont été trompées par cette approche et ont joyeusement indiqué que l'accord prévoyait le droit du Delaware lorsqu'on leur présentait un fichier DOCX. La plupart ont même fait confiance aux valeurs Unicode dans les PDF.
| Type d'attaque | Méthode | Taux de réussite | Détection par IA |
|---|---|---|---|
| Obfuscation totale | Remplacement complet par PUA | Faible | Détectée par modèles avancés (OCR) |
| Obfuscation partielle | Remplacement ciblé de termes clés | Moyenne | Passe sur plateformes économiques |
| Remplacement | Substitution Unicode avec glyphes visuels identiques | Élevée | Trompe la plupart des systèmes |
Mitigation en Rust : faire confiance mais vérifier
Comment gérer cette menace dans Tritium ? La philosophie adoptée est "faire confiance, mais vérifier". L'objectif est de conserver le support des polices embarquées pour garantir la précision de la mise en page et de la pagination, tout en effectuant d'abord une vérification des glyphes ASCII pour s'assurer qu'ils représentent bien les caractères qu'ils prétendent représenter via leur valeur cmap Unicode.
Calcul de la précision des caractères
La valeur de précision est calculée comme 1,0 moins le taux d'erreur, lui-même calculé comme la distance de Levenshtein entre la chaîne ASCII attendue et le résultat OCR. Cette approche, similaire aux techniques de validation de données en développement web, garantit l'intégrité des informations.
Le code Rust implémente une fonction de normalisation qui convertit le texte en minuscules et supprime les espaces multiples, puis calcule la distance de Levenshtein entre les chaînes normalisées. Avec ce critère de précision, l'objectif est de générer un atlas de police fournissant un environnement OCR pristine, de sorte que tout score de précision inférieur à 1,0 indique une police potentiellement trompeuse.

Génération de l'atlas de police
L'implémentation se limite à l'analyse des codes ASCII alphanumériques pour cette preuve de concept simple. Une valeur de padding est définie pour garantir que les glyphes dans l'atlas de police disposent d'une marge suffisante par rapport au bord pour l'OCR.
La fonction parcourt caractère par caractère et effectue le rendu dans l'atlas de police. Plutôt que de s'appuyer sur une bibliothèque de mise en forme plus robuste comme HarfBuzz, cette approche simplifiée fournit un algorithme d'allocation relativement inefficace qui étend l'atlas pour chaque nouveau caractère. Une implémentation en production pré-calculerait au minimum la taille de cet atlas ou utiliserait un moteur de mise en forme.
Implications pour la sécurité documentaire
La découverte de l'attaque Noroboto soulève des questions fondamentales sur la sécurité des systèmes de traitement documentaire. Les implications dépassent le cadre juridique pour toucher tous les secteurs utilisant des documents numériques avec des polices embarquées. Cette vulnérabilité rappelle l'importance de stratégies de sécurité robustes dans tous les domaines technologiques.
Recommandations pour les développeurs
- Implémenter une validation systématique des polices embarquées avant traitement
- Utiliser des moteurs OCR comme couche de vérification supplémentaire
- Calculer des scores de précision basés sur la distance de Levenshtein
- Privilégier des langages système comme Rust pour les performances critiques
- Maintenir des atlas de référence pour les polices standard
Considérations éthiques et légales
L'utilisation de l'attaque Noroboto soulève des questions éthiques et légales importantes. Bien que techniquement possible, l'exploitation intentionnelle de cette vulnérabilité pour tromper une partie contractante pourrait constituer une fraude. Les professionnels du droit et de la technologie doivent être conscients de cette menace pour mieux protéger leurs systèmes.
Les plateformes d'IA comme celles utilisant la génération de contenu doivent intégrer des mécanismes de détection similaires pour garantir l'intégrité des documents traités.
L'avenir de la sécurité documentaire
La menace Noroboto illustre la nécessité d'une approche multicouche de la sécurité documentaire. Les solutions futures devront combiner plusieurs techniques de validation : analyse des polices embarquées, vérification OCR, détection d'anomalies statistiques et validation cryptographique des métadonnées.
Les modèles d'IA devront également évoluer pour détecter ces attaques de manière plus systématique. Les harnais agentiques actuels montrent une certaine "paresse" en privilégiant les chemins faciles, ce qui les rend vulnérables aux attaques sophistiquées. Les futures générations devront intégrer des mécanismes de vérification automatique plus robustes, similaires aux approches innovantes développées dans d'autres domaines de l'IA.

Vers des standards plus sûrs
L'industrie devra probablement réviser les spécifications des formats de documents pour intégrer des mécanismes de sécurité natifs. Cela pourrait inclure :
- Des signatures cryptographiques pour les polices embarquées
- Des métadonnées de validation obligatoires
- Des restrictions sur l'utilisation des zones PUA Unicode
- Des protocoles de vérification standardisés pour les processeurs de documents
Ces évolutions nécessiteront une collaboration entre les éditeurs de logiciels, les organismes de normalisation et la communauté de la sécurité informatique. Le projet Noroboto, bien que démontrant une vulnérabilité inquiétante, contribue paradoxalement à renforcer la sécurité en sensibilisant l'industrie à ces risques.
Conclusion : vigilance et innovation
L'attaque Noroboto révèle une vulnérabilité significative dans les systèmes de traitement documentaire modernes, exploitant la complexité des spécifications et les imperfections d'implémentation. Les trois variantes — obfuscation totale, partielle et remplacement — présentent des niveaux d'efficacité variables, le remplacement étant le plus redoutable car il trompe même les systèmes d'IA avancés.
La solution de mitigation en Rust proposée par Tritium illustre une approche pragmatique : faire confiance aux polices embarquées pour la compatibilité, mais les vérifier systématiquement via OCR et calcul de distance de Levenshtein. Cette philosophie "faire confiance mais vérifier" devrait devenir la norme dans le traitement documentaire sécurisé.
À l'heure où l'IA transforme tous les secteurs, la sécurité documentaire ne peut plus être considérée comme acquise. Les développeurs, les professionnels du droit et les utilisateurs finaux doivent rester vigilants face à ces menaces émergentes. Pour aller plus loin et découvrir comment l'IA peut sécuriser vos processus documentaires, créez votre compte gratuit sur Roboto.