Guias
Injeção de fórmulas em CSV e exportações seguras
As aspas do CSV preservam os limites dos campos, mas não impedem que uma planilha interprete uma célula como fórmula. Escolha uma estratégia para o aplicativo de destino e teste nele.
Qual formato você deve escolher?
Escolha conforme a função de cada arquivo no fluxo de trabalho.
- CSV para processamento entre sistemas → Preserve os valores e siga a especificação do leitor destinatário
- CSV que pessoas abrirão em uma planilha → Escolha uma saída que trate valores não confiáveis como texto e teste no aplicativo de destino
- Só colocar entre aspas resolve? → Proteger a sintaxe CSV e impedir fórmulas são coisas diferentes
- Qual sanitização usar? → Os aplicativos variam; não presuma que uma transformação sirva para todos
Uma célula CSV pode ser interpretada como fórmula
Quando o CSV contém valores de um formulário web ou banco de dados, Excel, LibreOffice Calc ou outra planilha pode interpretar como fórmula uma célula iniciada por `=`. Se um atacante controlar essa entrada, a fórmula pode expor dados ou causar outros danos pelo comportamento do aplicativo ou por ações do usuário. O impacto depende do programa e das configurações.
As aspas do CSV não impedem fórmulas
Colocar um campo entre aspas duplas e escapar as aspas internas é um tratamento de sintaxe: mantém vírgulas e quebras de linha no campo pretendido. A interpretação da célula como fórmula pela planilha é outra etapa. Portanto, escapar o CSV corretamente não comprova, por si só, que a injeção de fórmulas foi mitigada.
Escolha uma saída de texto para o aplicativo de destino
Diferencie o CSV para processamento automático dos arquivos que serão abertos por pessoas em planilhas. Para estes, considere uma biblioteca ou formato que permita gravar o valor explicitamente como texto. Se precisar usar CSV, teste como o aplicativo de destino lida com valores iniciados por `=`, `+`, `-` ou `@` e escolha uma medida específica. Acrescentar uma tabulação ou apóstrofo pode afetar a compatibilidade ou alterar o valor, por isso não é uma solução universal.
Considere delimitadores e limites entre células
Vírgulas, ponto e vírgula, aspas e quebras de linha em valores não confiáveis podem criar células inesperadas se o arquivo for montado incorretamente. Uma nova célula pode começar com um indicador de fórmula. Use uma biblioteca CSV padrão para codificar os campos e trate separadamente a interpretação de fórmulas no aplicativo de destino. Não dependa de concatenar textos ou verificar apenas o primeiro caractere.
Teste abrindo, salvando e abrindo novamente
Teste casos-limite, como espaços iniciais, caracteres de controle, delimitadores e aspas, nas planilhas usadas pelo público. Inclua o ciclo de salvar e abrir novamente. A OWASP alerta que o Excel pode remover aspas ou escapes ao salvar e reabrir um CSV, reativando um valor antes neutralizado. Mantenha separados os dados de origem para sistemas e a saída transformada para visualização em planilhas.
Formatos a considerar
CSV
Indicado para: Trocar tabelas simples quando o destinatário trata o conteúdo das células como dados
Menos indicado para: Exportar valores não confiáveis para planilhas sem medidas específicas nem testes
Antes de exportar
- Aspas e escapes de CSV não são uma barreira contra a execução de fórmulas.
- As planilhas variam na detecção de fórmulas, nos avisos e no comportamento ao salvar novamente.
- Antes de distribuir CSV com dados não confiáveis, teste no aplicativo de destino, inclusive depois de salvar e abrir o arquivo outra vez.