I suggerimenti sono sempre ben accetti, specie se provengono da una fonte accreditata come quella del developer TheFlow, l’hacker che ha rivelato l’exploit del kernel per il firmware 7.55 della console PlayStation 4.
Il developer TheFlow è intervenuto su Twitter con un nuovo suggerimento, quello di sfruttare l’exploit con un altro bug, segno che la strada percorsa da SpecterDev e tihmstar non avrebbe portato ad alcun risultato.
Tip: Leverage that with another bug. https://t.co/mel4apfaJl
— Andy Nguyen (@theflow0) March 1, 2021
La vulnerabilità IPv6 utilizzata fino ad oggi anche sul firmware 7.02 viene meno, difatti l’hacker punta a sfruttare un problema diverso di FreeBSD, una patch per un overflow del buffer in ip6_get_prevhdr
. Il problema, nello specifico, viene descritto come segue:
Corregge un overflow del buffer in ip6_get_prevhdr
. Fare
mtod (m, char *) + len
Questo è sbagliato, un’opzione può essere posizionata in un altro mbuf della catena.
Se l’offset di un’opzione all’interno della catena è maggiore della lunghezza del primo mbuf in quella catena, stiamo leggendo/scrivendo un byte di dati controllati dal pacchetto oltre la fine del primo mbuf.
La lunghezza di questo primo mbuf dipende dal layout scelto dal driver di rete. Nel caso più difficile, allocherà un cluster da 2 KB, che è più grande della MTU Ethernet.
Ma c’è almeno un modo per sfruttare questo caso: inviando una speciale combinazione di frammenti IPv6 annidati, il pacchetto può controllare un buon gruppo di “len”.
Per fortuna, il pool di memoria contenente i cluster non incorpora l’intestazione del pool davanti agli elementi, quindi non è semplice prevedere cosa si trova in mtod (m, char *) + len
.
Tuttavia, inviando frammenti offensivi in un ciclo, è possibile mandare in crash il kernel – a un certo punto andremo a colpire strutture di dati importanti.
Per quanto ne so, PF protegge da questo caso difficile, perché prende a calci i frammenti annidati. NPF non protegge da questo. IPF non lo so.
Poi ci sono i casi più semplici, se la MTU è più grande di un cluster, o se il driver di rete non ha allocato un cluster, o forse se i frammenti vengono ricevuti tramite un tunnel; Non ho indagato su questi casi.
Modificare ip6_get_prevhdr
in modo che restituisca un offset nella catena e utilizzare sempre IP6_EXTHDR_GET
per ottenere un puntatore scrivibile. IP6_EXTHDR_GET
lascia M_PKTHDR
intatto.
Si spera che questo nuovo suggerimento possa permetterci di sfruttare l’exploit nel kernel ed eseguire finalmente l’agognato jailbreak sul firmware 7.55 della console PlayStation 4.
Fonte: wololo.net
Non c’e’ speranza per il FW 8.03?