Riesci davvero a ottenere un trojan in un file di immagine e in tal caso come verrà eseguito?


11

Ho appena digitalizzato un paio di LP e avevo bisogno di alcune copertine. Il mio scanner non è abbastanza grande per scansionare l'album, quindi ho cercato e scaricato le immagini dalla rete.

Quando lo feci, Avast riferì che uno di loro conteneva il trojan "Win32: Hupigon-ONX" e lo mise immediatamente in quarantena. Non volendo correre rischi ho scaricato una copia diversa che è stata dichiarata pulita.

Questo era solo un falso positivo di Avast o potrebbe esserci davvero stato un trojan nel jpg?

Se ci fosse come sarebbe stato eseguito?

Devo ammettere che questo aspetto di trojan e virus mi ha sempre sconcertato. Come sviluppatore di software ho sempre controllato la lunghezza degli array, ecc., Quindi non vedo perché dovrebbero verificarsi cose come sovraccarichi del buffer. Capisco che le persone tagliano gli angoli e commettono errori e se il software è abbastanza complesso questi errori possono sfuggire.

Risposte:


11

Gli exploit nei file di immagine sfruttano i difetti di sovraccarico del buffer nel codice di elaborazione delle immagini del sistema operativo. Un paio di anni fa sono stati rilevati diversi difetti significativi di questo tipo nel livello GDI di Windows: le patch sono state rilasciate molto tempo fa, ma le immagini di exploit sono ancora là fuori o solo perché sono rimaste o nella speranza che colpiscano una macchina che non è ancora stata patchata .

La causa abituale di tale falla di sicurezza è il passaggio dei dati di immagine tra le funzioni nello stack di chiamate e il controllo non corretto della lunghezza massima dei dati. Questo può essere sfruttato da dati abilmente costruiti che sono sovradimensionati e si organizzano in modo tale da finire sovrascrivendo il codice successivo nel frame dello stack (sovrascrivendolo con altro codice) o sovrascrivendo i puntatori al codice che verrà utilizzato per chiamare altre funzioni o quando la funzione chiamata ritorna a è il chiamante (sovrascrivendo un tale puntatore per farlo puntare al codice di exploit), o sovrascrivendo i dati in modo tale da esporre un altro buco. Il metodo esatto varia in base alla falla di sicurezza in questione.

Le moderne CPU hanno una protezione che blocca la maggior parte di questi exploit se il codice lo supporta. Questo funziona dal programma / libreria che contrassegna esplicitamente quali delle sue pagine sono dati e quali sono codici - la CPU solleverà quindi un'eccezione se qualcosa in quelli che dovrebbero essere dati (come i dati di immagine) tenta di essere eseguito come codice. IIRC Vista e versioni successive e recenti di .Net hanno riadattato tutte le loro librerie per supportare questa protezione, ed è supportato anche da altri sistemi operativi, ma questo non ferma tutti questi exploit e funziona solo se esplicitamente attivato (altrimenti un molto vecchio codice si spezzerebbe).


9

Devo ammettere che questo aspetto di trojan e virus mi ha sempre sconcertato. Come sviluppatore di software ho sempre controllato la lunghezza degli array, ecc., Quindi non vedo perché dovrebbero verificarsi cose come sovraccarichi del buffer.

Bene, benvenuto nel mondo reale ;-). Buffer overflow & c. può accadere in molte lingue (specialmente in quelli con gestione manuale della memoria come il C), e come gli sviluppatori a fare errori, non accadrà.

Mentre normalmente un overflow del buffer si arresta in modo anomalo al programma (violazione della segmentazione o simile), può consentire a un utente malintenzionato di eseguire codice -> trojan attivato.

Per esempio:

http://www.microsoft.com/technet/security/bulletin/MS04-028.mspx

http://secunia.com/advisories/35216/

E per una spiegazione di come ciò consente l'esecuzione del codice:

/programming/460519/how-are-buffer-overflows-used-to-exploit-computers


So che accadono - è solo uno dei controlli di base che ho sempre fatto durante l'elaborazione dei dati - controlla di avere / allocato spazio sufficiente per i dati.
ChrisF

@ChrisF, il fatto che devi assicurarti di controllare (al contrario del "computer" è il problema stesso.
Zabba

@Zabba intendevo dire che "codifico il programma per verificare" durante l'elaborazione dei dati.
ChrisF,


2

Devo ammettere che questo aspetto di trojan e virus mi ha sempre sconcertato. Come sviluppatore di software ho sempre controllato la lunghezza degli array, ecc., Quindi non vedo perché dovrebbero verificarsi cose come sovraccarichi del buffer. Capisco che le persone tagliano gli angoli e commettono errori e se il software è abbastanza complesso questi errori possono sfuggire.

Forse stai controllando tutti i tuoi puntatori, array, ecc. Ma sei sicuro che anche tutti i programmatori di qualsiasi libreria di terze parti che potresti (un giorno) usare (un giorno) hanno fatto anche questo?

La soluzione più semplice per questo sarebbe scaricare un file come "image.jpg.exe" o qualcosa di simile invece di un'immagine reale.

I modi più avanzati per infettare il tuo PC sono già stati descritti qui (ad es. Buffer Overflow, ...)


1
Vero - ma cambio le opzioni della cartella per mostrare le estensioni. Sono sicuro che nascondere estensioni conosciute ha causato più problemi che risolve. In realtà non riesco a pensare a un problema che risolve effettivamente.
ChrisF

ack - è una delle prime opzioni che attivo, quando lavoro con Windows
Elvith

@ChrisF: Beh, ovviamente il problema che risolve è che altrimenti gli utenti possono cambiare accidentalmente l'estensione di un file quando lo rinominano. Ciò causa il problema familiare "L'icona del mio documento sembra divertente e non riesco più ad aprirlo. Aiuto!" :-) (e sì, a volte faccio supporto tecnico per la mia famiglia).
sleske,

@sleske - Windows 7 non seleziona l'estensione quando si rinomina un file.
ChrisF,

1
@ChrisF: Interessante, non lo sapevo. Tuttavia, era diverso: almeno Windows Server 2003 seleziona l'intero nome per una ridenominazione. E in ogni caso, se gli utenti possono modificare l'estensione, lo faranno :-).
sleske,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.