Exim4: remote root vulnerability

Lo scorso 7 dicembre sulla mailing list Exim-dev[1] è stata segnalata la rilevazione di un attacco portato a termine con successo, al momento, contro un sistema Debian Lenny che installa il "mail transfer agent" (MTA) exim4 alla versione 4.69-9 [2]. Sembrerebbe che, almeno in parte, l'attacco sia portabile anche alla versione 4.72-2 di exim4 [3] che equipaggia tutte le altre distribuzioni Debian. La notizia è stata prontamente ripresa da Planet Debian [4] ed è attualmente attivamente discussa in [1].

Dagli elementi preliminarmente disponibili, sembrerebbe si tratti di un attacco (eseguibile anche da remoto) che sfrutta varie tecniche: la prima è il "buffer overflow"[5] per l'esecuzione di codice arbitrario tramite exim4; la seconda è una "privilege escalation"[6] ottenuta sfruttando una vulnerabilità di exim4 per eseguire codice arbitrario come utente privilegiato ('root').

In altri termini, l'attaccante invia alla vittima un messaggio di posta le cui dimensioni eccedono la dimensione massima gestita da exim4. Sfruttando verosimilmente una imperfezione del programma nel gestire tale eccezione, riesce a fargli eseguire codice arbitrario inviato e contenuto nel messaggio di attacco. Il codice arbitrario riuscirebbe, con i privilegi dell'utente 'Debian-exim' con cui exim4 è eseguito, a scrivere alcuni file nella directory /var/spool/exim4 ed a prendere il controllo di exim4 come utente 'Debian-exim'.

Il codice attaccante, a questo punto, sembra sfruttare la caratteristica di exim4 di possedere il "set user bit" (suid) impostato:
$ ls -la /usr/sbin/exim4
-rwsr-xr-x 1 root root 695968 30 set 2008 /usr/sbin/exim4

Tale privilegio permetterebbe di sfruttare un'ulteriore caratteristica del programma, ovvero quella di poter impostare i riferimenti ai file di configurazione con l'opzione -C e di poterlo fare con i privilegi dell'utente 'root' (come indicato nella pagina di manuale di exim4). In particolare, sembrerebbe che, inserendo opportune stringhe nel file passato con l'opzione -C, sia possibile far eseguire a exim4 codice arbitrario con i privilegi dell'amministratore di sistema (utente 'root').

A questo punto l'attacco è completato e l'attaccante può ottenere il pieno controllo della vittima.

Al momento è preliminare ipotizzare uno scenario di impatto, ma - dai dati disponibili - sembrerebbe la situazione meriti la massima attenzione degli amministratori dei sistemi potenzialmente interessati.

Resta inteso che l'analisi sopra indicata è ovviamente preliminare e potrà essere approfondita man mano che maggiori elementi si renderanno disponibili.

[1] http://www.exim.org/lurker/message/20101207.215955.bb32d4f2.en.html
[2] http://packages.debian.org/lenny/exim4
[3] http://packages.debian.org/search?suite=all&searchon=names&keywords=exim4
[4] http://blog.steve.org.uk/the_remote_root_hole_in_exim4_is_painful.html
[5] http://it.wikipedia.org/wiki/Buffer_overflow
[6] http://it.wikipedia.org/wiki/Privilege_escalation

Commenti

L'articolo prende spunto da

L'articolo prende spunto da questa discussione nel forum (aperta dallo stesso Aki):
http://forum.debianizzati.org/viewtopic.php?f=36&t=42199&start=0&hilit=exim4+exploit