RouterOS:n Backport-haavoittuvuus asettaa satoja tuhansia laitteita vaaraan

RouterOS:n Backport-haavoittuvuus asettaa satoja tuhansia laitteita vaaraan

Mahdollisuus päivittää RouterOS:ään (Mikrotik) perustuvia laitteita etäkäyttöön asettaa satoja tuhansia verkkolaitteita vaaraan. Haavoittuvuus liittyy Winbox-protokollan DNS-välimuistin myrkytykseen, ja sen avulla voit ladata vanhentuneita (oletussalasanan palautuksilla) tai muokattuja laiteohjelmistoja laitteeseen.

RouterOS:n Backport-haavoittuvuus asettaa satoja tuhansia laitteita vaaraan

Haavoittuvuuden tiedot

RouterOS-pääte tukee DNS-haun solve-komentoa.

RouterOS:n Backport-haavoittuvuus asettaa satoja tuhansia laitteita vaaraan

Tämän pyynnön käsittelee binääri nimeltä solver. Resolver on yksi monista binääritiedostoista, jotka muodostavat yhteyden RouterOS:n Winbox-protokollaan. Korkealla tasolla Winbox-porttiin lähetetyt "viestit" voidaan reitittää RouterOS:n eri binääritiedostoihin taulukkopohjaisen numerointimallin perusteella.

Oletuksena RouterOS:ssä DNS-palvelinominaisuus on poistettu käytöstä.

RouterOS:n Backport-haavoittuvuus asettaa satoja tuhansia laitteita vaaraan

Kuitenkin, vaikka palvelintoiminto olisi poistettu käytöstä, reititin ylläpitää omaa DNS-välimuistiaan.

RouterOS:n Backport-haavoittuvuus asettaa satoja tuhansia laitteita vaaraan

Kun teemme pyynnön käyttämällä winbox_dns_request-osoitetta esimerkiksi example.com, reititin tallentaa tuloksen välimuistiin.

RouterOS:n Backport-haavoittuvuus asettaa satoja tuhansia laitteita vaaraan

Koska voimme määrittää DNS-palvelimen, jonka kautta pyyntö tulee kulkea, väärien osoitteiden syöttäminen on triviaalia. Voit esimerkiksi määrittää DNS-palvelimen toteutuksen kohteesta Philip Klausvastata aina A-tietueella, joka sisältää IP-osoitteen 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()

Jos nyt haet osoitteesta example.com Winboxilla, voit nähdä, että reitittimen DNS-välimuisti on myrkytetty.

RouterOS:n Backport-haavoittuvuus asettaa satoja tuhansia laitteita vaaraan

Tietenkään esimerkki.com-sivuston myrkyttäminen ei ole kovin hyödyllinen, koska reititin ei itse asiassa käytä sitä. Reitittimen on kuitenkin käytettävä upgrade.mikrotik.com-, cloud.mikrotik.com-, cloud2.mikrotik.com- ja download.mikrotik.com-sivustoja. Ja toisen virheen ansiosta on mahdollista myrkyttää ne kaikki kerralla.

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

Reititin pyytää yhtä lupaa, ja myönnämme viisi takaisin. Reititin ei tallenna kaikkia näitä vastauksia oikein välimuistiin.

RouterOS:n Backport-haavoittuvuus asettaa satoja tuhansia laitteita vaaraan

Ilmeisesti tämä hyökkäys on hyödyllinen myös, jos reititin toimii DNS-palvelimena, koska sen avulla voidaan hyökätä reitittimen asiakkaisiin.

Tämän hyökkäyksen avulla voit myös hyödyntää vakavampaa haavoittuvuutta: päivittää RouterOS:n versio alemmaksi tai siirtää sen takaisin. Hyökkääjä luo uudelleen päivityspalvelimen logiikan, mukaan lukien muutoslokin, ja pakottaa RouterOS:n pitämään vanhentuneen (haavoittuvan) version ajankohtaisena. Vaara tässä piilee siinä, että kun versio "päivitetään", järjestelmänvalvojan salasana palautetaan oletusarvoon - hyökkääjä voi kirjautua sisään järjestelmään tyhjällä salasanalla!


Hyökkäys on siitä huolimatta toimiva kirjailija toteuttaa useita muita vektoreita, mukaan lukien ne liittyvät takaoven upottaminen laiteohjelmistoon, mutta tämä on jo tarpeeton tekniikka ja sen käyttö laittomiin tarkoituksiin on laitonta.

suojaus

Yksinkertaisesti poistamalla Winboxin käytöstä voit suojautua näiltä hyökkäyksiltä. Huolimatta Winboxin hallinnon mukavuudesta, on parempi käyttää SSH-protokollaa.

Lähde: will.com

Lisää kommentti