Uno dei principali meccanismi di sicurezza per il software applicativo è la convalida dell'input, che può proteggere l'integrità del sistema e contrastare gli attacchi di iniezione e denial of service più comuni.
La maggior parte di Internet può essere d'accordo sul fatto che le istruzioni preparate possono essere validate contro SQLi e che le librerie di disinfezione (che non sono vulnerabili) abbinate alla codifica dell'output possono mitigare l'XSS. Tuttavia, ho trovato che i consigli per la convalida dei caricamenti di file sono spesso deprecati e / o ambigui.
Fornire un contesto per il nostro sistema:
- Funziona su IIS 10 (Windows Server 2016), che ospita un'applicazione .NET.
- L'applicazione ha un endpoint che sta contattando un servizio esterno, dal quale riceve immagini.
Per i controlli di protezione, disponiamo di HTTPS con autenticazione reciproca (basato su una configurazione avanzata di TLS 1.2) e disponiamo di una whitelist di indirizzi IP consentiti per i nostri endpoint da contattare (ridondanti con il controllo dei certificati, ma miriamo alla difesa- in profondità). Ora, quando si tratta del caricamento del file, stiamo attualmente esaminando le seguenti convalide:
- Whitelist di numeri magici - Attualmente abbiamo il controllo magico dei numeri e non siamo sicuri di quanto sia facile falsificare questo valore. Aggiungere le convalide per le estensioni o MIME aggiungere qualcosa a questo passaggio?
- Dimensione del file e controllo della lunghezza del nome del file - limitiamo la dimensione di questi dati per evitare il DoS.
- Indipendentemente dal nome dell'immagine originale, viene rinominato in base alla convenzione interna del sistema, in teoria per evitare attacchi di iniezione attraverso il nome.
- L'immagine viene scansionata da un antivirus prima di ogni ulteriore manipolazione.
La nostra catena di validazione manca di passaggi importanti? Dato che lavoriamo con le immagini, ho sentito parlare della loro ricodifica per rimuovere gli attacchi, ma non sono stato in grado di trovare alcun dettaglio su questo argomento.