Translated message

A translation of this page exists in English.

RHSB-2021-007 Attaques «Trojan Source» (CVE-2021-42574,CVE-2021-42694)

Public Date: November 1, 2021, 12:00 am
Updated -
Ongoing Status
Moderate Impact

Red Hat est au fait d'un nouveau type de scénario d'attaque concernant les environnements de développement où le texte affiché à l'utilisateur final ne correspond pas à ce qui est exécuté. Ces vulnérabilités ont reçu les noms suivants CVE-2021-42574 et CVE-2021-42694. Les deux vulnérabilités ont un indice de gravité jugé Modéré.

Ces problèmes ne sont pas des vulnérabilités inhérentes aux produits Red Hat et ont été qualifiés d'attaques «Trojan Source». Ces vulnérabilités sont dues à la manière dont les standards Unicode sont implémentés dans le contexte des environnements de développement, qui ont des exigences particulières en matière de rendu du texte. 

Les mises à jour de paquet publiées par Red Hat servent de solution de contournement possible pour atténuer ce problème. Red Hat fournit un exemple de script pour détecter ces problèmes dans vos propres environnements de développement. En outre, Red Hat travaille avec des chercheurs et des communautés en amont pour résoudre ces problèmes dans divers outils de développement.

Les systèmes de codage de texte doivent prendre en charge les langues de gauche à droite et de droite à gauche. Lorsque l'on mélange des écritures linguistiques dans des ordres d'affichage différents, l'algorithme bidirectionnel (BiDi) d'Unicode offre un moyen d’y parvenir. Cependant, ceci peut porter à confusion si utilisé dans le code source. Ce qui est rendu et affiché pour un analyste humain peut être ambigu et facilement confondu avec un code non-BiDi d'apparence similaire, qui s'exécute différemment.

Par exemple, un attaquant pourrait exploiter cet aspect pour tromper un analyste humain en créant un correctif malveillant contenant des caractères BiDi bien placés. Le traitement et le rendu spéciaux de ces caractères peuvent alors être utilisés pour tenter de cacher à l'analyste un comportement inattendu et potentiellement dangereux. 

Ce type d'attaque pourrait constituer une menace pour les dépôts de code et les pipelines de génération de fichiers (build pipelines). Aucun défaut connexe n'a été trouvé dans les outils de développement couramment utilisés (compilateurs, éditeurs, gestion du code source). Red Hat travaille avec les communautés en amont pour ajouter des diagnostics appropriés dans les outils de développement couramment utilisés afin d'identifier les séquences BiDi problématiques. 

Un problème connexe se pose avec les homoglyphes, qui sont des glyphes (un symbole élémentaire dans un ensemble convenu de symboles, destiné à représenter un caractère lisible à des fins d'écriture) qui semblent identiques ou similaires les uns aux autres. Les homoglyphes peuvent également être utilisés pour modifier le code source de manière invisible et réaliser des attaques ciblées.

CVE-2021-42574

Une vulnérabilité a été découverte dans la manière dont les normes Unicode sont implémentées dans le contexte des environnements de développement, qui ont des exigences spécifiques pour le rendu du texte. Un attaquant pourrait exploiter cette situation pour tromper un analyste humain, en créant un correcteur malveillant contenant des caractères BiDi bien placés. Le traitement et le rendu spéciaux de ces caractères peuvent alors être utilisés pour tenter de cacher à l'analyste un comportement inattendu et potentiellement dangereux.

Les caractères de formatage directionnels ('BiDi') d'Unicode sont des caractères invisibles qui changent l'ordre d'affichage d'un ou plusieurs caractères. Les dérogations BiDi entraînent l'affichage des caractères dans un ordre différent de celui dans lequel ils ont été écrits.

La plupart des langages de programmation ne tolèrent pas les caractères de contrôle arbitraires dans le code source, car ils violent la syntaxe du langage et provoquent des erreurs de syntaxe. Certaines langues excluent également l'utilisation de certains caractères spéciaux dans les noms de variables. Cependant, les caractères BiDi peuvent être injectés dans les commentaires et certaines chaînes de caractères dans la plupart des langues. 

Les caractères BiDi persistent à travers les opérations de copier-coller sur la plupart des systèmes modernes. L'introduction de vulnérabilités par le copier-coller de code provenant de sources non fiables est une préoccupation constante. L'examen manuel peut ne pas suffire si le changement de logique est suffisamment subtil pour ne pas être détecté. 

CVE-2021-42694

Une vulnérabilité a été découverte dans la manière dont les normes Unicode sont implémentées dans le contexte des environnements de développement, qui ont des exigences spécifiques pour le rendu du texte. Les homoglyphes sont des caractères Unicode différents qui, à l'œil nu, se ressemblent.  Un attaquant pourrait utiliser les homoglyphes pour tromper un analyste humain en créant un patch malveillant contenant des fonctions qui ressemblent aux fonctions de bibliothèques standard, telles que «print», mais qui remplacent un caractère par un homoglyphe. Cette fonction peut ensuite être définie dans une dépendance amont pour lancer des attaques liées au code source.

Il ne s'agit pas d'une vulnérabilité inhérente aux produits Red Hat.

CVE-2021-42694 est connu depuis un certain temps et présente un vecteur d'attaque moins sérieux que CVE-2021-42574. Divers projets en amont sont connus pour tenter de résoudre la question des homoglyphes depuis plusieurs années et sont actuellement en cours de réalisation.

À l'heure actuelle, Red Hat effectue une analyse interne de ses produits et services et, jusqu'à présent, nous n'avons pas détecté de caractères Unicode malveillants dans le code pour cette catégorie de vulnérabilités. Red Hat met également en place des contrôles de détection dans notre chaîne d'approvisionnement pour nos produits qui sont analysés pour détecter des séquences Unicode non naturelles dans le code. Red Hat travaille avec les communautés en amont pour ajouter des diagnostics appropriés dans les outils de développement couramment utilisés afin d'identifier les séquences BiDi problématiques. 

Remarque : il s'agit d'un défaut dans la manière dont les normes Unicode sont implémentées dans le contexte des environnements de développement, qui ont des exigences particulières en matière de rendu du texte. Il ne s'agit pas d'une vulnérabilité inhérente aux produits Red Hat. Les mises à jour de paquet publiées par Red Hat servent de solution de contournement possible pour atténuer ce problème.

Un script de diagnostic a été développé pour déterminer si votre code contient des caractères BiDi. Pour vérifier la légitimité du script, vous pouvez télécharger la signature GPG détachée également. Les instructions sur la manière d'utiliser la signature GPG pour la vérification sont disponibles sur le Portail client.

Remarque : Red Hat fournit ce script tel quel à ses clients et à la communauté. Aucune disposition de support n'est prévue pour son utilisation ou pour l'évaluation des résultats. Reportez-vous au fichier README pour l'utilisation du script. Il est laissé à la discrétion du client d'analyser l'utilisation dudit caractère BiDi et de prendre une décision quant à une éventuelle utilisation malveillante. Le livre blanc technique publié par les chercheurs fournit des détails approfondis sur les caractères BiDi.

Méthodes alternatives pour détecter les caractères BiDi dans le code source :

Certains éditeurs de texte fournissent des indications sur la présence de caractères BiDi dans le code source en combinant la coloration syntaxique, l'inversion du sens de défilement du texte et l'impression des caractères de contrôle, en particulier ceux qui inversent le sens dans un seul mot. La commande cat fournit les indicateurs -A et -v pour visualiser les caractères non imprimables, révélant ainsi la présence des séquences de contrôle BiDi.

Red Hat remercie Nicholas Boucher et Ross Anderson de l'Université de Cambridge pour avoir signalé ce problème de manière responsable.

Q : Cette vulnérabilité affecte-t-elle les produits Red Hat ?

Non, ce n'est pas une vulnérabilité inhérente aux produits Red Hat. Il s'agit d'une vulnérabilité dans la manière dont les normes Unicode sont implémentées dans le contexte des environnements de développement ayant des exigences particulières en matière de rendu du texte.

Q : Cette vulnérabilité affecte-t-elle la chaîne d'approvisionnement de Red Hat ?

Red Hat met en place des contrôles de détection continus dans la chaîne d'approvisionnement de nos produits afin de rechercher les séquences Unicode non naturelles dans le code.

Q : Comment Red Hat prévoit-il de résoudre ce problème ?

Il ne s'agit pas d'une vulnérabilité inhérente aux produits Red Hat, mais plutôt d'un problème de conception qui peut être détourné pour introduire du code malveillant dans le code en amont. Red Hat travaille actuellement avec divers projets en amont pour concevoir et implémenter des capacités de diagnostic et d'audit dans différents composants, ce qui va permettre d'atténuer le problème.

Q : J'ai une ancienne version de Red Hat Enterprise Linux (6 ou antérieure), comment puis-je analyser mon code pour ce problème ?

R : Utilisez la ligne de commande bash suivante. Il n'y a rien d’aussi puissant que le script joint à ce bulletin mais il possède des capacités de base :

 $grep -r $'[\u061C\u200E\u200F\u202A\u202B\u202C\u202D\u202E\u2066\u2067\u2068\u2069]' /path/to/source

Si vous voyez une sortie, alors vous devez vérifier votre code.

https://trojansource.codes/ 

https://www.lightbluetouchpaper.org/2021/11/01/trojan-source-invisible-vulnerabilities/ 

https://www.unicode.org/reports/tr36/#Canonical_Represenation 

https://www.unicode.org/reports/tr36/#Bidirectional_Text_Spoofing 

https://www.unicode.org/reports/tr39/