Blacklisting file extension accettate: quanto devo essere prudente

1

Attualmente lavora su un'applicazione web che consente agli utenti di caricare file su uno dei nostri server Windows. L'applicazione è costruita in ASP.NET MVC con un backend MySQL. I file caricati non sono archiviati sul server web e quindi sono inaccessibili tramite l'applicazione.

La buona pratica per i caricamenti di file è di limitare le estensioni ai tipi di file rilevanti, ma questo non verrà lavato qui. Se devo limitare i caricamenti per estensione, deve essere tramite una lista nera.

La ricerca suggerisce che ci sono qualcosa come 50 estensioni di file dispari di cui dovrei essere sospettoso e bloccare. Oltre a ciò, c'è il potenziale per codice pericoloso da nascondere in altri file come PDF.

Tuttavia, lo scopo dell'applicazione è analizzare i file di testo caricati. Una volta che i file sono sul server, vengono inseriti in un flusso di file e il contenuto viene passato alla standardizzazione dei dati. Questo è tutto ciò che fa.

Dato che ciò che facciamo con i file sembra abbastanza sicuro - non li stiamo eseguendo o altro - ho davvero bisogno di mantenere un elenco di blocchi a 50 corde in continua espansione? O ci sono alcuni tipi di file (ad esempio .exe) che posso considerare particolarmente pericolosi senza compromettere la sicurezza.

    
posta Matt Thrower 12.05.2016 - 16:14
fonte

1 risposta

2

Un'estensione di file è solo una parte del nome e di per sé non dice nulla sul contenuto del file. Viene utilizzato solo dal sistema operativo e dalle applicazioni per decidere cosa fare con il file. Quindi se non hai un componente nel tuo sistema che usa l'estensione per decidere cosa fare con il file, l'estensione non ha alcuna importanza e non avrai bisogno di una lista bianca o di una lista nera.

Ma dal momento che elaborerai i file indipendentemente dall'estensione che hanno, ciò che conta davvero è il contenuto del file. Assicurati quindi che l'elaborazione del testo stesso possa gestire contenuti inaspettati in modo sicuro. Ciò significa che non dovrebbe fare alcun tipo di ipotesi circa l'aderenza dei dati di input ad alcuni standard, ma dovrebbe sempre presumere che qualcuno ti sta alimentando dati di input leggermente corrotti per sfruttare i bug nella tua applicazione, come attualmente fatto con le immagini .

    
risposta data 12.05.2016 - 16:56
fonte

Leggi altre domande sui tag