Die Backport-Schwachstelle in RouterOS gefährdet Hunderttausende Geräte

Die Backport-Schwachstelle in RouterOS gefährdet Hunderttausende Geräte

Die Möglichkeit, auf RouterOS (Mikrotik) basierende Geräte aus der Ferne herunterzustufen, gefährdet Hunderttausende Netzwerkgeräte. Die Sicherheitslücke ist mit einer Vergiftung des DNS-Cache des Winbox-Protokolls verbunden und ermöglicht es Ihnen, veraltete (mit einem Standard-Passwort-Reset) oder geänderte Firmware auf das Gerät zu laden.

Die Backport-Schwachstelle in RouterOS gefährdet Hunderttausende Geräte

Details zur Sicherheitslücke

Das RouterOS-Terminal unterstützt den Auflösungsbefehl für die DNS-Suche.

Die Backport-Schwachstelle in RouterOS gefährdet Hunderttausende Geräte

Diese Anfrage wird von einer Binärdatei namens Resolver verarbeitet. Resolver ist eine von vielen Binärdateien, die eine Verbindung zum Winbox-Protokoll von RouterOS herstellen. Auf hoher Ebene können an den Winbox-Port gesendete „Nachrichten“ basierend auf einem Array-basierten Nummerierungsschema an verschiedene Binärdateien in RouterOS weitergeleitet werden.

Standardmäßig ist bei RouterOS die DNS-Serverfunktion deaktiviert.

Die Backport-Schwachstelle in RouterOS gefährdet Hunderttausende Geräte

Selbst wenn die Serverfunktion deaktiviert ist, behält der Router jedoch seinen eigenen DNS-Cache bei.

Die Backport-Schwachstelle in RouterOS gefährdet Hunderttausende Geräte

Wenn wir eine Anfrage mit winbox_dns_request stellen, zum Beispiel example.com, speichert der Router das Ergebnis zwischen.

Die Backport-Schwachstelle in RouterOS gefährdet Hunderttausende Geräte

Da wir den DNS-Server angeben können, über den die Anfrage gehen soll, ist die Eingabe falscher Adressen trivial. Sie können beispielsweise eine DNS-Serverimplementierung von konfigurieren Philipp Klausimmer mit einem A-Record zu antworten, der die IP-Adresse 192.168.88.250 enthält.

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

Wenn Sie nun mit Winbox nach example.com suchen, können Sie feststellen, dass der DNS-Cache des Routers vergiftet ist.

Die Backport-Schwachstelle in RouterOS gefährdet Hunderttausende Geräte

Natürlich ist eine Vergiftung von example.com nicht sehr sinnvoll, da der Router sie nicht wirklich nutzt. Der Router muss jedoch auf upgrade.mikrotik.com, cloud.mikrotik.com, cloud2.mikrotik.com und download.mikrotik.com zugreifen. Und dank eines weiteren Fehlers ist es möglich, sie alle auf einmal zu vergiften.

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

Der Router fordert eine Erlaubnis an und wir gewähren fünf zurück. Der Router speichert nicht alle diese Antworten korrekt zwischen.

Die Backport-Schwachstelle in RouterOS gefährdet Hunderttausende Geräte

Natürlich ist dieser Angriff auch dann nützlich, wenn der Router als DNS-Server fungiert, da er die Möglichkeit bietet, Clients des Routers anzugreifen.

Mit diesem Angriff können Sie auch eine schwerwiegendere Sicherheitslücke ausnutzen: ein Downgrade oder eine Backportierung der Version von RouterOS. Der Angreifer erstellt die Logik des Update-Servers einschließlich des Änderungsprotokolls neu und zwingt RouterOS, die veraltete (anfällige) Version als aktuell zu erkennen. Die Gefahr liegt hier darin, dass beim „Update“ der Version das Administrator-Passwort auf den Standardwert zurückgesetzt wird – ein Angreifer kann sich mit einem leeren Passwort am System anmelden!


Trotzdem funktioniert der Angriff recht gut Verfasser implementiert mehrere weitere Vektoren, einschließlich derer, die sich auf beziehen Einbetten einer Hintertür in die Firmware, aber dies ist bereits eine überflüssige Technik und ihre Verwendung für illegitime Zwecke ist illegal.

Schutz

Durch einfaches Deaktivieren von Winbox können Sie sich vor diesen Angriffen schützen. Trotz der Bequemlichkeit der Verwaltung über Winbox ist es besser, das SSH-Protokoll zu verwenden.

Source: habr.com

Kommentar hinzufügen