Explication des attaques par injection CSV
Les fichiers de valeurs séparées par des virgules, ou fichiers CSV, sont aujourd'hui un peu partout. Si vous travaillez dans un environnement de bureau (en fait, est-ce que les gens le font encore maintenant ?), vous avez probablement envoyé, reçu et ouvert des fichiers CSV dans Microsoft Excel ou Google Sheets à un moment ou à un autre. Les fichiers CSV nous permettent de structurer des ensembles de données complexes dans un format lisible par l'homme.
Mais les fichiers CSV, malgré leur aspect pratique, représentent également un vecteur d'attaque sérieux sous la forme d'attaques par injection CSV. Les attaques par injection CSV, également appelées attaques par injection de formule, peuvent se produire lorsqu'un site Web ou une application Web permet aux utilisateurs d'exporter des données vers un fichier CSV sans valider son contenu. Sans validation, le fichier CSV exporté pourrait contenir des formules malveillantes. Si une formule malveillante est exécutée par des applications CSV, telles que Microsoft Excel, Apple Numbers ou Google Sheets, entre autres, elle pourrait compromettre vos données, votre système ou les deux.
Une autre façon d’utiliser les fichiers CSV comme vecteur d’attaque consiste à intégrer des liens malveillants dans le fichier. Si un utilisateur clique sur le lien malveillant, toutes sortes de mauvaises choses peuvent se produire.
Que sont les fichiers CSV ?
Il y a de fortes chances que vous ayez déjà ouvert un fichier CSV. Si vous avez déjà utilisé Microsoft Excel, vous avez joué avec des fichiers CSV.
Un fichier CSV (Comma Separated Values) est tout simplement un fichier texte brut contenant des données. Les fichiers CSV sont souvent utilisés pour échanger des données, généralement des bases de données, entre différentes applications.
Les fichiers CSV sont parfois appelés fichiers à valeurs séparées par des caractères ou fichiers délimités par des virgules. Le caractère virgule est utilisé pour séparer (ou délimiter) les différents points de données. D'autres caractères, comme les points-virgules, sont également parfois utilisés pour la délimitation, bien que les virgules soient les plus courantes. L'avantage de l'utilisation des fichiers CSV est que vous pouvez exporter des données complexes d'une application vers un fichier CSV et les importer dans une autre application. Vous pouvez également effectuer des opérations sur les données grâce à l'utilisation de formules ou de macros.
Par exemple, l'image de la feuille de calcul ci-dessus ressemble à ceci au format .csv lorsqu'elle est ouverte dans un éditeur de texte : Notez que chaque valeur est séparée par une virgule, d'où le nom Comma Separated Values (CSV).
Types d'attaques par injection CSV
Liens malveillants
Alors pourquoi les fichiers CSV sont-ils dangereux ? Eh bien, ils le sont de trois manières. La première façon dont les fichiers CSV peuvent être utilisés pour perpétrer une attaque est en fait partagée par tout fichier numérique affichant du texte et prenant en charge des hyperliens. Et c’est simplement en intégrant un lien malveillant dans l’une des cellules. Si un utilisateur peu méfiant clique sur le lien malveillant, il se peut qu’il ait compromis son système, ses données, ou les deux. Ce vecteur d’attaque peut être atténué par un peu de bon sens : ne cliquez pas sur les liens dans des fichiers non fiables (CSV ou autres). Microsoft Excel demandera une confirmation à l'utilisateur avant de suivre le lien, mais la plupart des utilisateurs s'attendent à trouver des liens intégrés dans des fichiers CSV fiables et ignoreront l'avertissement de sécurité.
Un tel lien pourrait ressembler à ceci :
|_+_|
Cela canaliserait les informations contenues dans le fichier CSV vers le serveur de l’attaquant lorsqu’on clique dessus.
Applications CSV
Mais il existe un autre vecteur d’attaque, beaucoup plus courant avec les fichiers CSV : les applications CSV elles-mêmes. Afin d'afficher la feuille de calcul avec les valeurs correctes, les applications CSV exécutent toutes les formules juste avant l'affichage de la feuille de calcul. Cela signifie qu'aucune interaction de l'utilisateur n'est requise pour que les formules ou les macros soient exécutées. Ainsi, si une formule malveillante était intégrée dans la feuille de calcul, il suffit qu’un utilisateur sans méfiance ouvre le fichier CSV compromis pour qu’elle soit automatiquement exécutée.
Les formules ou macros sont essentiellement des équations exécutées entre les différents points de données contenus dans le fichier. Supposons, par exemple, que vous disposiez d'une simple feuille de calcul comportant deux colonnes : la colonne A répertorie vos revenus par semaine et la colonne B répertorie vos coûts par semaine. Une formule peut être utilisée pour soustraire les coûts de vos revenus et répertorier les données résultantes dans une troisième colonne (C). Une telle formule ressemblerait à ceci : =A1-B1. Les formules, pour les fichiers CSV, commencent toutes par l'un des caractères suivants : Égal à (=), Plus (+), Moins (-), At (@).
L'exemple ci-dessous est une formule malveillante qui canaliserait silencieusement le contenu d'un document Google Sheets vers un serveur contrôlé par l'attaquant :
|_+_|
Échange de données dynamique
La troisième attaque CSV est propre aux ordinateurs Windows. Microsoft a implémenté une fonctionnalité dans Excel appelée Dynamic Data Exchange (DDE). DDE permet à Excel de communiquer avec d'autres parties du système et même de lancer des applications. Ainsi, en utilisant DDE, un attaquant malveillant pourrait créer une formule malveillante pour lancer l’invite de commande et exécuter du code arbitraire sur la machine en question. Cela pourrait également être conçu comme un lien. Dans ce cas, comme ci-dessus, une fenêtre contextuelle Windows apparaît demandant à l'utilisateur s'il fait confiance au lien. L'utilisateur doit cliquer sur « Oui » pour suivre le lien. Bien qu'il s'agisse d'une mesure d'atténuation des attaques CSV, la plupart des utilisateurs s'attendent à ce que leurs feuilles de calcul interagissent avec leur ordinateur, du moins dans un environnement de bureau.
Vous trouverez ci-dessous un exemple d'utilisation de DDE pour lancer le terminal et commencer à envoyer une requête ping à un ordinateur distant, ce qui pourrait entraîner une attaque DDOS (plus de victimes seraient bien sûr nécessaires).
|_+_|
Ingénierie sociale
Comme beaucoup d’autres attaques en ligne, les attaques par injection CSV impliquent une certaine forme d’ingénierie sociale pour amener la victime soit à ouvrir le fichier CSV, soit à l’ouvrir et à cliquer sur un lien malveillant. Cela peut être un e-mail, une publication sur Facebook, peu importe. Méfiez-vous des liens aléatoires.
Exemple d'attaque par injection CSV
En juin 2018, la police néerlandaise s'est emparée du marché du dark web, Hanse , en utilisant une attaque par injection CSV .
Le marché Hansa vendait de la drogue sur le dark web (Tor). Les utilisateurs de la place de marché pouvaient télécharger un fichier texte contenant une liste de leurs achats récents. Lorsque la police néerlandaise a repris le site le 20 juin 2018, elle a modifié le code du serveur Web et remplacé le fichier texte « achats récents » par un fichier CSV. Le fichier CSV contenait une charge utile malveillante qui enverrait les adresses IP des utilisateurs à un serveur contrôlé par la police néerlandaise. 64 vendeurs ont mordu à l’hameçon. Et pendant que le serveur a été repris par la police néerlandaise, l'opération a enregistré 27 000 transactions de drogue en 27 jours.
Comment atténuer les attaques par injection CSV
La manière d’atténuer ce type d’attaques est en réalité assez simple. Sa mise en œuvre varie simplement en fonction de votre scénario.
Il existe deux scénarios :
- Votre site Web/application produit des fichiers CSV
- Votre site Web/application consomme des fichiers CSV
Votre site Web/application produit des fichiers CSV
Si votre application produit des fichiers CSV, vous pouvez effectuer une validation de liste blanche sur les entrées non fiables et interdire les caractères Égal (=), Plus (+), Moins (-) et At (@). La validation de la liste blanche signifie simplement créer une liste blanche de caractères autorisés et référencer les entrées par rapport à la liste blanche. Tous les caractères ne figurant pas sur la liste blanche sont interdits et supprimés. C'est probablement la méthode la plus sûre. Cependant, cela suppose que votre site Web/application n’a pas besoin d’autoriser ces caractères pour remplir ses fonctions.
Si elle doit accepter ces caractères, vous pouvez encoder les valeurs de cellule afin que l'application CSV ne traite pas ces caractères comme des formules en faisant précéder les valeurs de cellule commençant par les caractères : =, +, - ou @ avec un guillemet simple. Cette méthode est appelée « évasion » des caractères et garantit que ces caractères seront interprétés comme des données plutôt que comme des formules.
Votre site Web/application consomme des fichiers CSV
Si votre site Web/application ingère des fichiers CSV produits ailleurs, vous devrez valider et encoder le contenu du fichier avant qu'il ne soit traité par votre application. La manière exacte dont vous y parviendrez dépend de l’architecture de votre site et dépasse donc le cadre de cet article.
Cependant, de nombreux articles en ligne traitant de l'atténuation des injections CSV recommandent de valider et d'encoder uniquement les cellules contenant les caractères incriminés (=, +, - et @). Je vous recommande d'encoder toutes les cellules, pas seulement celles contenant : =, +, - ou @. Toutes les données restent interprétables par l’application et vous serez sûr qu’aucune des cellules ne sera interprétée comme des formules.
Conclusion
L’injection de CSV peut avoir des conséquences vraiment désastreuses. Heureusement, protéger votre site/application Web n’est pas difficile. Interdisez simplement les caractères interprétés comme des formules par les applications CSV ou validez et encodez l'entrée CSV.
Mais comme cette attaque nécessite une certaine forme d’ingénierie sociale, en tant qu’utilisateur, vous pouvez prendre quelques mesures de bon sens pour réduire vos chances de devenir une victime.
- Utilisez un pare-feu – Tous les principaux systèmes d'exploitation disposent d'un pare-feu entrant intégré et tous les routeurs commerciaux du marché disposent d'un pare-feu NAT intégré. Assurez-vous qu'ils sont activés car ils peuvent vous protéger si vous cliquez sur un lien malveillant.
- Si votre application CSV affiche un avertissement concernant un lien auquel vous essayez d'accéder, vous devez y prêter attention et inspecter attentivement le lien.
- Ne cliquez pas sur les pièces jointes des e-mails à moins de savoir exactement qui les a envoyés et de quoi il s’agit.
Voir également:
- Comment prévenir les chevaux de Troie malveillants
- Explication des attaques de logiciels malveillants courantes
- Plus de 300 statistiques choquantes sur la cybercriminalité