Icônes SCW
héros bg sans séparateur
Blog

Qu'est-ce qu'un cheval de Troie source et comment s'introduit-il dans votre code source ?

Laura Verheyde
Publié le 23 février 2022
Dernière mise à jour le 6 mars 2026

Au début du mois de novembre, l'université de Cambridge a publié une étude intitulée Trojan-Source. Cette étude s'est intéressée à la manière dont il est possible de dissimuler des portes dérobées dans le code source et les commentaires, en utilisant des caractères de formatage directionnels. Ceux-ci peuvent être utilisés pour créer du code dont la logique est interprétée différemment par le compilateur et par un réviseur de code humain.

Cette vulnérabilité est nouvelle, bien que Unicode ait déjà été utilisé de manière malveillante par le passé, par exemple pour masquer l'extension réelle d'un fichier en inversant l'ordre de la dernière partie du nom du fichier. Des recherches récentes ont révélé que de nombreux compilateurs ignorent les caractères Unicode du code source sans avertissement préalable, tandis que les éditeurs de texte, y compris les éditeurs de code, peuvent réorganiser les lignes contenant des commentaires et du code basé sur ceux-ci. Par conséquent, il est possible que l'éditeur affiche le code et les commentaires différemment et dans un ordre différent de celui dans lequel le compilateur les analysera, voire qu'il échange le code et les commentaires.

Veuillez continuer votre lecture pour obtenir davantage d'informations. Si vous souhaitez vous lancer et tester le piratage simulé de Trojan Source, veuillez accéder à notre page gratuite et à notre mission publique pour en faire l'expérience par vous-même.

Texte bidirectionnel

L'une de ces attaques de Trojan-Source utilise l'algorithme Unicode Bidi (bidirectionnel), qui gère la manière d'assembler du texte avec un ordre d'affichage différent, comme l'anglais (de gauche à droite) et l'arabe (de droite à gauche). Les caractères de format directionnel peuvent être utilisés pour réorganiser le regroupement et afficher l'ordre des caractères.

Le tableau ci-dessus contient certains des personnages supprimés de Bidi liés à l'attaque. Prenons, par exemple,

RLI et PDI

L'abréviation RLI signifie « isoler de droite à gauche ». Elle isolera le texte de son contexte (délimité par PDI, isolation directionnelle pop) et le lira de droite à gauche. Le résultat sera le suivant :

c a d e

Cependant, les compilateurs et les interpréteurs ne traitent généralement pas les caractères de contrôle de format, y compris les annulations Bidi, avant d'analyser le code source. S'ils ignorent simplement les caractères de format directionnel, ils analyseront :

e d a c

Du vin ancien dans des bouteilles neuves ?

Bien entendu, cela n'a rien de nouveau. Par le passé, des caractères de format directionnel étaient insérés dans les noms de fichiers afin de dissimuler leur nature malveillante. Une pièce jointe à un e-mail apparaissant sous le nom « myspecialexe.doc » pourrait sembler tout à fait inoffensive si ce n'était la présence du caractère RLO (annulation de droite à gauche) qui révèle que le nom réel est « myspecialcod.exe ».

L'attaque Trojan Source insère des caractères de format directionnel dans les commentaires et les chaînes présents dans le code source, car ils ne génèrent aucune erreur de syntaxe ou de compilation. Ces caractères de contrôle modifient l'ordre d'affichage de la logique du code, ce qui fait que le compilateur lit quelque chose de complètement différent de ce qu'un humain lirait.

Par exemple, un fichier contenant les octets suivants dans cet ordre :

Texte Unicode bidirectionnel

sera réorganisé de la manière suivante en fonction des caractères de format directionnel

Caractères de formatage directionnels

en faisant en sorte que le code soit représenté de la manière suivante si les caractères de format directionnel ne sont pas explicitement invoqués :

Caractères Unicode bidirectionnels

Le RLO transforme le corset de fermeture en un corset d'ouverture et vice versa dans la dernière ligne. Le résultat de l'exécution de ce code serait : « Vous êtes un administrateur ». La vérification de l'administration était commentée, mais les caractères de contrôle donnent l'impression qu'elle était toujours présente.

(Source : https://github.com/nickboucher/trojan-source/blob/main/C%23/commenting-out.csx)

Comment cela peut-il vous affecter ?

De nombreux langages sont vulnérables à cette attaque : C, C++, C#, JavaScript, Java, Rust, Go et Python, et il en existe probablement d'autres. Cependant, si un développeur expérimenté pourrait être préoccupé par la présence de caractères de formatage directionnel dans le code source, un novice pourrait simplement ignorer ce problème. De plus, l'affichage de ces caractères dépend largement de l'IDE, il n'y a donc aucune garantie qu'ils seront détectés.

Cependant, comment cette vulnérabilité a-t-elle pu s'introduire dans le code source en premier lieu ? Tout d'abord, cela peut se produire lorsque l'on utilise du code source provenant de sources peu fiables, dans lesquelles des contributions de code malveillant sont passées inaperçues. Ensuite, cela peut se produire simplement en copiant-collant du code trouvé sur Internet, ce que la plupart des développeurs ont déjà fait. La plupart des organisations s'appuient sur des composants logiciels provenant de plusieurs fournisseurs. Cela soulève la question de savoir dans quelle mesure nous pouvons avoir pleinement confiance en ce code. Comment pouvons-nous détecter le code source contenant des portes dérobées cachées ?

À qui incombe la responsabilité de ce problème ?

D'une part, les compilateurs et les pipelines de compilation ne devraient pas autoriser les lignes de code source comportant plus d'une direction, à moins qu'une direction ne soit strictement limitée aux chaînes et aux commentaires. Veuillez noter qu'un caractère de format directionnel dans une chaîne ou un commentaire peut, s'il n'apparaît pas, prolonger un changement de direction jusqu'à la fin de la ligne. En général, les éditeurs de code doivent représenter et mettre en évidence explicitement les caractères Unicode suspects, tels que les homoglyphes et les caractères de format directionnel. Depuis novembre, GitHub ajoute désormais un signal et un message d'avertissement à chaque ligne de code contenant du texte Unicode bidirectionnel, bien qu'il ne mette pas en évidence l'emplacement exact de ces caractères dans la ligne. Cela peut encore permettre l'introduction de changements de direction malveillants en même temps que des changements de direction inoffensifs.

Il est essentiel que les développeurs et les réviseurs de code soient sensibilisés à cette question. C'est pourquoi nous avons créé un tutoriel illustrant cette vulnérabilité. Actuellement, ce tutoriel est disponible pour Java, C#, Python, GO et PHP.

Si vous souhaitez en savoir plus, nous vous invitons à essayer notre simulation (missions publiques) de Trojan Source et à consulter la recherche sur les sources troyennes.

Simulation en Java

Simulation en C#

Simulation en PHP

Simulation dans GO

Simulation en Python

Fuente troyana
Fuente troyana
Veuillez consulter la ressource
Veuillez consulter la ressource

Souhaitez-vous en savoir davantage ?

En savoir plus

Secure Code Warrior là pour aider votre organisation à protéger le code tout au long du cycle de vie du développement logiciel et à créer une culture où la cybersécurité est une priorité. Que vous soyez administrateur AppSec, développeur, CISO ou toute autre personne impliquée dans la sécurité, nous pouvons aider votre organisation à réduire les risques associés à un code non sécurisé.

Veuillez réserver une démonstration.
Partager sur :
marques LinkedInSocialLogo x
auteur
Laura Verheyde
Publié le 23 février 2022

Laura Verheyde est développeuse de logiciels à l'adresse Secure Code Warrior . Elle se consacre à la recherche de vulnérabilités et à la création de contenu pour Missions et Coding labs.

Partager sur :
marques LinkedInSocialLogo x
Fuente troyana
Fuente troyana

Au début du mois de novembre, l'université de Cambridge a publié une étude intitulée Trojan-Source. Cette étude s'est intéressée à la manière dont il est possible de dissimuler des portes dérobées dans le code source et les commentaires, en utilisant des caractères de formatage directionnels. Ceux-ci peuvent être utilisés pour créer du code dont la logique est interprétée différemment par le compilateur et par un réviseur de code humain.

Cette vulnérabilité est nouvelle, bien que Unicode ait déjà été utilisé de manière malveillante par le passé, par exemple pour masquer l'extension réelle d'un fichier en inversant l'ordre de la dernière partie du nom du fichier. Des recherches récentes ont révélé que de nombreux compilateurs ignorent les caractères Unicode du code source sans avertissement préalable, tandis que les éditeurs de texte, y compris les éditeurs de code, peuvent réorganiser les lignes contenant des commentaires et du code basé sur ceux-ci. Par conséquent, il est possible que l'éditeur affiche le code et les commentaires différemment et dans un ordre différent de celui dans lequel le compilateur les analysera, voire qu'il échange le code et les commentaires.

Veuillez continuer votre lecture pour obtenir davantage d'informations. Si vous souhaitez vous lancer et tester le piratage simulé de Trojan Source, veuillez accéder à notre page gratuite et à notre mission publique pour en faire l'expérience par vous-même.

Texte bidirectionnel

L'une de ces attaques de Trojan-Source utilise l'algorithme Unicode Bidi (bidirectionnel), qui gère la manière d'assembler du texte avec un ordre d'affichage différent, comme l'anglais (de gauche à droite) et l'arabe (de droite à gauche). Les caractères de format directionnel peuvent être utilisés pour réorganiser le regroupement et afficher l'ordre des caractères.

Le tableau ci-dessus contient certains des personnages supprimés de Bidi liés à l'attaque. Prenons, par exemple,

RLI et PDI

L'abréviation RLI signifie « isoler de droite à gauche ». Elle isolera le texte de son contexte (délimité par PDI, isolation directionnelle pop) et le lira de droite à gauche. Le résultat sera le suivant :

c a d e

Cependant, les compilateurs et les interpréteurs ne traitent généralement pas les caractères de contrôle de format, y compris les annulations Bidi, avant d'analyser le code source. S'ils ignorent simplement les caractères de format directionnel, ils analyseront :

e d a c

Du vin ancien dans des bouteilles neuves ?

Bien entendu, cela n'a rien de nouveau. Par le passé, des caractères de format directionnel étaient insérés dans les noms de fichiers afin de dissimuler leur nature malveillante. Une pièce jointe à un e-mail apparaissant sous le nom « myspecialexe.doc » pourrait sembler tout à fait inoffensive si ce n'était la présence du caractère RLO (annulation de droite à gauche) qui révèle que le nom réel est « myspecialcod.exe ».

L'attaque Trojan Source insère des caractères de format directionnel dans les commentaires et les chaînes présents dans le code source, car ils ne génèrent aucune erreur de syntaxe ou de compilation. Ces caractères de contrôle modifient l'ordre d'affichage de la logique du code, ce qui fait que le compilateur lit quelque chose de complètement différent de ce qu'un humain lirait.

Par exemple, un fichier contenant les octets suivants dans cet ordre :

Texte Unicode bidirectionnel

sera réorganisé de la manière suivante en fonction des caractères de format directionnel

Caractères de formatage directionnels

en faisant en sorte que le code soit représenté de la manière suivante si les caractères de format directionnel ne sont pas explicitement invoqués :

Caractères Unicode bidirectionnels

Le RLO transforme le corset de fermeture en un corset d'ouverture et vice versa dans la dernière ligne. Le résultat de l'exécution de ce code serait : « Vous êtes un administrateur ». La vérification de l'administration était commentée, mais les caractères de contrôle donnent l'impression qu'elle était toujours présente.

(Source : https://github.com/nickboucher/trojan-source/blob/main/C%23/commenting-out.csx)

Comment cela peut-il vous affecter ?

De nombreux langages sont vulnérables à cette attaque : C, C++, C#, JavaScript, Java, Rust, Go et Python, et il en existe probablement d'autres. Cependant, si un développeur expérimenté pourrait être préoccupé par la présence de caractères de formatage directionnel dans le code source, un novice pourrait simplement ignorer ce problème. De plus, l'affichage de ces caractères dépend largement de l'IDE, il n'y a donc aucune garantie qu'ils seront détectés.

Cependant, comment cette vulnérabilité a-t-elle pu s'introduire dans le code source en premier lieu ? Tout d'abord, cela peut se produire lorsque l'on utilise du code source provenant de sources peu fiables, dans lesquelles des contributions de code malveillant sont passées inaperçues. Ensuite, cela peut se produire simplement en copiant-collant du code trouvé sur Internet, ce que la plupart des développeurs ont déjà fait. La plupart des organisations s'appuient sur des composants logiciels provenant de plusieurs fournisseurs. Cela soulève la question de savoir dans quelle mesure nous pouvons avoir pleinement confiance en ce code. Comment pouvons-nous détecter le code source contenant des portes dérobées cachées ?

À qui incombe la responsabilité de ce problème ?

D'une part, les compilateurs et les pipelines de compilation ne devraient pas autoriser les lignes de code source comportant plus d'une direction, à moins qu'une direction ne soit strictement limitée aux chaînes et aux commentaires. Veuillez noter qu'un caractère de format directionnel dans une chaîne ou un commentaire peut, s'il n'apparaît pas, prolonger un changement de direction jusqu'à la fin de la ligne. En général, les éditeurs de code doivent représenter et mettre en évidence explicitement les caractères Unicode suspects, tels que les homoglyphes et les caractères de format directionnel. Depuis novembre, GitHub ajoute désormais un signal et un message d'avertissement à chaque ligne de code contenant du texte Unicode bidirectionnel, bien qu'il ne mette pas en évidence l'emplacement exact de ces caractères dans la ligne. Cela peut encore permettre l'introduction de changements de direction malveillants en même temps que des changements de direction inoffensifs.

Il est essentiel que les développeurs et les réviseurs de code soient sensibilisés à cette question. C'est pourquoi nous avons créé un tutoriel illustrant cette vulnérabilité. Actuellement, ce tutoriel est disponible pour Java, C#, Python, GO et PHP.

Si vous souhaitez en savoir plus, nous vous invitons à essayer notre simulation (missions publiques) de Trojan Source et à consulter la recherche sur les sources troyennes.

Simulation en Java

Simulation en C#

Simulation en PHP

Simulation dans GO

Simulation en Python

Veuillez consulter la ressource
Veuillez consulter la ressource

Veuillez remplir le formulaire suivant pour télécharger le rapport.

Nous souhaiterions obtenir votre autorisation pour vous envoyer des informations sur nos produits ou sur des sujets liés au codage sécurisé. Nous traiterons toujours vos données personnelles avec le plus grand soin et ne les vendrons jamais à d'autres entreprises à des fins de marketing.

Envoyer
icône de réussite scw
icône d'erreur scw
Pour envoyer le formulaire, veuillez activer les cookies « d'analyse ». N'hésitez pas à les désactiver à nouveau une fois que vous avez terminé.
Fuente troyana

Au début du mois de novembre, l'université de Cambridge a publié une étude intitulée Trojan-Source. Cette étude s'est intéressée à la manière dont il est possible de dissimuler des portes dérobées dans le code source et les commentaires, en utilisant des caractères de formatage directionnels. Ceux-ci peuvent être utilisés pour créer du code dont la logique est interprétée différemment par le compilateur et par un réviseur de code humain.

Cette vulnérabilité est nouvelle, bien que Unicode ait déjà été utilisé de manière malveillante par le passé, par exemple pour masquer l'extension réelle d'un fichier en inversant l'ordre de la dernière partie du nom du fichier. Des recherches récentes ont révélé que de nombreux compilateurs ignorent les caractères Unicode du code source sans avertissement préalable, tandis que les éditeurs de texte, y compris les éditeurs de code, peuvent réorganiser les lignes contenant des commentaires et du code basé sur ceux-ci. Par conséquent, il est possible que l'éditeur affiche le code et les commentaires différemment et dans un ordre différent de celui dans lequel le compilateur les analysera, voire qu'il échange le code et les commentaires.

Veuillez continuer votre lecture pour obtenir davantage d'informations. Si vous souhaitez vous lancer et tester le piratage simulé de Trojan Source, veuillez accéder à notre page gratuite et à notre mission publique pour en faire l'expérience par vous-même.

Texte bidirectionnel

L'une de ces attaques de Trojan-Source utilise l'algorithme Unicode Bidi (bidirectionnel), qui gère la manière d'assembler du texte avec un ordre d'affichage différent, comme l'anglais (de gauche à droite) et l'arabe (de droite à gauche). Les caractères de format directionnel peuvent être utilisés pour réorganiser le regroupement et afficher l'ordre des caractères.

Le tableau ci-dessus contient certains des personnages supprimés de Bidi liés à l'attaque. Prenons, par exemple,

RLI et PDI

L'abréviation RLI signifie « isoler de droite à gauche ». Elle isolera le texte de son contexte (délimité par PDI, isolation directionnelle pop) et le lira de droite à gauche. Le résultat sera le suivant :

c a d e

Cependant, les compilateurs et les interpréteurs ne traitent généralement pas les caractères de contrôle de format, y compris les annulations Bidi, avant d'analyser le code source. S'ils ignorent simplement les caractères de format directionnel, ils analyseront :

e d a c

Du vin ancien dans des bouteilles neuves ?

Bien entendu, cela n'a rien de nouveau. Par le passé, des caractères de format directionnel étaient insérés dans les noms de fichiers afin de dissimuler leur nature malveillante. Une pièce jointe à un e-mail apparaissant sous le nom « myspecialexe.doc » pourrait sembler tout à fait inoffensive si ce n'était la présence du caractère RLO (annulation de droite à gauche) qui révèle que le nom réel est « myspecialcod.exe ».

L'attaque Trojan Source insère des caractères de format directionnel dans les commentaires et les chaînes présents dans le code source, car ils ne génèrent aucune erreur de syntaxe ou de compilation. Ces caractères de contrôle modifient l'ordre d'affichage de la logique du code, ce qui fait que le compilateur lit quelque chose de complètement différent de ce qu'un humain lirait.

Par exemple, un fichier contenant les octets suivants dans cet ordre :

Texte Unicode bidirectionnel

sera réorganisé de la manière suivante en fonction des caractères de format directionnel

Caractères de formatage directionnels

en faisant en sorte que le code soit représenté de la manière suivante si les caractères de format directionnel ne sont pas explicitement invoqués :

Caractères Unicode bidirectionnels

Le RLO transforme le corset de fermeture en un corset d'ouverture et vice versa dans la dernière ligne. Le résultat de l'exécution de ce code serait : « Vous êtes un administrateur ». La vérification de l'administration était commentée, mais les caractères de contrôle donnent l'impression qu'elle était toujours présente.

(Source : https://github.com/nickboucher/trojan-source/blob/main/C%23/commenting-out.csx)

Comment cela peut-il vous affecter ?

De nombreux langages sont vulnérables à cette attaque : C, C++, C#, JavaScript, Java, Rust, Go et Python, et il en existe probablement d'autres. Cependant, si un développeur expérimenté pourrait être préoccupé par la présence de caractères de formatage directionnel dans le code source, un novice pourrait simplement ignorer ce problème. De plus, l'affichage de ces caractères dépend largement de l'IDE, il n'y a donc aucune garantie qu'ils seront détectés.

Cependant, comment cette vulnérabilité a-t-elle pu s'introduire dans le code source en premier lieu ? Tout d'abord, cela peut se produire lorsque l'on utilise du code source provenant de sources peu fiables, dans lesquelles des contributions de code malveillant sont passées inaperçues. Ensuite, cela peut se produire simplement en copiant-collant du code trouvé sur Internet, ce que la plupart des développeurs ont déjà fait. La plupart des organisations s'appuient sur des composants logiciels provenant de plusieurs fournisseurs. Cela soulève la question de savoir dans quelle mesure nous pouvons avoir pleinement confiance en ce code. Comment pouvons-nous détecter le code source contenant des portes dérobées cachées ?

À qui incombe la responsabilité de ce problème ?

D'une part, les compilateurs et les pipelines de compilation ne devraient pas autoriser les lignes de code source comportant plus d'une direction, à moins qu'une direction ne soit strictement limitée aux chaînes et aux commentaires. Veuillez noter qu'un caractère de format directionnel dans une chaîne ou un commentaire peut, s'il n'apparaît pas, prolonger un changement de direction jusqu'à la fin de la ligne. En général, les éditeurs de code doivent représenter et mettre en évidence explicitement les caractères Unicode suspects, tels que les homoglyphes et les caractères de format directionnel. Depuis novembre, GitHub ajoute désormais un signal et un message d'avertissement à chaque ligne de code contenant du texte Unicode bidirectionnel, bien qu'il ne mette pas en évidence l'emplacement exact de ces caractères dans la ligne. Cela peut encore permettre l'introduction de changements de direction malveillants en même temps que des changements de direction inoffensifs.

Il est essentiel que les développeurs et les réviseurs de code soient sensibilisés à cette question. C'est pourquoi nous avons créé un tutoriel illustrant cette vulnérabilité. Actuellement, ce tutoriel est disponible pour Java, C#, Python, GO et PHP.

Si vous souhaitez en savoir plus, nous vous invitons à essayer notre simulation (missions publiques) de Trojan Source et à consulter la recherche sur les sources troyennes.

Simulation en Java

Simulation en C#

Simulation en PHP

Simulation dans GO

Simulation en Python

Veuillez consulter le webinaire
Commencer
En savoir plus

Veuillez cliquer sur le lien ci-dessous et télécharger le PDF de cette ressource.

Secure Code Warrior là pour aider votre organisation à protéger le code tout au long du cycle de vie du développement logiciel et à créer une culture où la cybersécurité est une priorité. Que vous soyez administrateur AppSec, développeur, CISO ou toute autre personne impliquée dans la sécurité, nous pouvons aider votre organisation à réduire les risques associés à un code non sécurisé.

Veuillez consulter le rapportVeuillez réserver une démonstration.
Télécharger le PDF
Veuillez consulter la ressource
Partager sur :
marques LinkedInSocialLogo x
Souhaitez-vous en savoir davantage ?

Partager sur :
marques LinkedInSocialLogo x
auteur
Laura Verheyde
Publié le 23 février 2022

Laura Verheyde est développeuse de logiciels à l'adresse Secure Code Warrior . Elle se consacre à la recherche de vulnérabilités et à la création de contenu pour Missions et Coding labs.

Partager sur :
marques LinkedInSocialLogo x

Au début du mois de novembre, l'université de Cambridge a publié une étude intitulée Trojan-Source. Cette étude s'est intéressée à la manière dont il est possible de dissimuler des portes dérobées dans le code source et les commentaires, en utilisant des caractères de formatage directionnels. Ceux-ci peuvent être utilisés pour créer du code dont la logique est interprétée différemment par le compilateur et par un réviseur de code humain.

Cette vulnérabilité est nouvelle, bien que Unicode ait déjà été utilisé de manière malveillante par le passé, par exemple pour masquer l'extension réelle d'un fichier en inversant l'ordre de la dernière partie du nom du fichier. Des recherches récentes ont révélé que de nombreux compilateurs ignorent les caractères Unicode du code source sans avertissement préalable, tandis que les éditeurs de texte, y compris les éditeurs de code, peuvent réorganiser les lignes contenant des commentaires et du code basé sur ceux-ci. Par conséquent, il est possible que l'éditeur affiche le code et les commentaires différemment et dans un ordre différent de celui dans lequel le compilateur les analysera, voire qu'il échange le code et les commentaires.

Veuillez continuer votre lecture pour obtenir davantage d'informations. Si vous souhaitez vous lancer et tester le piratage simulé de Trojan Source, veuillez accéder à notre page gratuite et à notre mission publique pour en faire l'expérience par vous-même.

Texte bidirectionnel

L'une de ces attaques de Trojan-Source utilise l'algorithme Unicode Bidi (bidirectionnel), qui gère la manière d'assembler du texte avec un ordre d'affichage différent, comme l'anglais (de gauche à droite) et l'arabe (de droite à gauche). Les caractères de format directionnel peuvent être utilisés pour réorganiser le regroupement et afficher l'ordre des caractères.

Le tableau ci-dessus contient certains des personnages supprimés de Bidi liés à l'attaque. Prenons, par exemple,

RLI et PDI

L'abréviation RLI signifie « isoler de droite à gauche ». Elle isolera le texte de son contexte (délimité par PDI, isolation directionnelle pop) et le lira de droite à gauche. Le résultat sera le suivant :

c a d e

Cependant, les compilateurs et les interpréteurs ne traitent généralement pas les caractères de contrôle de format, y compris les annulations Bidi, avant d'analyser le code source. S'ils ignorent simplement les caractères de format directionnel, ils analyseront :

e d a c

Du vin ancien dans des bouteilles neuves ?

Bien entendu, cela n'a rien de nouveau. Par le passé, des caractères de format directionnel étaient insérés dans les noms de fichiers afin de dissimuler leur nature malveillante. Une pièce jointe à un e-mail apparaissant sous le nom « myspecialexe.doc » pourrait sembler tout à fait inoffensive si ce n'était la présence du caractère RLO (annulation de droite à gauche) qui révèle que le nom réel est « myspecialcod.exe ».

L'attaque Trojan Source insère des caractères de format directionnel dans les commentaires et les chaînes présents dans le code source, car ils ne génèrent aucune erreur de syntaxe ou de compilation. Ces caractères de contrôle modifient l'ordre d'affichage de la logique du code, ce qui fait que le compilateur lit quelque chose de complètement différent de ce qu'un humain lirait.

Par exemple, un fichier contenant les octets suivants dans cet ordre :

Texte Unicode bidirectionnel

sera réorganisé de la manière suivante en fonction des caractères de format directionnel

Caractères de formatage directionnels

en faisant en sorte que le code soit représenté de la manière suivante si les caractères de format directionnel ne sont pas explicitement invoqués :

Caractères Unicode bidirectionnels

Le RLO transforme le corset de fermeture en un corset d'ouverture et vice versa dans la dernière ligne. Le résultat de l'exécution de ce code serait : « Vous êtes un administrateur ». La vérification de l'administration était commentée, mais les caractères de contrôle donnent l'impression qu'elle était toujours présente.

(Source : https://github.com/nickboucher/trojan-source/blob/main/C%23/commenting-out.csx)

Comment cela peut-il vous affecter ?

De nombreux langages sont vulnérables à cette attaque : C, C++, C#, JavaScript, Java, Rust, Go et Python, et il en existe probablement d'autres. Cependant, si un développeur expérimenté pourrait être préoccupé par la présence de caractères de formatage directionnel dans le code source, un novice pourrait simplement ignorer ce problème. De plus, l'affichage de ces caractères dépend largement de l'IDE, il n'y a donc aucune garantie qu'ils seront détectés.

Cependant, comment cette vulnérabilité a-t-elle pu s'introduire dans le code source en premier lieu ? Tout d'abord, cela peut se produire lorsque l'on utilise du code source provenant de sources peu fiables, dans lesquelles des contributions de code malveillant sont passées inaperçues. Ensuite, cela peut se produire simplement en copiant-collant du code trouvé sur Internet, ce que la plupart des développeurs ont déjà fait. La plupart des organisations s'appuient sur des composants logiciels provenant de plusieurs fournisseurs. Cela soulève la question de savoir dans quelle mesure nous pouvons avoir pleinement confiance en ce code. Comment pouvons-nous détecter le code source contenant des portes dérobées cachées ?

À qui incombe la responsabilité de ce problème ?

D'une part, les compilateurs et les pipelines de compilation ne devraient pas autoriser les lignes de code source comportant plus d'une direction, à moins qu'une direction ne soit strictement limitée aux chaînes et aux commentaires. Veuillez noter qu'un caractère de format directionnel dans une chaîne ou un commentaire peut, s'il n'apparaît pas, prolonger un changement de direction jusqu'à la fin de la ligne. En général, les éditeurs de code doivent représenter et mettre en évidence explicitement les caractères Unicode suspects, tels que les homoglyphes et les caractères de format directionnel. Depuis novembre, GitHub ajoute désormais un signal et un message d'avertissement à chaque ligne de code contenant du texte Unicode bidirectionnel, bien qu'il ne mette pas en évidence l'emplacement exact de ces caractères dans la ligne. Cela peut encore permettre l'introduction de changements de direction malveillants en même temps que des changements de direction inoffensifs.

Il est essentiel que les développeurs et les réviseurs de code soient sensibilisés à cette question. C'est pourquoi nous avons créé un tutoriel illustrant cette vulnérabilité. Actuellement, ce tutoriel est disponible pour Java, C#, Python, GO et PHP.

Si vous souhaitez en savoir plus, nous vous invitons à essayer notre simulation (missions publiques) de Trojan Source et à consulter la recherche sur les sources troyennes.

Simulation en Java

Simulation en C#

Simulation en PHP

Simulation dans GO

Simulation en Python

Table des matières

Télécharger le PDF
Veuillez consulter la ressource
Souhaitez-vous en savoir davantage ?

En savoir plus

Secure Code Warrior là pour aider votre organisation à protéger le code tout au long du cycle de vie du développement logiciel et à créer une culture où la cybersécurité est une priorité. Que vous soyez administrateur AppSec, développeur, CISO ou toute autre personne impliquée dans la sécurité, nous pouvons aider votre organisation à réduire les risques associés à un code non sécurisé.

Veuillez réserver une démonstration.Télécharger
Partager sur :
marques LinkedInSocialLogo x
Centre de ressources

Ressources pour débuter

Plus de publications
Centre de ressources

Ressources pour débuter

Plus de publications