Il ricercatore di sicurezza di Google Matthew Garrett ha scoperto una vulnerabilità zero-day nei router Smart Home TP-Link SR20. Dopo che la società non è riuscita a rispondere alla divulgazione privato, il ricercatore ha deciso di rendere pubblica la falla.
TP-Link SR20 vulnerabilità Panoramica tecnica
La vulnerabilità è una zero-day codice di esecuzione arbitraria di bug. I router TP-Link SR20 sono dual-band 2.4 GHz / 5 prodotti GHz adatti per il controllo di casa intelligente e dispositivi IoT. Supportano anche dispositivi che eseguono i protocolli ZigBee e Z-Wave.
Apparentemente, il ricercatore ha segnalato la falla di sicurezza per TP-Link in privato più di 90 giorni fa, ma ha ricevuto alcuna risposta. I tentativi di contattare la società in altri modi sono stati ritenuti senza successo:
Ho riferito l'accaduto TP-Link nel dicembre tramite il loro modulo di divulgazione della sicurezza, un processo che è stato reso difficile dalla “Descrizione dettagliata” campo si limita ai 500 caratteri. La pagina mi ha informato che avrei sentito di nuovo entro tre giorni lavorativi – un paio di settimane più tardi, con nessuna risposta, Ho twittato a loro per chiedere un contatto e sentito nulla di nuovo. il tentativo di qualcun altro di segnalare le vulnerabilità tddp ha avuto un esito simile, allora eccoci qua.
Per quanto riguarda la vulnerabilità in sé, il problema deriva da un processo che questi router sono molto frequenti. Il processo è noto come “tddp”, o Debug dispositivo protocollo TP-Link. Il processo viene eseguito a livello di root e può avviare due tipi di comandi. Il primo non richiede l'autenticazione, e il secondo non richieda.
Correlata: CVE-2.018-15.702: Vulnerabilità TP-LINK TL-WR841N Router Trovato
La vulnerabilità espone qualche tipo comandi uno. Uno di loro, comando 0x1f, richiesta 0x01, serve per la convalida di configurazione, come spiegato da Gareth.
Dumping tddp in Ghidra rende piuttosto facile trovare una funzione che chiama recvfrom(), la chiamata che copia le informazioni da una presa di rete. Esamina il primo byte del pacchetto e la utilizza per determinare quale protocollo è in uso, e passa il pacchetto a un dispatcher diverso a seconda della versione del protocollo. per la versione 1, il dispatcher appena guarda il secondo byte del pacchetto e chiama una funzione diversa a seconda del suo valore. 0x31 è CMD_FTEST_CONFIG, e questo è dove le cose si fanno super divertente, il ricercatore ha scritto.
Cosa succede dopo è che questa funzione analizza il pacchetto per un carico utile che contiene due stringhe separate da una virgola. La prima stringa è un nome di file, e il secondo è un configfile. Quindi chiama tddp_execCmd(“cd / tmp; TFTP -gr% s% s &”,luaFile,REMOTE_ADDRESS) che esegue il comando tftp in background.
Questo si collega alla macchina che ha inviato il comando e tenta di scaricare un file via TFTP corrispondente al nome del file inviato. Il processo tddp principale attende fino a 4 secondi per il file di apparire – una volta lo fa, si carica il file in un interprete Lua è inizializzato in precedenza, e chiama la funzione config_test() con il nome del file di configurazione e l'indirizzo remoto come argomenti.
Dal momento che config_test() è amministrato dal file scaricato dalla macchina remota, esecuzione di codice arbitrario nel all'interprete è consentito, che comprende il metodo os.execute esecuzione di comandi sull'host. Poiché tddp viene eseguito come root, si ottiene l'esecuzione di comandi arbitrari come root, Gareth ha concluso.
Un codice proof-of-concept è disponibile per la vulnerabilità di TP-Link SR20 casa intelligente router anche.