Linux: Amministrazione sistema, Documentazione, HowTo, Tutorial, Recensioni, Manuale, Programmi, Software
News Linux e curiosità dal mondo open source...

Archivio

Posts Tagged ‘kernel’

Exploit kernel Linux (security news)

17 luglio 2009 Nessun commento

Brad Spengler noto  sviluppatore che lavora al progetto Grsecurity ha recentemente pubblicato un exploit che sfrutta una vulnerabilità nell’interfaccia di rete virtuale di tipo TUN/TAP nel kernel Linux 2.6.30 e 2.6.18, usati in Red Hat Enterprise Linux 5 (RHEL5).

La stessa vulnerabilità permette ad un malintenzionato di ottenere i privilegi di root e la scalata ai permessi. E’  anche stato dimostrato che tale exploit è anche in grado di bypassare il modulo di sicurezza SELinux. Secondo Spengler, la vulnerabilià è stata trovata solo in queste due versioni del kernel.  Il problema è causato da una funzione di ottimizzazione del GCC.

Il codice riportato di seguito è il responsabile del problema:

static unsigned int tun_chr_poll(struct file *file, poll_table * wait)

struct sock *sk = tun->sk; // initialize sk with tun->sk

if (!tun)
return POLLERR; // if tun is NULL return error
E’ proprio  l’istruzione if(!Tun) che se TUN è uguale a 0 (nullo) dovrebbe restituire un errore mentre invece il compilatore ottimizza quest’ultimo blocco eliminando il controllo per puntatori nulli  in quanto la variabile è già deferenziata. L’operazione più importante che viene eseguita sui puntatori e quella di dereferenziazione al fine di ottenere accesso all’oggetto puntato. A questo punto, il kernel potrebbe tentare di accedere all”indirizzo 0x00000000 e quindi un utente malintenzionato può cambiare il puntatore ed eseguire uno shellcode.

L’exploit quindi deve essere in grado di aprire il dispositivo /dev/net/tun e utilizzare i moduli caricabili da PulseAudio, che in alcune distribuzioni hanno il bit di SUID attivo che come affermato da Torvalds sembra proprio essere la vera causa del problema e non del kernel stesso in quanto il bit SUID rappresenta già un buco di sicurezza il quale consente all’utente di caricare i propri moduli.

Il codice deve essere in grado deve anche disattivare il “mmap_min_addr” che praticamente limita la quantità di spazio di indirizzamento di un processo.

Le prossimeversioni del kernel saranno compilate utilizzando l’opizione “FNO-eliminare-null” in modo che il compilatore non elimina i controlli per puntatori nulli.

Scarica il codice dell’exploit:

http://grsecurity.net/~spender/cheddar_bay.tgz