La vulnerabilidad del backport en RouterOS pone en riesgo cientos de miles de dispositivos

La vulnerabilidad del backport en RouterOS pone en riesgo cientos de miles de dispositivos

La capacidad de degradar de forma remota dispositivos basados ​​en RouterOS (Mikrotik) pone en riesgo cientos de miles de dispositivos de red. La vulnerabilidad está asociada con el envenenamiento del caché DNS del protocolo Winbox y le permite cargar firmware desactualizado (con un restablecimiento de contraseña predeterminado) o modificado en el dispositivo.

La vulnerabilidad del backport en RouterOS pone en riesgo cientos de miles de dispositivos

Detalles de vulnerabilidad

El terminal RouterOS admite el comando de resolución para la búsqueda de DNS.

La vulnerabilidad del backport en RouterOS pone en riesgo cientos de miles de dispositivos

Esta solicitud es manejada por un binario llamado resolutor. Resolver es uno de los muchos binarios que se conectan al protocolo Winbox de RouterOS. En un nivel alto, los "mensajes" enviados al puerto de Winbox se pueden enrutar a varios archivos binarios en RouterOS según un esquema de numeración basado en matrices.

De forma predeterminada, RouterOS tiene la función del servidor DNS deshabilitada.

La vulnerabilidad del backport en RouterOS pone en riesgo cientos de miles de dispositivos

Sin embargo, incluso cuando la función del servidor está desactivada, el enrutador mantiene su propia caché DNS.

La vulnerabilidad del backport en RouterOS pone en riesgo cientos de miles de dispositivos

Cuando realizamos una solicitud usando winbox_dns_request, por ejemplo, example.com, el enrutador almacenará en caché el resultado.

La vulnerabilidad del backport en RouterOS pone en riesgo cientos de miles de dispositivos

Dado que podemos especificar el servidor DNS a través del cual debe pasar la solicitud, ingresar direcciones incorrectas es trivial. Por ejemplo, puede configurar una implementación de servidor DNS desde Philip Klausresponder siempre con un registro A que contenga la dirección 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("---- Reply:n", reply)
    return reply.pack()

Ahora, si busca ejemplo.com usando Winbox, puede ver que la caché DNS del enrutador está envenenada.

La vulnerabilidad del backport en RouterOS pone en riesgo cientos de miles de dispositivos

Por supuesto, envenenar example.com no es muy útil ya que el enrutador realmente no lo usará. Sin embargo, el enrutador necesita acceder a update.mikrotik.com, cloud.mikrotik.com, cloud2.mikrotik.com y download.mikrotik.com. Y gracias a otro error, es posible envenenarlos a todos a la vez.

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

El enrutador solicita un permiso y le concedemos cinco. El enrutador no almacena en caché todas estas respuestas correctamente.

La vulnerabilidad del backport en RouterOS pone en riesgo cientos de miles de dispositivos

Evidentemente, este ataque también es útil si el router actúa como servidor DNS, ya que permite atacar a los clientes del router.

Este ataque también le permite explotar una vulnerabilidad más grave: degradar o actualizar la versión de RouterOS. El atacante recrea la lógica del servidor de actualización, incluido el registro de cambios, y obliga a RouterOS a percibir la versión obsoleta (vulnerable) como actual. El peligro aquí radica en el hecho de que cuando se "actualiza" la versión, la contraseña del administrador se restablece al valor predeterminado: ¡un atacante puede iniciar sesión en el sistema con una contraseña vacía!


El ataque funciona bastante, a pesar de que autor implementa varios vectores más, incluidos los relacionados con incrustar una puerta trasera en el firmware, pero esta ya es una técnica redundante y su uso con fines ilegítimos es ilegal.

Защита

Simplemente deshabilitar Winbox le permite protegerse de estos ataques. A pesar de la comodidad de la administración a través de Winbox, es mejor utilizar el protocolo SSH.

Fuente: habr.com

Añadir un comentario