2014-10-04 13 views
10

C'è un problema di sicurezza nel kernel di linux, che riguarda la maggior parte dei dispositivi Android e in pratica consente a qualsiasi utente di diventare root.Funziona come lo scaldasalviette (futex exploit)

Dal momento che sono un utente Linux per un po 'di tempo, sono molto curioso di come funziona questo exploit, soprattutto come posso verificare se il mio kernel nel mio PC (costruito su misura) o su uno dei miei server è vulnerabile a questo o non. C'è qualche codice sorgente (preferibilmente documentato) o dettagli dell'exploit in modo che io possa vedere come funziona? Sono riuscito a trovare solo le informazioni generiche o i binari a sorgente chiusa che sfruttano il bug e forniscono la root se eseguiti da qualsiasi utente, ma nessuna informazione di base o dettagli su quale parte del kernel ha il difetto e come è possibile farlo.

Finora ho trovato questo interessante articolo http://tinyhack.com/2014/07/07/exploiting-the-futex-bug-and-uncovering-towelroot/ che spiega che utilizza lo stack hack, chiamando determinate syscalls per ottenere qualcosa in una pila di futex_queue. Mentre capisco come funziona, non ho idea di come cambiare qualcosa in quello stack possa effettivamente elevare i privilegi del processo corrente. Quello che ho trovato interessante è che questo ragazzo dice che dal kernel 3.13 qualcosa è cambiato e ora è necessaria una tecnica diversa per sfruttarlo. Significa che questo era non ancora corretto ed è ancora sfruttabile nel recente kernel che può essere scaricato da kernel.org?

+0

È possibile ottenere una risposta migliore su http://security.stackexchange.com/ - chiedere e contrassegnare per migrare, se lo si desidera. – SilverlightFox

risposta

0

Come ha detto SilverlightFox, la parte di sicurezza di stackexchange (http://security.stackexchange.com/) probabilmente sarebbe meglio per questo, ma qui non va nulla.

Dal suono di esso, questo hack sembra essere un modo per elevare il terminale/kernel di qualsiasi utente per un dato periodo di tempo, che è, per non dire di meno, cattivo. La mia idea di come funzionerebbe questo tipo di problema è un programma che sovraccarica lo futex_queue chiamando quelli detti syscalls e quindi fornisce, temporaneamente, l'utente con accesso superutente.

Ho controllato il collegamento fornito e ho rilevato che richiede il login remoto da SSH o procedure simili. In una console screenshot, utilizza la linea gcc -o xpl xpl.c -lpthread, il che dimostra che questo exploit è fatto in C. E una citazione direttamente da questo articolo:

Questo è in realtà in cui il bug è: c'è un caso in cui il cameriere è ancora collegato nell'elenco dei camerieri e la funzione restituisce. Si noti che uno stack del kernel è completamente separato dallo stack dell'utente. Non puoi influenzare lo stack del kernel semplicemente chiamando la tua funzione nello spazio utente. Puoi manipolare il valore dello stack del kernel eseguendo syscall.

Nell'immagine a http://www.clevcode.org/cve-2014-3153-exploit/, mostra l'uscita del towelroot sfruttare, testare i limiti indirizzo e entrare nella struttura di task per generare una shell superutente. Inoltre, nell'articolo tinyhack, offre una semplice ricostruzione della base di questo exploit, quindi consiglierei di dare un'occhiata a questo e di lavorare su di esso.

Non conosco nessuna forma chiara di test se il sistema è vulnerabile, quindi il meglio che posso dire è quello di provare e rafforzare i sistemi e fare tutto il possibile per tenerlo protetto. Ad ogni modo, non penso che qualcuno possa facilmente accedere alle porte server e ai login per eseguire questo exploit sul tuo sistema.

Cheers!

Problemi correlati