Trojan Source, attaque qui permet d'ajouter des modifications de code invisibles pour le développeur

Il ya quelques jours Des chercheurs de l'université de Cambridge libérés la publication de une technique pour substituer subtilement des codes malveillant dans le code source de l'application.

La méthode d'attaque préparée que Il est déjà répertorié sous CVE-2021-42574 Il porte le nom de Trojan Source et est basé sur la formation d'un texte différent du compilateur/interpréteur et de la personne qui visualise le code.

À propos de Trojan Source

La méthode repose sur l'application de caractères Unicode spéciaux dans les commentaires de code, qui modifient l'ordre d'affichage du texte bidirectionnel. Avec l'aide de ces personnages de contrôle, certaines parties du texte peuvent être affichées de gauche à droite, tandis que d'autres de droite à gauche.

Dans la pratique courante, ces caractères de contrôle peuvent être utilisés, par exemple, pour insérer des chaînes hébraïques ou arabes dans un fichier de code. Cependant, si vous utilisez ces caractères pour combiner des lignes avec différentes directions de texte sur la même ligne, les passages de texte affichés de droite à gauche peuvent chevaucher le texte normal existant affiché de gauche à droite.

Avec cette méthode, une construction malveillante peut être ajoutée au code, mais rendez ensuite le texte avec cette construction invisible lors de la visualisation du code, en ajoutant les caractères affichés de droite à gauche dans le commentaire suivant ou à l'intérieur du littéral, ce qui entraînera un résultat de caractères complètement différents superposés à l'insert malveillant. Un tel code sera toujours sémantiquement correct, mais il sera interprété et affiché différemment.

Nous avons découvert des moyens de manipuler l'encodage des fichiers de code source afin que les utilisateurs humains et les compilateurs voient une logique différente. Une méthode particulièrement pernicieuse utilise des caractères de substitution de directionnalité Unicode pour afficher le code sous forme d'anagramme de sa véritable logique. Nous avons vérifié que cette attaque fonctionne contre C, C ++, C #, JavaScript, Java, Rust, Go et Python, et nous pensons qu'elle fonctionnera contre la plupart des autres langages modernes.

Lors de l'examen du code, le développeur sera confronté à l'ordre visuel des personnages et verra un commentaire suspect dans un éditeur texte, interface web ou IDE, mais le compilateur et l'interpréteur utiliseront l'ordre logique des caractères et géreront le code malveillant tel quel, quel que soit le texte bidirectionnel dans le commentaire. Plusieurs éditeurs de code populaires (VS Code, Emacs, Atom), ainsi que les interfaces de visualisation du code dans les référentiels (GitHub, Gitlab, BitBucket et tous les produits Atlassian) sont concernés.

Il existe plusieurs manières d'utiliser la méthode pour implémenter des actions malveillantes : ajouter une expression "retour" masquée, ce qui entraîne l'arrêt prématuré de l'exécution de la fonction ; la conclusion dans le commentaire d'expressions qui sont normalement considérées comme des constructions valides (par exemple, pour désactiver des vérifications importantes) ; affectation d'autres valeurs de chaîne conduisant à des échecs de validation de chaîne.

En outre, une autre option d'attaque a été proposée (CVE-2021-42694), qui implique l'utilisation d'homoglyphes, symboles d'apparence similaire, mais de signification différente et ayant des codes Unicode différents. Ces caractères peuvent être utilisés dans certaines langues dans des noms de fonctions et de variables pour tromper les développeurs. Par exemple, vous pouvez définir deux fonctions avec des noms indiscernables qui effectuent des actions différentes. Sans analyse détaillée, vous ne pouvez pas comprendre immédiatement laquelle de ces deux fonctions est appelée à un endroit particulier.

Par mesure de protection, il est recommandé de l'implémenter dans des compilateurs, des interpréteurs et des outils d'assemblage prenant en charge les caractères Unicode, affichant une erreur ou un avertissement s'il y a des caractères de contrôle non appariés dans les commentaires, les littéraux de chaîne ou les identificateurs qui changent la direction de sortie. Ces caractères doivent également être explicitement interdits dans les spécifications du langage de programmation et doivent être pris en compte dans les éditeurs de code et les interfaces pour travailler avec les référentiels.

En plus que les vulnérabilités ont déjà commencé à être corrigées préparé pour GCC, LLVM / Clang, Rust, Go, Python et binutils. GitHub, Bitbucket et Jira sont également déjà en train de préparer une solution avec GitLab.

Enfin Si vous souhaitez en savoir plus, vous pouvez consulter les détails dans le lien suivant.


Le contenu de l'article adhère à nos principes de éthique éditoriale. Pour signaler une erreur, cliquez sur c'est par ici !.

Soyez le premier à commenter

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.

*

*

  1. Responsable des données : AB Internet Networks 2008 SL
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.