Ang kahinaan sa backport sa RouterOS ay naglalagay ng daan-daang libong device sa panganib

Ang kahinaan sa backport sa RouterOS ay naglalagay ng daan-daang libong device sa panganib

Ang kakayahang malayuang mag-downgrade ng mga device batay sa RouterOS (Mikrotik) ay naglalagay ng daan-daang libong network device sa panganib. Ang kahinaan ay nauugnay sa pagkalason sa DNS cache ng Winbox protocol at pinapayagan kang mag-load ng luma (na may default na pag-reset ng password) o binagong firmware sa device.

Ang kahinaan sa backport sa RouterOS ay naglalagay ng daan-daang libong device sa panganib

Mga detalye ng kahinaan

Sinusuportahan ng terminal ng RouterOS ang utos ng paglutas para sa paghahanap ng DNS.

Ang kahinaan sa backport sa RouterOS ay naglalagay ng daan-daang libong device sa panganib

Ang kahilingang ito ay pinangangasiwaan ng isang binary na tinatawag na solver. Ang Resolver ay isa sa maraming binary na kumokonekta sa Winbox protocol ng RouterOS. Sa isang mataas na antas, ang "mga mensahe" na ipinadala sa port ng Winbox ay maaaring i-ruta sa iba't ibang mga binary sa RouterOS batay sa isang array-based na scheme ng pagnunumero.

Bilang default, naka-disable ang feature ng DNS server ng RouterOS.

Ang kahinaan sa backport sa RouterOS ay naglalagay ng daan-daang libong device sa panganib

Gayunpaman, kahit na hindi pinagana ang function ng server, pinapanatili ng router ang sarili nitong DNS cache.

Ang kahinaan sa backport sa RouterOS ay naglalagay ng daan-daang libong device sa panganib

Kapag gumawa kami ng kahilingan gamit ang winbox_dns_request halimbawa example.com, i-cache ng router ang resulta.

Ang kahinaan sa backport sa RouterOS ay naglalagay ng daan-daang libong device sa panganib

Dahil maaari naming tukuyin ang DNS server kung saan dapat pumunta ang kahilingan, ang pagpasok ng mga maling address ay walang halaga. Halimbawa, maaari kang mag-configure ng pagpapatupad ng DNS server mula sa Philip Klauspara laging tumugon nang may A record na naglalaman ng IP address na 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()

Ngayon kung maghahanap ka ng example.com gamit ang Winbox, makikita mo na ang DNS cache ng router ay nalason.

Ang kahinaan sa backport sa RouterOS ay naglalagay ng daan-daang libong device sa panganib

Siyempre, ang pagkalason sa example.com ay hindi masyadong kapaki-pakinabang dahil hindi talaga ito gagamitin ng router. Gayunpaman, kailangang i-access ng router ang upgrade.mikrotik.com, cloud.mikrotik.com, cloud2.mikrotik.com at download.mikrotik.com. At salamat sa isa pang pagkakamali, posibleng lason silang lahat nang sabay-sabay.

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

Ang router ay humihiling ng isang pahintulot, at nagbibigay kami ng lima pabalik. Hindi na-cache ng router ang lahat ng mga tugon na ito nang tama.

Ang kahinaan sa backport sa RouterOS ay naglalagay ng daan-daang libong device sa panganib

Malinaw, ang pag-atake na ito ay kapaki-pakinabang din kung ang router ay kumikilos bilang isang DNS server, dahil pinapayagan nito ang mga kliyente ng router na maatake.

Binibigyang-daan ka rin ng pag-atakeng ito na samantalahin ang isang mas malubhang kahinaan: i-downgrade o i-backport ang bersyon ng RouterOS. Muling nililikha ng umaatake ang lohika ng server ng pag-update, kabilang ang changelog, at pinipilit ang RouterOS na isipin ang lumang (mahina) na bersyon bilang kasalukuyan. Ang panganib dito ay nakasalalay sa katotohanan na kapag ang bersyon ay "na-update", ang password ng administrator ay na-reset sa default na halaga - ang isang umaatake ay maaaring mag-log in sa system na may walang laman na password!


Ang pag-atake ay medyo gumagana, sa kabila ng katotohanang iyon may-akda nagpapatupad ng ilang higit pang mga vector, kabilang ang mga nauugnay sa pag-embed ng backdoor sa firmware, ngunit isa na itong kalabisan na pamamaraan at ang paggamit nito para sa hindi lehitimong layunin ay ilegal.

proteksyon

Ang simpleng pag-disable ng Winbox ay nagbibigay-daan sa iyo na protektahan ang iyong sarili mula sa mga pag-atakeng ito. Sa kabila ng kaginhawaan ng pangangasiwa sa pamamagitan ng Winbox, mas mainam na gamitin ang SSH protocol.

Pinagmulan: www.habr.com

Magdagdag ng komento