A RouterOS backport biztonsági rése több százezer eszközt tesz veszélybe

A RouterOS backport biztonsági rése több százezer eszközt tesz veszélybe

A RouterOS (Mikrotik) alapú eszközök távoli leminősítésének lehetősége több százezer hálózati eszközt tesz veszélybe. A biztonsági rés a Winbox protokoll DNS-gyorsítótárának mérgezésével kapcsolatos, és lehetővé teszi elavult (alapértelmezett jelszó-visszaállítással) vagy módosított firmware-ek betöltését az eszközre.

A RouterOS backport biztonsági rése több százezer eszközt tesz veszélybe

A sebezhetőség részletei

A RouterOS terminál támogatja a resolution parancsot a DNS-kereséshez.

A RouterOS backport biztonsági rése több százezer eszközt tesz veszélybe

Ezt a kérést egy megoldó nevű bináris kezeli. A Resolver egyike annak a sok binárisnak, amely a RouterOS Winbox protokolljához csatlakozik. Magas szinten a Winbox portra küldött "üzenetek" egy tömb alapú számozási séma alapján a RouterOS különböző binárisaiba irányíthatók.

Alapértelmezés szerint a RouterOS le van tiltva a DNS-kiszolgáló funkció.

A RouterOS backport biztonsági rése több százezer eszközt tesz veszélybe

Azonban még akkor is, ha a szerver funkció le van tiltva, az útválasztó fenntartja a saját DNS-gyorsítótárát.

A RouterOS backport biztonsági rése több százezer eszközt tesz veszélybe

Amikor a winbox_dns_request használatával kérünk, például example.com, az útválasztó gyorsítótárba helyezi az eredményt.

A RouterOS backport biztonsági rése több százezer eszközt tesz veszélybe

Mivel meg tudjuk határozni azt a DNS-kiszolgálót, amelyen keresztül a kérés menjen, a helytelen címek megadása triviális. Például konfigurálhat egy DNS-kiszolgáló megvalósítását innen Philip Klaushogy mindig a 192.168.88.250 IP-címet tartalmazó A rekorddal válaszoljon.

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

Ha most az example.com webhelyre keres a Winbox használatával, láthatja, hogy az útválasztó DNS-gyorsítótára meg van mérgezve.

A RouterOS backport biztonsági rése több százezer eszközt tesz veszélybe

Természetesen az example.com megmérgezése nem túl hasznos, mivel a router valójában nem fogja használni. Az útválasztónak azonban hozzá kell férnie az upgrade.mikrotik.com, a cloud.mikrotik.com, a cloud2.mikrotik.com és a download.mikrotik.com webhelyekhez. És egy másik hibának köszönhetően lehetséges egyszerre megmérgezni őket.

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

A router egy engedélyt kér, mi pedig ötöt visszaadunk. Az útválasztó nem gyorsítótárazza ezeket a válaszokat megfelelően.

A RouterOS backport biztonsági rése több százezer eszközt tesz veszélybe

Nyilvánvalóan ez a támadás akkor is hasznos, ha az útválasztó DNS-kiszolgálóként működik, mivel lehetővé teszi az útválasztó klienseinek megtámadását.

Ez a támadás egy komolyabb sebezhetőség kihasználását is lehetővé teszi: a RouterOS verziójának leminősítését vagy backportálását. A támadó újra létrehozza a frissítési kiszolgáló logikáját, beleértve a változásnaplót is, és arra kényszeríti a RouterOS-t, hogy az elavult (sebezhető) verziót aktuálisnak tekintse. A veszély itt abban rejlik, hogy a verzió „frissítésekor” a rendszergazdai jelszó visszaáll az alapértelmezett értékre - a támadó üres jelszóval jelentkezhet be a rendszerbe!


A támadás ennek ellenére jól működik szerző számos további vektort valósít meg, beleértve a kapcsolódó vektorokat is hátsó ajtó beágyazása a firmware-be, de ez már redundáns technika, és illegitim célokra való felhasználása illegális.

védelem

A Winbox egyszerű letiltása lehetővé teszi, hogy megvédje magát ezekkel a támadásokkal szemben. A Winboxon keresztüli adminisztráció kényelme ellenére jobb az SSH protokoll használata.

Forrás: will.com

Hozzászólás