Un buon esempio di worm che si è auto-propagato e che ha come target una vulnerabilità specifica è stato Sasser che ha sfruttato una vulnerabilità in Windows per propagarsi.
L'autore del worm Sasser stava monitorando gli aggiornamenti delle versioni di Microsoft per Windows. Uno di questi stava riparando qualcosa a cui Microsoft si riferiva come una "vulnerabilità legata all'esecuzione di codice in modalità remota", che per un l'autore di malware legge "$$$ JACKPOT! $$$". Scaricando ed esaminando l'aggiornamento ha scoperto come funziona esattamente il bug.
Ogni installazione di Windows ha un programma in background chiamato "Servizio sottosistema dell'autorità di sicurezza locale" (lsass.exe) che inizia con il sistema e ascolta la porta 445. Qualsiasi altro sistema su Internet può connettersi a questo servizio. Tuttavia, non possono fare nulla a meno che non inviino le credenziali di accesso corrette, quindi questo servizio è solitamente innocuo. Ma Microsoft ha rilevato e corretto un bug in questo programma: quando invii un messaggio appositamente predisposto, un overflow del buffer avverrà e parti di questo messaggio saranno eseguite come un programma.
Quindi l'autore ha scritto un programma che (grossolanamente semplificato):
- si collega a indirizzi IP casuali, porta 445
- invia il messaggio dannoso incluso il proprio codice
Quando il sistema non ha ancora installato l'aggiornamento, eseguirà anche questo programma che quindi farebbe la stessa cosa lì.
Questo è fondamentalmente il modo in cui funzionano tutti i worm Internet. L'autore trova una vulnerabilità che consente di eseguire codice arbitrario. Scrivono un programma che cerca automaticamente i sistemi vulnerabili e quindi usa la vulnerabilità per introdurre una copia di se stessa nel sistema ed eseguirla.
Che cosa impariamo da questo? Installa velocemente tutti gli aggiornamenti rilasciati, perché nel momento in cui un produttore di software rilascia un aggiornamento, la vulnerabilità è nota e i black hat inizieranno a scrivere malware che lo sfrutta. Devi installare la patch prima che siano finiti!