Come estrarre in modo sicuro uno zip caricato?

6

Sto lavorando a un progetto per un cliente in cui desiderano che i loro utenti caricino un file ZIP che può essere estratto. Una volta estratto, utilizzeremmo determinati file, come immagini e file HTML.

È chiaro che si tratta di un enorme rischio per la sicurezza poiché non è possibile controllare in sicurezza il contenuto del file. Il progetto è attualmente solo per utenti interni, ma vorrebbe aprirlo a utenti esterni in un secondo momento.

Il progetto è attualmente in fase di costruzione con Laravel e non ci sono librerie che potrebbero esserci utili. Quindi immagino che questa sarà probabilmente più una domanda riguardante il server stesso. Ma quali misure possiamo prendere per prevenire virus e attacchi con queste cerniere?

    
posta Jarrod 24.11.2016 - 14:38
fonte

4 risposte

5

Forse puoi trovare librerie che potrebbero aiutare a rilevare i file dannosi. Ma temo che dovrai scegliere tra essere severi e avere falsi positivi, o perdere con il rischio di passare occasionalmente il malware.

Il mio consiglio qui è di fare affidamento su tracciabilità . Controlli (il più possibile) i file caricati, ma per ognuno di essi mantieni il nome o l'id dell'utente che lo ha caricato. E tu fai pubblicità in gran parte su questo. Se successivamente si verifica un problema, sarai in grado di identificare chi è il colpevole. Ovviamente ha senso solo se conosci tutti i tuoi utenti. Ma non riesco a immaginare un modo per proteggere un sito che accetta contenuti dinamici per utenti incontrollati ...

    
risposta data 24.11.2016 - 15:18
fonte
3

Ci sono una manciata di "decomprimi servizi" in cui spedisci il file e ottieni il contenuto. Fintanto che la riservatezza dei dati non è critica, questo potrebbe scaricare gran parte del rischio. Basta cercarli.

    
risposta data 24.11.2016 - 17:36
fonte
1

Suppongo che manchi una risposta adeguata. Quindi il modo migliore, ho potuto pensare è il seguente:

  1. Crea un host bastion per caricare i file. E tienilo isolato dal server. Questo ti aiuterà a proteggere il tuo sito da DOS e anche se si verifica un DOS, sarebbe solo per un particolare tipo di servizio.
  2. Limita le dimensioni del caricamento e crea Captcha , in modo che le persone non caricino file enormi sull'host.
  3. Esegui unzip-services e utilizzando rilevamento basato su firma e rilevamento comportamento euristico , prova a verificare tutti i file per anomalie (possibilmente ADS), trojan , rootkit, ecc ...
  4. Assegna sempre un numero ID alle cerniere in modo che possa essere ricondotto all'utente che lo ha caricato. Questo ti aiuterà a confrontarti con la persona che ha caricato la minaccia dannosa.

La mitigazione completa non è possibile in questo caso, ma la soluzione consentirà di ridurre la minaccia a un livello sostanziale.

    
risposta data 25.11.2016 - 04:58
fonte
1

Gli archivi Zip non sono malvagi. Solo il loro contenuto è e solo se eseguito.

L'operazione di decompressione di un archivio zip è pericolosa solo se l'implementazione dell'algoritmo di decompressione presenta una vulnerabilità (ad esempio, per un zip bomba ). Anche quando sono presenti degli eseguibili dannosi, questi sono pericolosi solo se eseguiti come programma.

Quindi non vi sono problemi di sicurezza ragionevoli con il disimballaggio degli archivi zip, l'impronta digitale dei tipi di file (non fare affidamento sulle estensioni) e mantenendo solo i tipi di file autorizzati. Come ulteriore precauzione di sicurezza è anche possibile effettuare una scansione antivirus dei file. Ma quando non si conservano binari disfatti, questo probabilmente non è necessario.

Si noti che l'incorporamento di HTML di terze parti su un sito Web è pericoloso, perché apre il sito fino alle iniezioni XSS. È ragionevolmente sicuro che gli utenti non possano guardare l'HTML caricato da altri utenti.

    
risposta data 25.11.2016 - 10:17
fonte

Leggi altre domande sui tag