A vulnerabilidade Backport no RouterOS coloca em risco centenas de milhares de dispositivos

A vulnerabilidade Backport no RouterOS coloca em risco centenas de milhares de dispositivos

A possibilidade de downgrade remoto de dispositivos baseados em RouterOS (Mikrotik) compromete centenas de milhares de dispositivos de rede. A vulnerabilidade está relacionada ao envenenamento do cache DNS do protocolo Winbox e permite carregar um firmware desatualizado (com reset da senha para o "padrão") ou modificado no dispositivo.

A vulnerabilidade Backport no RouterOS coloca em risco centenas de milhares de dispositivos

Detalhes da vulnerabilidade

O terminal RouterOS suporta um comando de resolução para busca DNS.

A vulnerabilidade Backport no RouterOS coloca em risco centenas de milhares de dispositivos

Essa solicitação é processada por um arquivo binário chamado resolver. O resolver é um dos muitos arquivos binários conectados ao protocolo Winbox do RouterOS. Em um nível alto, as "mensagens" enviadas para a porta Winbox podem ser roteadas para vários arquivos binários no RouterOS com base em um esquema de numeração baseado em array.

Por padrão, a função de servidor DNS está desativada no RouterOS.

A vulnerabilidade Backport no RouterOS coloca em risco centenas de milhares de dispositivos

No entanto, mesmo com a função de servidor desativada, o roteador mantém seu próprio cache DNS.

A vulnerabilidade Backport no RouterOS coloca em risco centenas de milhares de dispositivos

Quando fazemos uma solicitação usando winbox_dns_request, por exemplo, example.com, o roteador irá armazenar o resultado em cache.

A vulnerabilidade Backport no RouterOS coloca em risco centenas de milhares de dispositivos

Como podemos especificar o servidor DNS através do qual a solicitação deve passar, inserir endereços incorretos é trivial. Por exemplo, é possível configurar uma implementação do servidor DNS de Philipp Klaus, para sempre responder com um registro A contendo o endereço IP 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("---- Resposta:n", reply)
    return reply.pack()

Agora, se procurarmos example.com através do Winbox, podemos ver que o cache DNS do roteador foi envenenado.

A vulnerabilidade Backport no RouterOS coloca em risco centenas de milhares de dispositivos

Claro, o envenenamento de example.com não é muito útil, já que o roteador, de fato, não o utilizará. No entanto, o roteador precisa acessar upgrade.mikrotik.com, cloud.mikrotik.com, cloud2.mikrotik.com e download.mikrotik.com. E devido a mais um erro, há a possibilidade de envenená-los todos ao mesmo tempo.

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

O roteador solicita uma permissão e nós fornecemos cinco de volta. O roteador está armazenando em cache todas essas respostas de forma incorreta.

A vulnerabilidade Backport no RouterOS coloca em risco centenas de milhares de dispositivos

É óbvio que este ataque também é útil se o roteador atua como servidor DNS, pois permite atacar os clientes do roteador.

Além disso, este ataque permite explorar uma vulnerabilidade mais séria: realizar um downgrade ou um backport da versão do RouterOS. O atacante recria a lógica do servidor de atualizações, incluindo o changelog, e faz com que o RouterOS perceba uma versão antiga (vulnerável) como atual. O perigo aqui é que ao "atualizar" a versão, a senha do administrador é redefinida para o valor "padrão" — o invasor pode acessar o sistema com uma senha em branco!

Por que no hosting comum a administração do PrestaShop é lenta, e no seu não é?

O ataque é totalmente funcional, apesar de que o autor implementa mais alguns vetores, incluindo a inserção de um backdoor no firmware, mas isso já é uma técnica excessiva e sua aplicação para fins ilegítimos é ilegal.

Protección

Desativar o Winbox simples protege contra esses ataques. Apesar da conveniência de administração através do Winbox, é melhor usar o protocolo SSH.

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster