RouterOS-i backport haavatavus seab ohtu sadu tuhandeid seadmeid

RouterOS-i backport haavatavus seab ohtu sadu tuhandeid seadmeid

Võimalus RouterOS-il (Mikrotik) põhinevaid seadmeid eemalt alandada seab ohtu sadu tuhandeid võrguseadmeid. Haavatavus on seotud Winboxi protokolli DNS-i vahemälu mürgitamisega ja võimaldab seadmesse laadida aegunud (vaikeparooli lähtestamisega) või muudetud püsivara.

RouterOS-i backport haavatavus seab ohtu sadu tuhandeid seadmeid

Haavatavuse üksikasjad

RouterOS-i terminal toetab DNS-i otsimise käsku lahendamise.

RouterOS-i backport haavatavus seab ohtu sadu tuhandeid seadmeid

Seda päringut käsitleb binaar, mida nimetatakse lahendajaks. Resolver on üks paljudest kahendfailidest, mis loovad ühenduse RouterOS-i Winboxi protokolliga. Kõrgel tasemel saab Winboxi porti saadetud "sõnumeid" suunata RouterOS-i erinevatesse binaarfailidesse massiivipõhise nummerdamisskeemi alusel.

Vaikimisi on RouterOS-is DNS-serveri funktsioon keelatud.

RouterOS-i backport haavatavus seab ohtu sadu tuhandeid seadmeid

Isegi kui serveri funktsioon on keelatud, säilitab ruuter oma DNS-i vahemälu.

RouterOS-i backport haavatavus seab ohtu sadu tuhandeid seadmeid

Kui teeme päringu, kasutades näiteks example.com aadressi winbox_dns_request, salvestab ruuter tulemuse vahemällu.

RouterOS-i backport haavatavus seab ohtu sadu tuhandeid seadmeid

Kuna saame määrata DNS-serveri, mille kaudu päring peaks minema, on valede aadresside sisestamine triviaalne. Näiteks saate konfigureerida DNS-serveri juurutamise alates Philip Klauset alati vastata A-kirjega, mis sisaldab IP-aadressi 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()

Kui otsite nüüd Winboxi abil saiti example.com, näete, et ruuteri DNS-i vahemälu on mürgitatud.

RouterOS-i backport haavatavus seab ohtu sadu tuhandeid seadmeid

Muidugi pole saidi example.com mürgitamine eriti kasulik, kuna ruuter seda tegelikult ei kasuta. Siiski peab ruuter pääsema juurde upgrade.mikrotik.com, cloud.mikrotik.com, cloud2.mikrotik.com ja download.mikrotik.com. Ja tänu veel ühele veale on võimalik neid kõiki korraga mürgitada.

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

Ruuter nõuab ühte luba ja me anname viis tagasi. Ruuter ei salvesta kõiki neid vastuseid õigesti vahemällu.

RouterOS-i backport haavatavus seab ohtu sadu tuhandeid seadmeid

Ilmselgelt on see rünnak kasulik ka siis, kui ruuter toimib DNS-serverina, kuna see võimaldab rünnata ruuteri kliente.

See rünnak võimaldab teil ära kasutada ka tõsisemat haavatavust: RouterOS-i versiooni alandada või tagasiportida. Ründaja taasloob värskendusserveri loogika, sealhulgas muudatuste logi, ja sunnib RouterOS-i nägema aegunud (haavatavat) versiooni ajakohasena. Oht seisneb siin selles, et versiooni "värskendamisel" lähtestatakse administraatori parool vaikeväärtusele - ründaja saab süsteemi sisse logida tühja parooliga!


Rünnak on sellest hoolimata üsna toimiv autor rakendab veel mitmeid vektoreid, sealhulgas neid, mis on seotud tagaukse manustamine püsivarasse, kuid see on juba üleliigne tehnika ja selle kasutamine ebaseaduslikel eesmärkidel on ebaseaduslik.

kaitse

Lihtsalt Winboxi keelamine võimaldab teil end nende rünnakute eest kaitsta. Vaatamata Winboxi kaudu haldamise mugavusele on parem kasutada SSH-protokolli.

Allikas: www.habr.com

Lisa kommentaar