Vulnerabilità del Kernel 2.6.17: Vmsplice()

Scoperta ormai da circa un mese, questa vulnerabilità permette l’esecuzione di codice arbitrario nella macchina vittima, a causa di un mancato controllo su di un puntatore user-defined.

G0tR00t

Ecco il listato di codice fs/splice.c) riguardante la vulnerabilità:


error = get_user(base, &iov->iov_base);
/* ... */
if (unlikely(!base)) {
error = -EFAULT;
break;
}
/* ... */
sd.u.userptr = base;
/* ... */
size = __splice_from_pipe(pipe, &sd, pipe_to_user);

In particolare, la funzione __splice_from_pipe() assume che i puntatori forniti come parametri siano validi. La funzione pipe_to_user() invece dereferenzia questi puntatori permettendo l’inclusione dati arbitrari nella memoria del Kernel.

Altre funzioni mancanti di validazione dei parametri sono
vmsplice_to_user()”, “get_iovec_page_array() e “copy_from_user_mmap_sem()”.

La vulnerabilità affligge le versioni del kernel comprese tra la 2.6.17 e 2.6.24.1 con il vmsplice() attivo, ma dopo la pubblicazione dell’exploit è stato subito rilasciato il kernel 2.6.24.2

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...