2012-07-21 10 views
6

Quali buchi di sicurezza possono apparire sul mio sito includendo immagini esterne tramite il tag img e come evitarli?Vulnerabilità delle immagini esterne

che sto attualmente solo controllando l'estensione e mime-type di immagine su presentazione (che può essere cambiato dopo URL viene presentato) e URL è sterilizzate prima di metterlo nel attributo src.

+2

Posso chiederti come stai controllando l'estensione in modo specifico e quando dici che le cose possono essere cambiate dopo che l'URL è stato inviato, intendi dall'utente o da te? – Rhys

+0

Sicuramente dall'utente (proprietario del server in cui è memorizzata l'immagine). Non è così difficile mettere un AddHandler in .htaccess e contrassegnare .jpeg come eseguibile. Tutti gli sniffer web sono fatti in questo modo – Noobie

risposta

4

Probabilmente c'è una differenziazione da fare qui tra chi è è a rischio.

Se tutto ciò che stai facendo è archiviare gli URL e non caricare immagini sul tuo server, allora il tuo sito è probabilmente sicuro e qualsiasi potenziale rischio è per i tuoi utenti che visualizzano il tuo sito.

In sostanza, ti stai affidando all'affidabilità dei produttori di browser. Cose potrebbe essere andrebbe bene, ma se dovesse sorgere un buco di sicurezza in alcuni browser che uno degli utenti usa che comporta l'analisi errata di immagini contenenti codice dannoso, allora saranno gli utenti a pagare per questo (potresti trovare GIFAR interessante).

Si dipende se i produttori di browser sono sicuri di creare software sicuro e se si ritiene che i propri utenti non debbano caricare URL per immagini che potrebbero contenere exploit per determinati browser. Ciò che potrebbe essere sicuro ora potrebbe non essere sicuro venire alla prossima versione.

+0

Grazie! Per la bella risposta e per condividere informazioni su GIFAR – Noobie

3

I fori principali che possono essere esposti sono quelli in cui le immagini danneggiate causano overflow del buffer all'interno del browser, consentendo l'esecuzione di codice arbitrario.

Se avete deciso di mettere solo le immagini in un tag <img> ci shoudln't essere eventuali vulnerabilità in materia di invio di tipi MIME alternativi, ma mai sottovalutare la stupidità di alcuni sviluppatori di browser web ...

+0

Quindi il problema principale sono i browser? Ci sono alcuni modi per proteggere queste immagini esterne o qualcosa del genere? – Noobie

+1

Scaricateli, scannerizzateli per rilevare vulnerabilità note. Ma temo che nessuno lo faccia, questo è normalmente il motivo per cui è così importante usare effettivamente i browser sicuri. Vorrei che ci fossero alcuni rapporti/progetti per scoprire quanto siano sicuri oggi tutti i browser web. Quando vedo la frequenza con cui il mio sistema operativo si aggiorna, il browser dovrebbe aggiornarsi ogni due giorni, direi. – hakre

3

Bene , ovviamente, non stai facendo alcun controllo sui dati, quindi i dati possono essere qualsiasi cosa (il tipo mime riportato dal server remoto non dice necessariamente la verità). Inoltre, come hai detto, i dati sul server remoto possono essere modificati poiché non lo guardi mai dopo l'invio.

In questo modo, se il collegamento viene inserito, diciamo un < img src = "..."/>, quindi qualsiasi vulnerabilità che un browser potrebbe avere nella gestione delle immagini può essere sfruttata.

"Sanitizzare" l'URL non aiuta con niente: qualcuno che invia un collegamento che punta a un'immagine "cattiva" non attaccherà il proprio server.

+0

Che dire di CSRF? XSS? – Noobie

+0

E che tipo di controlli devo fare sui dati? – Noobie