Quanto è dannosa oggi una vulnerabilità legata alla dereferenziazione del puntatore NULL?

2

Recentemente ho letto delle implicazioni delle dereferenze con il puntatore NULL nel codice del kernel (spesso LKM / moduli), privilegiando i privilegi per root tramite mmap() ing la pagina NULL e poi memcpy() un po 'di shellcode che chiama commit_creds(prepare_kernels_cred(0)); (o qualsiasi altra cosa) da user-land per far sì che il codice successivo venga eseguito nel contesto dell'utente root (in genere per generare una shell di root). Questo era un metodo di sfruttamento molto popolare circa oltre un decennio fa.

È stata introdotta una mitigazione, mmap_min_addr , che impedisce l'introduzione di mmap() di pagine basse e le persone (ovviamente) hanno trovato il modo di aggirarlo (gli articoli che ho letto erano tutti nel 2009). Tuttavia, ci sono (apparentemente) metodi (conosciuti o pubblici) per aggirare questa mitigazione (e ovviamente altri problemi di indurimento del kernel causano errori di memoria come questo a diventare più difficili o completamente non fattibili).

Dato questo, quanto dannose sono le dereferenze con puntatore NULL oggi? Sembra che la cosa migliore da sfruttare sia il denial-of-service (in un kernel moderno con mmap_min_addr abilitato [forse trascurando ASLR, DEP / NX, SELinux / AppArmor / PaX / grsec, ecc.]). È possibile sfruttare l'escalation dei privilegi in particolari ambienti? (Esclusa la disabilitazione di mmap_min_addr , ovviamente). E se sì, quali sono alcuni esempi?

    
posta Phizo 25.01.2018 - 14:09
fonte

1 risposta

3

In questi giorni le deviazioni con puntatore nullo possono essere utilizzate con direttamente come condizioni di negazione del servizio, poiché la pagina zero è sempre protetta dall'assegnazione. Vi sono casi in cui il puntatore dereferenziato non è nullo, ma fa riferimento alla memoria deallated (ad es. UAF in una JIT), e questi in genere possono essere sfruttati per ottenere LPE o RCE in alcuni casi - il secondo è principalmente applicabile alle vulnerabilità del motore JavaScript.

Detto questo, l'attivazione di un deref null può spesso avere effetti secondari al di fuori dell'ambito del DoS, ad es. produrre una traccia stack o core dump che perde dati sensibili in modo che un utente non privilegiato possa accedervi.

    
risposta data 25.01.2018 - 14:23
fonte

Leggi altre domande sui tag