Format Atlas

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.

Comparações relacionadas

Guias

Referências e especificações