2012-03-12 10 views
38

Ho visto di recente il video this di un esperto finlandese di sicurezza internet. Intorno all'undicesimo minuto, parla di un virus che è nascosto in un'immagine e viene eseguito quando l'immagine sta per essere visualizzata.Come può esistere un virus in un'immagine?

mi chiedo come fanno tecnicamente fanno una cosa del genere, voglio dire come mai il virus è eseguito, quando l'immagine deve essere visualizzata e come mai l'immagine non è compromessa in qualche modo. Ho pensato che il computer prima guardasse l'estensione, quindi la aprisse con il programma appropriato e lascia che il programma funzioni da solo (e non mi aspetto che il normale visualizzatore di immagini sia in grado di eseguire un virus dentro di sé). Ovviamente non funziona così, ma nessuno che ho chiesto potrebbe aiutarmi con questo.

Quindi qualcuno sa come fanno a fare questo, il principio? Grazie mille.

+3

http://en.wikipedia.org/wiki/Buffer_overflow, si è verificato in numerose librerie di lettura di immagini. –

+0

Con sovraccarico del buffer, è considerato il primo problema di sicurezza classico. Consiglio di leggere questo libro: http: //www.amazon.com/Deadly-Sins-Software-Programmazione sicurezza/dp/0072260858 Supponiamo che l'immagine sia 10k e che l'agente accettante impieghi solo 9k e che l'agente impieghi solo 9k, il rimanente ora sovrascrive gli indirizzi di memoria adiacenti. Supponiamo che quelle siano password, che tu sia un destino. La tua password è cambiata. – CppLearner

+0

@CppLearner Hai una fonte per il reclamo "n. 1"? Ho sempre sentito che le iniezioni SQL sono # 1 con un ampio margine (ma allo stesso modo non ho una fonte a portata di mano). ** MODIFICA ** Secondo OWASP Top 10, SQLI è # 1 * per le applicazioni Web *. Ancora nessuna fonte di vulnerabilità generale. –

risposta

38

Hai ragione che il sistema operativo sceglierà un programma e chiederà di aprire l'immagine. Il sistema operativo non chiederà al programma di eseguire l'immagine - sarebbe una sciocchezza.

Tuttavia, le immagini sono formati complessi e spesso contengono metadati e altre parti non mostrate direttamente: è possibile nascondere elementi senza modificare l'immagine sullo schermo. Quindi potrebbero esserci dati ostili che si nascondono all'interno del file immagine.

Inoltre, il programma può presentare bug, in particolare buffer overflows. In breve, un virus può sfruttarlo inserendo dati troppo grandi nelle sezioni dei metadati: più grande del programma che decodifica l'immagine si aspetta. I buffer interni si sovrappongono e con sufficiente abilità, uno scrittore di virus è in grado di mettere il codice eseguibile nel posto giusto in memoria in modo che il programma che decodifica l'immagine finisca nello eseguendo il codice. In questo modo un file innocente e "morto" come un'immagine può ospitare un exploit.

+10

-1 ... Cosa saprebbe Matt Damon in merito ai buffer overflow ?! –

+0

@KonradRudolph: heh, non molto credo :-) Ho solo cercato di indicarlo nella giusta direzione descrivendo all'incirca quello che succede - il principio come lo chiama Joe. –

+0

@KonradRudolph: Ho preso la battuta :-) –

3

Non deve essere visualizzato, deve essere letto.

Il sistema operativo potrebbe disporre di un thread di generazione di miniature che analizzerà tutte le immagini che trova. Un overflow del buffer in quel codice consentirà l'esecuzione del codice senza l'intervento dell'utente.

Questo vale per qualsiasi file con qualsiasi forma di funzione automatica di lettura, per estrarre le proprietà di un mp3, indice di un PDF, ecc

+0

Ecco un collegamento alla vulnerabilità che ha reso possibile l'esecuzione di codice in modalità remota semplicemente aprendo la cartella in cui si trovava il file dannoso http://technet.microsoft.com/en-us/security/bulletin/ms04-028. – ixe013

2

Un virus può negozio informazioni in un'immagine, e può sfruttare un vulnerabilità in un programma di visualizzazione di immagini. Non è in grado di "infettare" un'immagine, al punto di alterare pericolosamente un'immagine in modo tale che il programma che probabilmente lo aprirà verrà sovvertito e innescherà un exploit in quel processo.

Se un virus inserisce dati malformati in un'immagine per sfruttare il programma X e l'immagine viene aperta nel programma Y, è probabile che l'immagine non venga renderizzata perché troppo malformata o renderizzata come innocente o un'immagine dall'aspetto casuale in quel programma.

Il difetto, come tutte queste cose, non è nel formato dell'immagine, ma piuttosto nell'implementazione del decodificatore dell'immagine.

+2

Modifica di un file in modo da causare un comportamento malevolo - perché non si chiama "infezione"? –

+0

@BenVoigt, non capisco cosa intendi ... perché la chiami "infezione"? Il file viene scaricato da Internet. Finché non lo apri, viene effettivamente messo in quarantena. – Pacerier

+0

@Pacerider: questo è ciò che significa quarantena. Ma non capisco come sia collegato al mio commento. Un file infetto in quarantena è ancora un file infetto. E il tuo concetto di quarantena è fuorviante ... Non è un'azione esplicita dell'utente che apre il file, ma la generazione delle miniature. Per mettere effettivamente in quarantena il file è necessario negare il permesso di lettura. –

Problemi correlati