La vulnerabilità del backport in RouterOS mette a rischio centinaia di migliaia di dispositivi

La vulnerabilità del backport in RouterOS mette a rischio centinaia di migliaia di dispositivi

La possibilità di effettuare il downgrade da remoto dei dispositivi basati su RouterOS (Mikrotik) mette a rischio centinaia di migliaia di dispositivi di rete. La vulnerabilità è associata all'avvelenamento della cache DNS del protocollo Winbox e consente di caricare sul dispositivo firmware obsoleti (con reimpostazione della password predefinita) o modificati.

La vulnerabilità del backport in RouterOS mette a rischio centinaia di migliaia di dispositivi

Dettagli sulla vulnerabilità

Il terminale RouterOS supporta il comando di risoluzione per la ricerca DNS.

La vulnerabilità del backport in RouterOS mette a rischio centinaia di migliaia di dispositivi

Questa richiesta è gestita da un binario chiamato risolutore. Resolver è uno dei tanti binari che si collegano al protocollo Winbox di RouterOS. Ad alto livello, i "messaggi" inviati alla porta Winbox possono essere instradati a vari binari in RouterOS in base a uno schema di numerazione basato su array.

Per impostazione predefinita, RouterOS ha la funzionalità del server DNS disabilitata.

La vulnerabilità del backport in RouterOS mette a rischio centinaia di migliaia di dispositivi

Tuttavia, anche quando la funzione server è disattivata, il router mantiene la propria cache DNS.

La vulnerabilità del backport in RouterOS mette a rischio centinaia di migliaia di dispositivi

Quando effettuiamo una richiesta utilizzando winbox_dns_request per esempio example.com, il router memorizzerà nella cache il risultato.

La vulnerabilità del backport in RouterOS mette a rischio centinaia di migliaia di dispositivi

Poiché possiamo specificare il server DNS attraverso il quale deve passare la richiesta, inserire indirizzi errati è banale. Ad esempio, puoi configurare l'implementazione di un server DNS da Filippo Klausdi rispondere sempre con un record A contenente l'indirizzo IP 192.168.88.250.

def dns_response(data):
    request = DNSRecord.parse(data)
    reply = DNSRecord(DNSHeader(
        id=request.header.id, qr=1, aa=1, ra=1), q=request.q)
    qname = request.q.qname
    qn = str(qname)
    reply.add_answer(RR(qn,ttl=30,rdata=A("192.168.88.250")))
    print("---- Reply:n", reply)
    return reply.pack()

Ora se cerchi example.com utilizzando Winbox, puoi vedere che la cache DNS del router è avvelenata.

La vulnerabilità del backport in RouterOS mette a rischio centinaia di migliaia di dispositivi

Naturalmente, avvelenare example.com non è molto utile poiché il router non lo utilizzerà effettivamente. Tuttavia, il router deve accedere a upgrade.mikrotik.com, cloud.mikrotik.com, cloud2.mikrotik.com e download.mikrotik.com. E grazie a un altro errore è possibile avvelenarli tutti in una volta.

def dns_response(data):
    request = DNSRecord.parse(data)
    reply = DNSRecord(DNSHeader(
        id=request.header.id, qr=1, aa=1, ra=1), q=request.q)
    qname = request.q.qname
    qn = str(qname)
    reply.add_answer(RR(qn,ttl=30,rdata=A("192.168.88.250")))
    reply.add_answer(RR("upgrade.mikrotik.com",ttl=604800,
        rdata=A("192.168.88.250")))
    reply.add_answer(RR("cloud.mikrotik.com",ttl=604800,
        rdata=A("192.168.88.250")))
    reply.add_answer(RR("cloud2.mikrotik.com",ttl=604800,
        rdata=A("192.168.88.250")))
    reply.add_answer(RR("download.mikrotik.com",ttl=604800,
        rdata=A("192.168.88.250")))
    print("---- Reply:n", reply)
    return reply.pack()

Il router richiede un'autorizzazione e noi ne concediamo cinque. Il router non memorizza correttamente nella cache tutte queste risposte.

La vulnerabilità del backport in RouterOS mette a rischio centinaia di migliaia di dispositivi

Ovviamente questo attacco è utile anche se il router funge da server DNS, poiché consente di attaccare i client del router.

Questo attacco permette anche di sfruttare una vulnerabilità più grave: effettuare il downgrade o il backport della versione di RouterOS. L'aggressore ricrea la logica del server di aggiornamento, incluso il registro delle modifiche, e costringe RouterOS a percepire la versione obsoleta (vulnerabile) come attuale. Il pericolo qui sta nel fatto che quando la versione viene "aggiornata", la password dell'amministratore viene ripristinata al valore predefinito: un utente malintenzionato può accedere al sistema con una password vuota!


L'attacco funziona abbastanza, nonostante ciò autore implementa molti altri vettori, compresi quelli correlati a incorporando una backdoor nel firmware, ma questa è già una tecnica ridondante e il suo utilizzo per scopi illegittimi è illegale.

protezione

La semplice disattivazione di Winbox ti consente di proteggerti da questi attacchi. Nonostante la comodità dell'amministrazione tramite Winbox, è preferibile utilizzare il protocollo SSH.

Fonte: habr.com

Aggiungi un commento