Attention, le code source qu’on lit n’est pas forcément celui qui sera exécuté. Des chercheurs en sécurité de l’université de Cambridge viennent de révéler une attaque baptisée « Trojan Source » qui permet d’incorporer du code malveillant dans un code source qui, à l’œil nu, paraît totalement normal, et cela, quel que soit le langage sous-jacent.
En occurrence, les chercheurs ont testé leur technique avec succès pour les langages C, C++, C#, Javascript, Java, Rust, Go et Python. Trojan Source est également une redoutable attaque de « supply chain ». Une porte dérobée camouflée dans un module open source peut se retrouver telle quelle dans tous les logiciels qui l’intégreraient. Or, certaines briques open source sont utilisées dans beaucoup de logiciels. Le potentiel de dissémination est donc très grand.
A découvrir aussi en vidéo :
Alors comment est-ce possible ? Trojan Source s’appuie sur le fait que l’on peut indiquer des directionnalités différentes dans un même texte codé au standard Unicode. Cela permet, par exemple, de correctement afficher une citation en arabe ou en hébreu au sein d’un texte français. Ces changements de direction se font à l’aide de caractères invisibles appelés « Bidi ». Les caractères « LRI » et « RLI » indiquent respectivement que les mots qui suivent doivent être affichés de la gauche vers la droite, ou de la droite vers la gauche.
Or, le standard Unicode est également utilisé pour le codage informatique. Rien n’empêche donc un pirate d’utiliser ces caractères invisibles pour manipuler un code source. En les plaçant astucieusement, il peut provoquer un retour imprévu d’une fonction ou transformer une partie d’un commentaire en code exécutable. Les chaînes de caractères pourraient également avoir une valeur différente de celle que l’on voit dans le code affiché. Bref, les possibilités de manipulation sont énormes et, à l’heure actuelle, difficiles à identifier.
En effet, l’utilisation des caractères Bidi ne provoque aucune alerte particulière dans les compilateurs et les outils de développement. Ils passent complètement sous le radar.
A priori, cette technique n’a pas encore été utilisée par des pirates. Les chercheurs ont scanné plus de 7 000 dépôts logiciels open source et n’ont rien trouvé de malveillant, mis à part une utilisation à titre d’obfuscation de code.
La balle est maintenant dans le camp des éditeurs de compilateurs et d’outils de développement. La bonne nouvelle, c’est qu’il est assez simple de corriger le tir, car il suffit d’exclure l’utilisation des caractères Bidi, sauf pour des usages parfaitement délimités. Malheureusement, l’écosystème n’est pas très réactif.
Les chercheurs ont alerté dix-neuf organisations, en leur donnant 99 jours pour fournir un patch. Seule la moitié d’entre elles l’ont fait, les autres traînent des pieds. Les développeurs ont donc intérêt à bien analyser les codes tiers qu’ils intègrent. Par exemple en utilisant l’éditeur « vim » qui affiche clairement les caractères Bidi sans changer la directionnalité du texte.
Source : Trojan Source