Guides
Injection de formules CSV et exportations sûres
Les guillemets CSV préservent les limites des champs, mais n’empêchent pas un tableur d’interpréter une cellule comme une formule. Choisissez une méthode pour l’application cible et testez-la dans celle-ci.
Quel format choisir ?
Choisissez selon le rôle de chaque fichier dans votre flux de travail.
- CSV traité par un système → Conserver les valeurs et respecter la spécification du parseur destinataire
- CSV ouvert dans un tableur → Choisir une sortie qui traite les valeurs non fiables comme du texte et la tester dans l’application cible
- Les guillemets suffisent-ils ? → Protéger la syntaxe CSV et empêcher l’exécution de formules sont deux choses distinctes
- Quelle neutralisation choisir ? → Les tableurs diffèrent ; ne supposez pas qu’une transformation universelle existe
Une cellule CSV peut être interprétée comme une formule
Si un export CSV contient des données issues d’un formulaire Web ou d’une base de données, Excel, LibreOffice Calc ou un autre tableur peut interpréter comme formule une cellule commençant par `=`. Si un attaquant contrôle cette entrée, la formule peut exposer des données ou entraîner d’autres conséquences. L’impact dépend du logiciel et de sa configuration.
Les guillemets CSV ne bloquent pas les formules
Encadrer un champ par des guillemets doubles et échapper ceux qu’il contient est un traitement syntaxique : virgules et retours à la ligne restent dans le champ prévu. L’interprétation comme formule par le tableur est une étape distincte. Un échappement CSV correct ne prouve donc pas que l’injection de formules est neutralisée.
Choisir une sortie texte adaptée à l’application cible
Distinguez les CSV traités automatiquement de ceux que des personnes ouvriront dans un tableur. Pour ces derniers, envisagez une bibliothèque ou un format permettant d’enregistrer explicitement les valeurs comme texte. Si le CSV est indispensable, testez le traitement des valeurs commençant par `=`, `+`, `-` ou `@` dans l’application cible et choisissez une mesure adaptée. Ajouter une tabulation ou une apostrophe peut nuire à la compatibilité ou modifier la valeur : ce n’est pas universel.
Tenir compte des séparateurs et des limites de cellules
Des virgules, points-virgules, guillemets ou retours à la ligne dans des valeurs non fiables peuvent créer des cellules inattendues si le fichier est mal assemblé. Une nouvelle cellule peut alors commencer par un indicateur de formule. Utilisez une bibliothèque CSV standard et traitez séparément l’interprétation des formules dans l’application cible. Ne vous fiez ni à la concaténation de chaînes ni au seul premier caractère.
Tester l’ouverture, l’enregistrement et la réouverture
Testez des cas limites — espaces initiaux, caractères de contrôle, séparateurs et guillemets — dans les tableurs pris en charge, y compris après enregistrement et réouverture. OWASP signale qu’Excel peut supprimer des guillemets ou des échappements à cette occasion et réactiver une valeur neutralisée. Conservez les données sources destinées aux machines séparément de la sortie transformée pour le tableur.
Formats à envisager
CSV
Adapté pour: Échanger des tableaux simples lorsque le destinataire traite les cellules comme des données
Moins adapté pour: Exporter des valeurs non fiables pour un tableur sans mesure adaptée ni test dans l’application cible
Avant l’export
- Les guillemets et échappements CSV ne protègent pas contre l’exécution de formules.
- Les tableurs diffèrent dans la détection, les avertissements et le comportement à l’enregistrement.
- Avant de distribuer un CSV contenant des données non fiables, testez-le dans l’application cible, y compris après réouverture.