Guide
Iniezione di formule CSV ed esportazioni sicure
Le virgolette CSV preservano i confini dei campi, ma non impediscono al foglio di calcolo di interpretare una cella come formula. Scegli un metodo per l'app di destinazione e provalo lì.
Quale formato scegliere?
Scegli in base al ruolo di ogni file nel flusso di lavoro.
- CSV per elaborazione automatica → Conserva i valori e segui la specifica del parser destinatario
- CSV aperto in un foglio di calcolo → Scegli un output che tratti come testo i valori non attendibili e provalo nell'app di destinazione
- Le virgolette bastano? → Proteggere la sintassi CSV e impedire le formule sono due cose diverse
- Quale sanitizzazione scegliere? → Le app si comportano in modo diverso; non presumere che esista una trasformazione universale
Una cella CSV può essere interpretata come formula
Se un CSV contiene valori di un modulo Web o di un database, Excel, LibreOffice Calc o un altro foglio di calcolo può interpretare come formula una cella che inizia con `=`. Se un aggressore controlla il dato, la formula può esporre informazioni o causare altri danni tramite il comportamento dell'app o le azioni dell'utente. L'impatto dipende dal software e dalle sue impostazioni.
Le virgolette CSV da sole non impediscono le formule
Racchiudere un campo tra virgolette doppie e fare l'escape di quelle interne è un trattamento sintattico: mantiene virgole e interruzioni di riga nel campo previsto. L'interpretazione della cella come formula è una fase distinta. Un CSV con escape corretto non dimostra da solo che l'iniezione di formule sia stata mitigata.
Scegli un output testuale adatto all'app di destinazione
Distingui il CSV per l'elaborazione automatica dai file che le persone apriranno in un foglio di calcolo. Per questi ultimi, valuta una libreria o un formato che salvi esplicitamente i valori come testo. Se il CSV è necessario, prova come l'app gestisce valori che iniziano con `=`, `+`, `-` o `@` e scegli una misura specifica. Anteporre un tabulatore o un apostrofo può compromettere la compatibilità o modificare il valore, quindi non è una soluzione universale.
Considera delimitatori e confini delle celle
Virgole, punti e virgola, virgolette e interruzioni di riga nei valori non attendibili possono creare celle inattese se l'output è composto male. Una nuova cella potrebbe iniziare con un indicatore di formula. Usa una libreria CSV standard e tratta separatamente l'interpretazione delle formule nell'app di destinazione. Non basarti sulla concatenazione di stringhe o sul solo controllo del primo carattere.
Prova ad aprire, salvare e riaprire
Nei fogli di calcolo supportati, prova casi limite come spazi iniziali, caratteri di controllo, delimitatori e virgolette, anche dopo il salvataggio e la riapertura. OWASP avverte che Excel può rimuovere virgolette o escape durante questa operazione, riattivando un valore neutralizzato. Conserva i dati sorgente per i sistemi separatamente dall'output trasformato per i fogli di calcolo.
Formati da considerare
CSV
Adatto per: Scambiare tabelle semplici quando il destinatario tratta le celle come dati
Meno adatto per: Esportare valori non attendibili per fogli di calcolo senza misure adatte né test nell'app di destinazione
Cosa controllare prima dell’esportazione
- Virgolette ed escape CSV non sono una barriera contro l'esecuzione di formule.
- I fogli di calcolo differiscono nel rilevamento, negli avvisi e nel comportamento al nuovo salvataggio.
- Prima di distribuire CSV con input non attendibili, provalo nell'app di destinazione, anche dopo averlo salvato e riaperto.