Backport zranitelnosti v RouterOS ohrožuje stovky tisíc zařízení

Backport zranitelnosti v RouterOS ohrožuje stovky tisíc zařízení

Možnost vzdáleného snížení zařízení na bázi RouterOS (Mikrotik) ohrožuje stovky tisíc síťových zařízení. Zranitelnost je spojena s otrávením DNS cache protokolu Winbox a umožňuje načíst zastaralý (s obnovením hesla na 'výchozí') nebo modifikovaný firmware do zařízení.

Backport zranitelnosti v RouterOS ohrožuje stovky tisíc zařízení

Podrobnosti o zranitelnosti

Terminál RouterOS podporuje příkaz pro vyhledávání DNS.

Backport zranitelnosti v RouterOS ohrožuje stovky tisíc zařízení

Tento požadavek zpracovává binární soubor s názvem resolver. Resolver je jedním z mnoha binárních souborů, které jsou připojeny k protokolu Winbox od RouterOS. Na vysoké úrovni mohou být 'zprávy' odesílané na port Winbox směrovány do různých binárních souborů v RouterOS na základě schématu číslování založeného na poli.

Ve výchozím nastavení je v RouterOS funkce DNS serveru deaktivována.

Backport zranitelnosti v RouterOS ohrožuje stovky tisíc zařízení

Nicméně i při deaktivované funkci serveru směrovač podporuje svou vlastní DNS cache.

Backport zranitelnosti v RouterOS ohrožuje stovky tisíc zařízení

Když provedeme požadavek pomocí winbox_dns_request, například example.com, směrovač bude cachovat výsledek.

Backport zranitelnosti v RouterOS ohrožuje stovky tisíc zařízení

Jelikož můžeme určit DNS server, přes který by měl požadavek projít, je trivální zadávat neplatné adresy. Například je možné nakonfigurovat implementaci DNS serveru od Philippe Klaus, aby vždy odpovídal záznamem A obsahujícím IP adresu 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("---- Odpověď:n", reply)
    return reply.pack()

Nyní, pokud pomocí Winboxu vyhledáte example.com, můžete vidět, že DNS cache směrovače byla otrávena.

Backport zranitelnosti v RouterOS ohrožuje stovky tisíc zařízení

Samozřejmě, otrávení example.com není příliš užitečné, protože směrovač ho ve skutečnosti nebude používat. Nicméně směrovač potřebuje přístup k upgrade.mikrotik.com, cloud.mikrotik.com, cloud2.mikrotik.com a download.mikrotik.com. A díky další chybě existuje možnost otrávit je všechny najednou.

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("---- Odpověď:n", reply)
    return reply.pack()

Router požaduje jedno povolení, a my vracíme pět odpovědí. Router nesprávně ukládá všechny tyto odpovědi do mezipaměti.

Backport zranitelnosti v RouterOS ohrožuje stovky tisíc zařízení

Je jasné, že tento útok je užitečný i tehdy, když router funguje jako DNS server, protože umožňuje útok na klienty routeru.

Tento útok také umožňuje zneužít závažnější zranitelnost: provést downgrade nebo backport verze RouterOS. Útočník reprodukuje logiku serveru pro aktualizace, včetně changelogu, a nutí RouterOS považovat zastaralou (zranitelnou) verzi za aktuální. Nebezpečí spočívá v tom, že při 'aktualizaci' verze je heslo správce resetováno na 'výchozí' hodnotu — útočník může vstoupit do systému s prázdným heslem!

Přehrát video

Útok je plně funkční, i když autor realizuje ještě několik vektorů, které se týkají i implantace backdooru do firmwaru, ale to už je nadbytečná technika a její použití k nelegálním účelům je protiprávní.

Ochrana

Jednoduché vypnutí Winboxu pomáhá chránit před těmito útoky. I když je správa přes Winbox pohodlná, je lepší využít protokol SSH.

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster