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

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

La possibilità di effettuare il downgrade remoto dei dispositivi basati su RouterOS (Mikrotik) mette a rischio centinaia di migliaia di dispositivi di rete. La vulnerabilità è legata al poisoning della cache DNS del protocollo Winbox e consente di caricare un firmware obsoleto (con reset della password a quella predefinita) o modificato sul dispositivo.

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

Dettagli sulla vulnerabilità

Il terminale RouterOS supporta il comando di risoluzione per cercare DNS.

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

Questa richiesta è gestita da un file binario chiamato resolver. Il resolver è uno dei molti file binari collegati al protocollo Winbox di RouterOS. A un livello alto, i 'messaggi' inviati alla porta Winbox possono essere instradati in diversi file binari in RouterOS basandosi su uno schema di numerazione array.

Per default, la funzione del server DNS è disabilitata in RouterOS.

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

Tuttavia, anche con la funzione del server disabilitata, il router mantiene la propria cache DNS.

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

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

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

Poiché possiamo specificare il server DNS attraverso cui deve passare la richiesta, inserire indirizzi errati è banale. Ad esempio, è possibile configurare un'implementazione del server DNS di Filippa Klaus, per 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 usando Winbox, puoi vedere che la cache DNS del router è stata avvelenata.

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

Certo, l'avvelenamento di example.com non è molto utile, poiché il router non lo utilizzerà effettivamente. Tuttavia, il router deve fare riferimento a upgrade.mikrotik.com, cloud.mikrotik.com, cloud2.mikrotik.com e download.mikrotik.com. E grazie a un altro errore, c'è la possibilità di avvelenarli tutti contemporaneamente.

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 forniamo cinque risposte. Il router memorizza nella cache in modo errato tutte queste risposte.

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

È evidente che questo attacco è utile anche se il router funge da server DNS, poiché consente di attaccare i clienti del router.

Questo attacco permette anche di sfruttare una vulnerabilità più grave: eseguire il downgrade o il backporting della versione di RouterOS. L'attaccante ricrea la logica del server di aggiornamenti, incluso il changelog, e costringe RouterOS a percepire una versione obsoleta (vulnerabile) come attuale. Il pericolo qui è che durante l'"aggiornamento" della versione, la password dell'amministratore viene reimpostata sul valore "predefinito" — l'attaccante può accedere con una password vuota!

Riproduci video

L'attacco funziona perfettamente, nonostante l'autore implementi anche altri vettori, compresi l'inserimento di un backdoor nel firmware, ma questa è già una tecnica eccessiva e il suo utilizzo per scopi illegittimi è contro la legge.

Sicurezza

Disattivare Winbox è una semplice misura di protezione contro questi attacchi. Nonostante la facilità di gestione tramite Winbox, è consigliabile usare il protocollo SSH.

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster