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.
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










0 risposte finora ↓
Non ci sono ancora commenti... Inizia tu riempiendo il modulo sottostante.