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

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

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

Au début du mois de novembre, l'université de Cambridge a publié une étude intitulée Trojan-Source. Cette étude se concentre sur la manière dont des caractères de formatage ciblés peuvent être utilisés pour dissimuler des portes dérobées dans le code source et les commentaires. Ceux-ci peuvent être employés pour écrire du code que le compilateur interprète différemment de la manière dont un examinateur de code humain l'interpréterait.

Cette vulnérabilité est récente, bien que l'Unicode ait déjà été utilisé à des fins malveillantes, par exemple pour masquer l'extension réelle d'un fichier en inversant la direction de la dernière partie du nom du fichier. Des recherches récentes ont montré que de nombreux compilateurs ignorent les caractères Unicode dans le code source sans avertissement, 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 ces caractères.Par conséquent, la manière dont les éditeurs affichent le code et les commentaires peut différer de celle utilisée par les compilateurs pour analyser le code et les commentaires, voire inverser le code et les commentaires.

Veuillez continuer votre lecture pour obtenir plus d'informations. Si vous préférez vous lancer et essayer la simulation de piratage informatique de Trojan Source, nous vous invitons à découvrir notre version gratuite Mission publique pour une expérience pratique.

Texte bidirectionnel

L'une des attaques par cheval de Troie utilise l'algorithme Unicode Bidi (bidirectionnel), qui traite la manière dont les textes ayant des ordres d'affichage différents (par exemple, l'anglais (de gauche à droite) et l'arabe (de droite à gauche)) sont combinés. Les caractères de formatage directionnel peuvent être utilisés pour réorganiser les groupes et l'ordre d'affichage des caractères.

Le tableau ci-dessus contient certains caractères de remplacement Bidi liés aux attaques. Par exemple,

RLI e d o c PDI

L'acronyme RLI signifie « séparation de droite à gauche». Il sépare le texte de son contexte (séparé par PDI, séparation orientée vers le bas) et le lit de droite à gauche. Il en résulte :

c o 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 remplacements bidirectionnels, avant d'analyser le code source. S'ils ignorent simplement les caractères de formatage directionnel, ils analyseront :

e d o c

Du vieux vin dans de nouvelles bouteilles ?

Bien entendu, ce n'est pas une nouveauté. Par le passé, les caractères de formatage orientés étaient insérés dans les noms de fichiers afin de dissimuler leur nature malveillante. Sans RLO, une pièce jointe à un e-mail affichée sous le nom « myspecialexe.doc » pourrait sembler tout à fait innocente (contrôle de droite à gauche), mais les caractères affichés révèlent que son véritable nom est « myspecialcod.exe ».

L'attaque Trojan Source insère des caractères de formatage ciblés dans les commentaires et les chaînes de caractères du code source, car ces caractères ne génèrent aucune erreur syntaxique ou de compilation. Ces caractères de contrôle modifient l'ordre d'affichage de la logique du code, ce qui conduit le compilateur à lire un contenu différent de celui lu par l'utilisateur.

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

Texte Unicode bidirectionnel

Les caractères seront réorganisés selon le format indiqué ci-dessous.

Caractères de formatage directionnels

Si aucun caractère de formatage n'est explicitement spécifié, le code s'affichera comme suit :

Caractères Unicode bidirectionnels

RLO remplace la parenthèse droite par une parenthèse gauche dans la dernière ligne, et inversement. Le résultat de l'exécution de ce code sera : « Vous êtes administrateur ». Le contrôle administrateur est commenté, mais le rôle de contrôle donne l'impression qu'il est toujours présent.

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

Quel impact cela aura-t-il sur vous ?

De nombreux langages sont vulnérables : C, C++, C#, JavaScript, Java, Rust, Go et Python, et probablement d'autres encore. À l'heure actuelle, les développeurs expérimentés peuvent ignorer les caractères de formatage ciblés dans le code source, tandis que les débutants peuvent simplement hausser les épaules sans y prêter attention. De plus, la visualisation de ces caractères dépend fortement de l'IDE, il n'est donc pas garanti qu'ils soient détectés.

Cependant, comment cette vulnérabilité a-t-elle pu s'introduire dans le code source au départ ? Tout d'abord, cela peut se produire lorsque l'on utilise du code source provenant de sources non fiables, sans que les contributions de code malveillant ne soient remarquées.Ensuite, cela peut se produire simplement en copiant-collant du code trouvé sur Internet, ce que la plupart d'entre nous avons déjà fait. La plupart des organisations dépendent de composants logiciels provenant de plusieurs fournisseurs. Cela soulève la question suivante : dans quelle mesure pouvons-nous faire entièrement confiance à ce code et nous y fier ? Comment filtrer le code source contenant des portes dérobées cachées ?

À qui la faute ?

D'une part, les compilateurs et les pipelines de compilation doivent empêcher l'utilisation de lignes de code source multidirectionnelles, sauf si une direction est strictement limitée aux chaînes de caractères et aux commentaires. Veuillez noter que les caractères de formatage directionnel dans les chaînes de caractères ou les commentaires peuvent étendre le changement de direction jusqu'à la fin de la ligne s'ils ne sont pas mis en évidence.En règle générale, les éditeurs de code doivent clairement afficher et mettre en évidence les caractères Unicode suspects, tels que les homoglyphes et les caractères de formatage directionnel. Depuis novembre, GitHub ajoute désormais des avertissements et des messages dans le code contenant du texte Unicode bidirectionnel dans chaque ligne, bien qu'il ne mette pas en évidence l'emplacement de ces caractères dans la ligne. Cela peut encore permettre à des changements de direction malveillants et à des changements de direction bénins de se glisser dans le code.

La sensibilisation des développeurs et des réviseurs de code est essentielle, c'est pourquoi nous avons créé un exercice pour illustrer les vulnérabilités. Actuellement, cet exercice est disponible pour Java, C#, Python, GO et PHP.

Par conséquent, si vous souhaitez en savoir plus, nous vous invitons à essayer notre simulation Trojan Source (mission publique), puis à lire l'étude Trojan Source.

Simulation avec Java

Simulation en C#

Simulation en PHP

Simulation dans GO

Simulation en Python

特洛伊木马来源
特洛伊木马来源
Veuillez consulter les ressources.
Veuillez consulter les ressources.

Souhaitez-vous en savoir davantage ?

En savoir plus

Secure Code Warrior peut aider votre organisation à sécuriser le code tout au long du cycle de vie du développement logiciel et à instaurer une culture qui accorde la priorité à la cybersécurité. Que vous soyez responsable de la sécurité des applications, développeur, directeur de la sécurité de l'information ou tout autre professionnel concerné par la sécurité, nous pouvons aider votre organisation à réduire les risques liés au 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
特洛伊木马来源
特洛伊木马来源

Au début du mois de novembre, l'université de Cambridge a publié une étude intitulée Trojan-Source. Cette étude se concentre sur la manière dont des caractères de formatage ciblés peuvent être utilisés pour dissimuler des portes dérobées dans le code source et les commentaires. Ceux-ci peuvent être employés pour écrire du code que le compilateur interprète différemment de la manière dont un examinateur de code humain l'interpréterait.

Cette vulnérabilité est récente, bien que l'Unicode ait déjà été utilisé à des fins malveillantes, par exemple pour masquer l'extension réelle d'un fichier en inversant la direction de la dernière partie du nom du fichier. Des recherches récentes ont montré que de nombreux compilateurs ignorent les caractères Unicode dans le code source sans avertissement, 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 ces caractères.Par conséquent, la manière dont les éditeurs affichent le code et les commentaires peut différer de celle utilisée par les compilateurs pour analyser le code et les commentaires, voire inverser le code et les commentaires.

Veuillez continuer votre lecture pour obtenir plus d'informations. Si vous préférez vous lancer et essayer la simulation de piratage informatique de Trojan Source, nous vous invitons à découvrir notre version gratuite Mission publique pour une expérience pratique.

Texte bidirectionnel

L'une des attaques par cheval de Troie utilise l'algorithme Unicode Bidi (bidirectionnel), qui traite la manière dont les textes ayant des ordres d'affichage différents (par exemple, l'anglais (de gauche à droite) et l'arabe (de droite à gauche)) sont combinés. Les caractères de formatage directionnel peuvent être utilisés pour réorganiser les groupes et l'ordre d'affichage des caractères.

Le tableau ci-dessus contient certains caractères de remplacement Bidi liés aux attaques. Par exemple,

RLI e d o c PDI

L'acronyme RLI signifie « séparation de droite à gauche». Il sépare le texte de son contexte (séparé par PDI, séparation orientée vers le bas) et le lit de droite à gauche. Il en résulte :

c o 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 remplacements bidirectionnels, avant d'analyser le code source. S'ils ignorent simplement les caractères de formatage directionnel, ils analyseront :

e d o c

Du vieux vin dans de nouvelles bouteilles ?

Bien entendu, ce n'est pas une nouveauté. Par le passé, les caractères de formatage orientés étaient insérés dans les noms de fichiers afin de dissimuler leur nature malveillante. Sans RLO, une pièce jointe à un e-mail affichée sous le nom « myspecialexe.doc » pourrait sembler tout à fait innocente (contrôle de droite à gauche), mais les caractères affichés révèlent que son véritable nom est « myspecialcod.exe ».

L'attaque Trojan Source insère des caractères de formatage ciblés dans les commentaires et les chaînes de caractères du code source, car ces caractères ne génèrent aucune erreur syntaxique ou de compilation. Ces caractères de contrôle modifient l'ordre d'affichage de la logique du code, ce qui conduit le compilateur à lire un contenu différent de celui lu par l'utilisateur.

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

Texte Unicode bidirectionnel

Les caractères seront réorganisés selon le format indiqué ci-dessous.

Caractères de formatage directionnels

Si aucun caractère de formatage n'est explicitement spécifié, le code s'affichera comme suit :

Caractères Unicode bidirectionnels

RLO remplace la parenthèse droite par une parenthèse gauche dans la dernière ligne, et inversement. Le résultat de l'exécution de ce code sera : « Vous êtes administrateur ». Le contrôle administrateur est commenté, mais le rôle de contrôle donne l'impression qu'il est toujours présent.

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

Quel impact cela aura-t-il sur vous ?

De nombreux langages sont vulnérables : C, C++, C#, JavaScript, Java, Rust, Go et Python, et probablement d'autres encore. À l'heure actuelle, les développeurs expérimentés peuvent ignorer les caractères de formatage ciblés dans le code source, tandis que les débutants peuvent simplement hausser les épaules sans y prêter attention. De plus, la visualisation de ces caractères dépend fortement de l'IDE, il n'est donc pas garanti qu'ils soient détectés.

Cependant, comment cette vulnérabilité a-t-elle pu s'introduire dans le code source au départ ? Tout d'abord, cela peut se produire lorsque l'on utilise du code source provenant de sources non fiables, sans que les contributions de code malveillant ne soient remarquées.Ensuite, cela peut se produire simplement en copiant-collant du code trouvé sur Internet, ce que la plupart d'entre nous avons déjà fait. La plupart des organisations dépendent de composants logiciels provenant de plusieurs fournisseurs. Cela soulève la question suivante : dans quelle mesure pouvons-nous faire entièrement confiance à ce code et nous y fier ? Comment filtrer le code source contenant des portes dérobées cachées ?

À qui la faute ?

D'une part, les compilateurs et les pipelines de compilation doivent empêcher l'utilisation de lignes de code source multidirectionnelles, sauf si une direction est strictement limitée aux chaînes de caractères et aux commentaires. Veuillez noter que les caractères de formatage directionnel dans les chaînes de caractères ou les commentaires peuvent étendre le changement de direction jusqu'à la fin de la ligne s'ils ne sont pas mis en évidence.En règle générale, les éditeurs de code doivent clairement afficher et mettre en évidence les caractères Unicode suspects, tels que les homoglyphes et les caractères de formatage directionnel. Depuis novembre, GitHub ajoute désormais des avertissements et des messages dans le code contenant du texte Unicode bidirectionnel dans chaque ligne, bien qu'il ne mette pas en évidence l'emplacement de ces caractères dans la ligne. Cela peut encore permettre à des changements de direction malveillants et à des changements de direction bénins de se glisser dans le code.

La sensibilisation des développeurs et des réviseurs de code est essentielle, c'est pourquoi nous avons créé un exercice pour illustrer les vulnérabilités. Actuellement, cet exercice est disponible pour Java, C#, Python, GO et PHP.

Par conséquent, si vous souhaitez en savoir plus, nous vous invitons à essayer notre simulation Trojan Source (mission publique), puis à lire l'étude Trojan Source.

Simulation avec Java

Simulation en C#

Simulation en PHP

Simulation dans GO

Simulation en Python

Veuillez consulter les ressources.
Veuillez consulter les ressources.

Veuillez remplir le formulaire ci-dessous pour télécharger le rapport.

Nous souhaiterions obtenir votre autorisation afin de vous envoyer des informations concernant nos produits et/ou des sujets liés à la sécurité informatique. Nous traiterons toujours vos informations personnelles avec la plus grande confidentialité et ne les vendrons jamais à d'autres entreprises à des fins commerciales.

Soumettre
icône de réussite scw
icône d'erreur scw
Pour soumettre le formulaire, veuillez activer les cookies analytiques. Une fois terminé, vous pouvez les désactiver à nouveau si vous le souhaitez.
特洛伊木马来源

Au début du mois de novembre, l'université de Cambridge a publié une étude intitulée Trojan-Source. Cette étude se concentre sur la manière dont des caractères de formatage ciblés peuvent être utilisés pour dissimuler des portes dérobées dans le code source et les commentaires. Ceux-ci peuvent être employés pour écrire du code que le compilateur interprète différemment de la manière dont un examinateur de code humain l'interpréterait.

Cette vulnérabilité est récente, bien que l'Unicode ait déjà été utilisé à des fins malveillantes, par exemple pour masquer l'extension réelle d'un fichier en inversant la direction de la dernière partie du nom du fichier. Des recherches récentes ont montré que de nombreux compilateurs ignorent les caractères Unicode dans le code source sans avertissement, 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 ces caractères.Par conséquent, la manière dont les éditeurs affichent le code et les commentaires peut différer de celle utilisée par les compilateurs pour analyser le code et les commentaires, voire inverser le code et les commentaires.

Veuillez continuer votre lecture pour obtenir plus d'informations. Si vous préférez vous lancer et essayer la simulation de piratage informatique de Trojan Source, nous vous invitons à découvrir notre version gratuite Mission publique pour une expérience pratique.

Texte bidirectionnel

L'une des attaques par cheval de Troie utilise l'algorithme Unicode Bidi (bidirectionnel), qui traite la manière dont les textes ayant des ordres d'affichage différents (par exemple, l'anglais (de gauche à droite) et l'arabe (de droite à gauche)) sont combinés. Les caractères de formatage directionnel peuvent être utilisés pour réorganiser les groupes et l'ordre d'affichage des caractères.

Le tableau ci-dessus contient certains caractères de remplacement Bidi liés aux attaques. Par exemple,

RLI e d o c PDI

L'acronyme RLI signifie « séparation de droite à gauche». Il sépare le texte de son contexte (séparé par PDI, séparation orientée vers le bas) et le lit de droite à gauche. Il en résulte :

c o 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 remplacements bidirectionnels, avant d'analyser le code source. S'ils ignorent simplement les caractères de formatage directionnel, ils analyseront :

e d o c

Du vieux vin dans de nouvelles bouteilles ?

Bien entendu, ce n'est pas une nouveauté. Par le passé, les caractères de formatage orientés étaient insérés dans les noms de fichiers afin de dissimuler leur nature malveillante. Sans RLO, une pièce jointe à un e-mail affichée sous le nom « myspecialexe.doc » pourrait sembler tout à fait innocente (contrôle de droite à gauche), mais les caractères affichés révèlent que son véritable nom est « myspecialcod.exe ».

L'attaque Trojan Source insère des caractères de formatage ciblés dans les commentaires et les chaînes de caractères du code source, car ces caractères ne génèrent aucune erreur syntaxique ou de compilation. Ces caractères de contrôle modifient l'ordre d'affichage de la logique du code, ce qui conduit le compilateur à lire un contenu différent de celui lu par l'utilisateur.

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

Texte Unicode bidirectionnel

Les caractères seront réorganisés selon le format indiqué ci-dessous.

Caractères de formatage directionnels

Si aucun caractère de formatage n'est explicitement spécifié, le code s'affichera comme suit :

Caractères Unicode bidirectionnels

RLO remplace la parenthèse droite par une parenthèse gauche dans la dernière ligne, et inversement. Le résultat de l'exécution de ce code sera : « Vous êtes administrateur ». Le contrôle administrateur est commenté, mais le rôle de contrôle donne l'impression qu'il est toujours présent.

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

Quel impact cela aura-t-il sur vous ?

De nombreux langages sont vulnérables : C, C++, C#, JavaScript, Java, Rust, Go et Python, et probablement d'autres encore. À l'heure actuelle, les développeurs expérimentés peuvent ignorer les caractères de formatage ciblés dans le code source, tandis que les débutants peuvent simplement hausser les épaules sans y prêter attention. De plus, la visualisation de ces caractères dépend fortement de l'IDE, il n'est donc pas garanti qu'ils soient détectés.

Cependant, comment cette vulnérabilité a-t-elle pu s'introduire dans le code source au départ ? Tout d'abord, cela peut se produire lorsque l'on utilise du code source provenant de sources non fiables, sans que les contributions de code malveillant ne soient remarquées.Ensuite, cela peut se produire simplement en copiant-collant du code trouvé sur Internet, ce que la plupart d'entre nous avons déjà fait. La plupart des organisations dépendent de composants logiciels provenant de plusieurs fournisseurs. Cela soulève la question suivante : dans quelle mesure pouvons-nous faire entièrement confiance à ce code et nous y fier ? Comment filtrer le code source contenant des portes dérobées cachées ?

À qui la faute ?

D'une part, les compilateurs et les pipelines de compilation doivent empêcher l'utilisation de lignes de code source multidirectionnelles, sauf si une direction est strictement limitée aux chaînes de caractères et aux commentaires. Veuillez noter que les caractères de formatage directionnel dans les chaînes de caractères ou les commentaires peuvent étendre le changement de direction jusqu'à la fin de la ligne s'ils ne sont pas mis en évidence.En règle générale, les éditeurs de code doivent clairement afficher et mettre en évidence les caractères Unicode suspects, tels que les homoglyphes et les caractères de formatage directionnel. Depuis novembre, GitHub ajoute désormais des avertissements et des messages dans le code contenant du texte Unicode bidirectionnel dans chaque ligne, bien qu'il ne mette pas en évidence l'emplacement de ces caractères dans la ligne. Cela peut encore permettre à des changements de direction malveillants et à des changements de direction bénins de se glisser dans le code.

La sensibilisation des développeurs et des réviseurs de code est essentielle, c'est pourquoi nous avons créé un exercice pour illustrer les vulnérabilités. Actuellement, cet exercice est disponible pour Java, C#, Python, GO et PHP.

Par conséquent, si vous souhaitez en savoir plus, nous vous invitons à essayer notre simulation Trojan Source (mission publique), puis à lire l'étude Trojan Source.

Simulation avec Java

Simulation en C#

Simulation en PHP

Simulation dans GO

Simulation en Python

Visionner le webinaire
Commençons.
En savoir plus

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

Secure Code Warrior peut aider votre organisation à sécuriser le code tout au long du cycle de vie du développement logiciel et à instaurer une culture qui accorde la priorité à la cybersécurité. Que vous soyez responsable de la sécurité des applications, développeur, directeur de la sécurité de l'information ou tout autre professionnel concerné par la sécurité, nous pouvons aider votre organisation à réduire les risques liés au code non sécurisé.

Veuillez consulter le rapport.Veuillez réserver une démonstration.
Télécharger le PDF
Veuillez consulter les ressources.
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 se concentre sur la manière dont des caractères de formatage ciblés peuvent être utilisés pour dissimuler des portes dérobées dans le code source et les commentaires. Ceux-ci peuvent être employés pour écrire du code que le compilateur interprète différemment de la manière dont un examinateur de code humain l'interpréterait.

Cette vulnérabilité est récente, bien que l'Unicode ait déjà été utilisé à des fins malveillantes, par exemple pour masquer l'extension réelle d'un fichier en inversant la direction de la dernière partie du nom du fichier. Des recherches récentes ont montré que de nombreux compilateurs ignorent les caractères Unicode dans le code source sans avertissement, 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 ces caractères.Par conséquent, la manière dont les éditeurs affichent le code et les commentaires peut différer de celle utilisée par les compilateurs pour analyser le code et les commentaires, voire inverser le code et les commentaires.

Veuillez continuer votre lecture pour obtenir plus d'informations. Si vous préférez vous lancer et essayer la simulation de piratage informatique de Trojan Source, nous vous invitons à découvrir notre version gratuite Mission publique pour une expérience pratique.

Texte bidirectionnel

L'une des attaques par cheval de Troie utilise l'algorithme Unicode Bidi (bidirectionnel), qui traite la manière dont les textes ayant des ordres d'affichage différents (par exemple, l'anglais (de gauche à droite) et l'arabe (de droite à gauche)) sont combinés. Les caractères de formatage directionnel peuvent être utilisés pour réorganiser les groupes et l'ordre d'affichage des caractères.

Le tableau ci-dessus contient certains caractères de remplacement Bidi liés aux attaques. Par exemple,

RLI e d o c PDI

L'acronyme RLI signifie « séparation de droite à gauche». Il sépare le texte de son contexte (séparé par PDI, séparation orientée vers le bas) et le lit de droite à gauche. Il en résulte :

c o 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 remplacements bidirectionnels, avant d'analyser le code source. S'ils ignorent simplement les caractères de formatage directionnel, ils analyseront :

e d o c

Du vieux vin dans de nouvelles bouteilles ?

Bien entendu, ce n'est pas une nouveauté. Par le passé, les caractères de formatage orientés étaient insérés dans les noms de fichiers afin de dissimuler leur nature malveillante. Sans RLO, une pièce jointe à un e-mail affichée sous le nom « myspecialexe.doc » pourrait sembler tout à fait innocente (contrôle de droite à gauche), mais les caractères affichés révèlent que son véritable nom est « myspecialcod.exe ».

L'attaque Trojan Source insère des caractères de formatage ciblés dans les commentaires et les chaînes de caractères du code source, car ces caractères ne génèrent aucune erreur syntaxique ou de compilation. Ces caractères de contrôle modifient l'ordre d'affichage de la logique du code, ce qui conduit le compilateur à lire un contenu différent de celui lu par l'utilisateur.

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

Texte Unicode bidirectionnel

Les caractères seront réorganisés selon le format indiqué ci-dessous.

Caractères de formatage directionnels

Si aucun caractère de formatage n'est explicitement spécifié, le code s'affichera comme suit :

Caractères Unicode bidirectionnels

RLO remplace la parenthèse droite par une parenthèse gauche dans la dernière ligne, et inversement. Le résultat de l'exécution de ce code sera : « Vous êtes administrateur ». Le contrôle administrateur est commenté, mais le rôle de contrôle donne l'impression qu'il est toujours présent.

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

Quel impact cela aura-t-il sur vous ?

De nombreux langages sont vulnérables : C, C++, C#, JavaScript, Java, Rust, Go et Python, et probablement d'autres encore. À l'heure actuelle, les développeurs expérimentés peuvent ignorer les caractères de formatage ciblés dans le code source, tandis que les débutants peuvent simplement hausser les épaules sans y prêter attention. De plus, la visualisation de ces caractères dépend fortement de l'IDE, il n'est donc pas garanti qu'ils soient détectés.

Cependant, comment cette vulnérabilité a-t-elle pu s'introduire dans le code source au départ ? Tout d'abord, cela peut se produire lorsque l'on utilise du code source provenant de sources non fiables, sans que les contributions de code malveillant ne soient remarquées.Ensuite, cela peut se produire simplement en copiant-collant du code trouvé sur Internet, ce que la plupart d'entre nous avons déjà fait. La plupart des organisations dépendent de composants logiciels provenant de plusieurs fournisseurs. Cela soulève la question suivante : dans quelle mesure pouvons-nous faire entièrement confiance à ce code et nous y fier ? Comment filtrer le code source contenant des portes dérobées cachées ?

À qui la faute ?

D'une part, les compilateurs et les pipelines de compilation doivent empêcher l'utilisation de lignes de code source multidirectionnelles, sauf si une direction est strictement limitée aux chaînes de caractères et aux commentaires. Veuillez noter que les caractères de formatage directionnel dans les chaînes de caractères ou les commentaires peuvent étendre le changement de direction jusqu'à la fin de la ligne s'ils ne sont pas mis en évidence.En règle générale, les éditeurs de code doivent clairement afficher et mettre en évidence les caractères Unicode suspects, tels que les homoglyphes et les caractères de formatage directionnel. Depuis novembre, GitHub ajoute désormais des avertissements et des messages dans le code contenant du texte Unicode bidirectionnel dans chaque ligne, bien qu'il ne mette pas en évidence l'emplacement de ces caractères dans la ligne. Cela peut encore permettre à des changements de direction malveillants et à des changements de direction bénins de se glisser dans le code.

La sensibilisation des développeurs et des réviseurs de code est essentielle, c'est pourquoi nous avons créé un exercice pour illustrer les vulnérabilités. Actuellement, cet exercice est disponible pour Java, C#, Python, GO et PHP.

Par conséquent, si vous souhaitez en savoir plus, nous vous invitons à essayer notre simulation Trojan Source (mission publique), puis à lire l'étude Trojan Source.

Simulation avec Java

Simulation en C#

Simulation en PHP

Simulation dans GO

Simulation en Python

Table des matières

Télécharger le PDF
Veuillez consulter les ressources.
Souhaitez-vous en savoir davantage ?

En savoir plus

Secure Code Warrior peut aider votre organisation à sécuriser le code tout au long du cycle de vie du développement logiciel et à instaurer une culture qui accorde la priorité à la cybersécurité. Que vous soyez responsable de la sécurité des applications, développeur, directeur de la sécurité de l'information ou tout autre professionnel concerné par la sécurité, nous pouvons aider votre organisation à réduire les risques liés au code non sécurisé.

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

Ressources pour vous aider à démarrer

Plus d'articles
Centre de ressources

Ressources pour vous aider à démarrer

Plus d'articles