Je travaille avec un système qui permet aux utilisateurs de télécharger des fichiers CSV, qui sont téléchargés par d'autres utilisateurs.
Le système valide (entre autres) que tous les fichiers CSV peuvent être analysés par un analyseur compatible RFC 4180 et sont valides UTF-8. Il garantit que lorsque les fichiers sont téléchargés, ils ont Content-Type: text/csv; charset=utf-8
, et Content-Disposition: attachment; filename="download.csv"
.
Une préoccupation a été exprimée quant au fait que le système pourrait être utilisé pour transmettre des logiciels malveillants ou des codes malveillants.
Existe-t-il des mécanismes connus où un fichier CSV malveillant pourrait entraîner l'exécution de code par le destinataire? Si oui, existe-t-il une validation supplémentaire qui réduirait le risque posé?
Oui, il existe des exemples de fichiers CSV malveillants provoquant une exécution aléatoire de "code". Les gens choisissent d'ouvrir des fichiers CSV dans MS Excel ou Open Office ou tout autre logiciel doté de capacités d'exécution de macros.
Quelques exemples:
https://www.contextis.com//resources/blog/comma-separated-vulnerabilities/https://hackerone.com/reports/72785
Si votre environnement n'utilise pas d'applications populaires telles que MS Excel pour ouvrir des fichiers CSV, le risque est considérablement réduit. Je rechercherais également la présence de liens externes potentiellement malveillants dans le CSV téléchargé qui pourraient héberger des téléchargements en voiture (d'où vous voudrez éviter de visiter ces liens).
Oui, il peut contenir des commandes système arbitraires qui seront exécutées sur la machine sur laquelle vous ouvrez le fichier CSV. Votre tableur affichera les valeurs CSV en tant que commandes injectées et s'exécutera après vous avoir donné plusieurs avertissements.
Exemple - Créez un fichier CSV avec les 2 lignes suivantes -
Nom d'utilisateur, e-mail, désignation
= 2 + 5 + cmd | '/C calc '! A0, a @ b.com, SSE
Enregistrez-le et ouvrez-le à l'aide de MS Excel. La calculatrice s'ouvrira dans votre système Windows.
Pour en savoir plus -