Problema import movimenti bancari (Unicredit non fa alcuna sanificazione nei suoi export in CSV) - CSV amount poisoning

Se una persona fa una donazione ad Italian Linux Society (che ha banca Unicredit) di una cifra anche irrisoria (1€) tramite bonifico, e mettendo però oggetto del bonifico qualcosa come LOL; 999999 quello che capita è che la banca Unicredit non sembra seguire alcuna buona pratica suggerita dall'RFC 4180 sulla gestione dei CSV, non fa quindi alcun escape dei dati delle colonne, e quindi il valore 999999 diventa una colonna a parte, corrispondente a quella dell'importo.

Questo è un esempio di donazione malevola di 5€ con oggetto Donazione;12345678.90;999, esportata da Unicredit, e importata in ILS Manager, finisce per diventare da 500€ corrispondente a 20 anni di valide quote associative (un ringraziamento a @PalinuroSec per la donazione e l'esperimento asd - non arrestate Palinuro - era tutto concordato - https://t.me/ItalianLinuxSociety/2/4735):

ILS Manager lol palinuro donation

Considerazioni

Questo non è comunque un grave problema di sicurezza siccome alla fine di ogni anno siamo comunque costretti a verificare i bilanci a mano, riconducendo i movimenti interni di ILS Manager con quelli esterni dalle banche e quindi ci accorgiamo di questa cosa e risolviamo.

Altre cose

Tutto è iniziato importando un file del genere come movimento bancario:

Situazione al 11.03.2024 ore 09:29:04 del Conto Corrente IT 74 G 02008 12609 000100129899 - ILS ITALIAN LINUX SOCIETY

Data;Valuta;Descrizione;Euro;Caus.
27/02/2024;test test test; spese domi TRN 1101240580166678;-136.72;208

Risulta con importo zero in ILS Manager in produzione.

Codice

File da poter migliorare:

https://gitlab.com/ItalianLinuxSociety/ilsmanager/-/blob/e5fce0b3ecba583e8eff1ccc2dfc20e0c3251058/app/Http/Controllers/MovementController.php#L170

Potenziale regex da poter adottare per fare il parsing di questo CSV rotto:

https://regex101.com/r/Vw4mK2/1

Edited by Valerio Bozzolan