Il server caricato con antivirus lascia passare il file virale

2

Abbiamo un sito Web .NET MVC con un servizio WCF come livello di servizio. Una delle funzionalità offerte dal servizio è la possibilità di caricare documenti. Quando abbiamo chiesto al nostro consulente di sicurezza di testare il nostro sistema di vulnerabilità, ha scoperto che un utente può caricare EICAR.txt (una stringa innocua che funge da virus per tutto il software antivirus) può essere caricato nel sistema.

Questo file funziona fondamentalmente come un Byte Stream dalla funzione di caricamento e viene salvato nel database come BLOB tramite una chiamata di servizio. I server (sia server Web IIS che server database) sono caricati con l'antivirus.

Non puoi andare su questi server e scaricare un file EICAR beucase antivirus non ti permetterò di farlo. Tuttavia, quando il file raggiunge il server IIS come Byte [] o quando raggiunge il server del database come un BLOB attraverso il codice dell'applicazione, passa attraverso.

C'è un modo per rendere solida la mia applicazione in modo che sia sicura contro i file infetti da virus?

    
posta Lost 30.04.2016 - 01:20
fonte

1 risposta

2

Non sopravvalutiamo la scoperta del consulente per la sicurezza perché alcuni di loro non sanno veramente cosa fanno. Certo che non conosco il vero rapporto e posso basare la mia opinione solo su ciò che hai scritto. Ma una volta ho avuto a che fare con un rapporto in cui il consulente si è lamentato del fatto che il virus EICAR non è stato trovato da un firewall quando è stato utilizzato come oggetto di posta, anche se l'uso previsto per il virus di test EICAR lo dice esplicitamente:

Any anti-virus product that supports the EICAR test file should detect it in any file providing that the file starts with the following 68 characters, and is exactly 68 bytes long...

Quindi, il rilevamento del codice all'interno di un flusso di byte all'interno di un'applicazione o di un database non copre affatto l'utilizzo perché non è un file. E forse non si adatta nemmeno agli altri requisiti su inizio e lunghezza. Ma sarebbe male se il flusso di byte viene effettivamente salvato da qualche parte come un file, come quando scaricato dal browser.

C'è una ragione per questa limitazione di utilizzo del virus di test: il flusso di byte di un virus non è pericoloso da solo. È solo un problema quando viene utilizzato in un contesto in cui può essere eseguito, in genere quando viene salvato come file con un'estensione specifica come .exe, .com, .scr, .dll ecc.

Ma è vero che se il codice dannoso è già caricato all'interno di un'applicazione può anche essere eseguito in altro modo, deliberatamente o a causa di un bug come un buffer overflow. L'esecuzione deliberata sarebbe anche possibile se il codice fosse nascosto con la crittografia ad esempio, quindi non importa. E l'overflow del buffer non eseguirà direttamente il codice dannoso ma ci sarà prima del codice che sfrutta l'overflow del buffer per poi eseguire il codice specifico. E anche questo codice di exploit potrebbe includere alcuni semplici XOR per decodificare il vero codice dannoso.

Ciò significa che cercare la firma del malware da qualche parte all'interno di un flusso di byte che può essere o non essere mai utilizzato direttamente nell'esecuzione potrebbe causare più falsi allarmi che essere di uso reale. Pertanto assicurati di non eseguire alcun codice tu stesso nel database e di non inviare a nessuno i dati contenuti in un download o di salvarli come file singolo.

A parte i prodotti antivirus aziendali, spesso hanno un'API (o offrono ICAP) in modo da poter inviare qualsiasi flusso di byte che desideri all'analisi antivirus. Questo dovrebbe essere fatto all'interno della tua applicazione in qualsiasi luogo tu ritenga necessario. E ovviamente dovresti sapere che questo è solo un virus di prova e che l'antivirus non troverà tutti i possibili malware, quindi non potrai mai offrire una protezione completa.

    
risposta data 30.04.2016 - 07:57
fonte

Leggi altre domande sui tag