Vulnerabilitatea Backport în RouterOS pune în pericol sute de mii de dispozitive

Vulnerabilitatea Backport în RouterOS pune în pericol sute de mii de dispozitive

Posibilitatea de a downgradea de la distanță dispozitivele pe bază de RouterOS (Mikrotik) pune în pericol sute de mii de dispozitive de rețea. Vulnerabilitatea este legată de otrăvirea cache-ului DNS Winbox și permite încărcarea unui firmware învechit (cu resetarea parolei la cea „implicită”) sau modificat pe dispozitiv.

Vulnerabilitatea Backport în RouterOS pune în pericol sute de mii de dispozitive

Detalii despre vulnerabilitate

Terminalul RouterOS suportă comanda resolve pentru a căuta DNS.

Vulnerabilitatea Backport în RouterOS pune în pericol sute de mii de dispozitive

Această cerere este procesată de un fișier binar numit resolver. Resolverul este unul dintre cele multe fișiere binare conectate la protocolul Winbox de la RouterOS. La un nivel înalt, mesajele trimise pe portul Winbox pot fi rutate în diverse fișiere binare din RouterOS pe baza unei scheme de numerotare bazate pe tablouri.

Prin default, funcția de server DNS este dezactivată în RouterOS.

Vulnerabilitatea Backport în RouterOS pune în pericol sute de mii de dispozitive

Cu toate acestea, chiar și cu funcția serverului dezactivată, routerul își menține propriul cache DNS.

Vulnerabilitatea Backport în RouterOS pune în pericol sute de mii de dispozitive

Când facem o cerere folosind winbox_dns_request, de exemplu, example.com, routerul va cachea rezultatul.

Vulnerabilitatea Backport în RouterOS pune în pericol sute de mii de dispozitive

Deoarece putem specifica serverul DNS prin care trebuie să treacă cererea, introducerea adreselor greșite este ușor de realizat. De exemplu, putem configura implementarea serverului DNS de la Philipp Klaus, pentru a răspunde întotdeauna cu un răspuns A care conține adresa 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()

Acum, dacă căutăm example.com folosind Winbox, putem vedea că cache-ul DNS al routerului este otrăvit.

Vulnerabilitatea Backport în RouterOS pune în pericol sute de mii de dispozitive

Desigur, otrăvirea example.com nu este foarte utilă, deoarece routerul efectiv nu îl va folosi. Cu toate acestea, routerul trebuie să acceseze upgrade.mikrotik.com, cloud.mikrotik.com, cloud2.mikrotik.com și download.mikrotik.com. Și grație unei alte erori, există posibilitatea de a le otrăvi pe toate simultan.

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()

Routerul solicită o singură permisiune, iar noi oferim cinci înapoi. Routerul stochează greșit toate aceste răspunsuri.

Vulnerabilitatea Backport în RouterOS pune în pericol sute de mii de dispozitive

Este evident că acest atac este, de asemenea, util dacă routerul funcționează ca un server DNS, deoarece permite atacarea clienților routerului.

De asemenea, acest atac permite exploatarea unei vulnerabilități mai severe: realizarea unui downgrade sau a unei retroportări a versiunii RouterOS. Atacatorul re-creează logica serverului de actualizări, inclusiv changelog-ul, și forțează RouterOS să perceapă o versiune învechită (vulnerabilă) ca fiind actuală. Pericolul constă în faptul că, în timpul "actualizării" versiunii, parola administratorului este resetată la valoarea "default" — atacatorul poate accesa sistemul cu o parolă goală!

Redați video

Atacul este complet funcțional, în ciuda faptului că autorul implementează și alte câteva vectori, inclusiv și incorporarea unui backdoor în firmware, dar aceasta este deja o tehnică redundantă și utilizarea sa în scopuri nelegitime este ilegală.

Protección

Dezactivarea simplă a Winbox-ului ajută la protejarea împotriva acestor atacuri. În ciuda comodității oferite de administrarea prin Winbox, este mai bine să folosești protocolul SSH.

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster