Kerentanan backport di RouterOS membahayakan ratusan ribu perangkat

Kerentanan backport di RouterOS membahayakan ratusan ribu perangkat

Kemampuan untuk melakukan downgrade perangkat berbasis RouterOS (Mikrotik) dari jarak jauh dapat membahayakan ratusan ribu perangkat jaringan. Kerentanan ini terkait dengan keracunan cache DNS protokol Winbox dan memungkinkan Anda memuat firmware yang sudah ketinggalan zaman (dengan pengaturan ulang kata sandi default) atau yang dimodifikasi ke perangkat.

Kerentanan backport di RouterOS membahayakan ratusan ribu perangkat

Detail kerentanan

Terminal RouterOS mendukung perintah penyelesaian untuk pencarian DNS.

Kerentanan backport di RouterOS membahayakan ratusan ribu perangkat

Permintaan ini ditangani oleh biner yang disebut penyelesai. Resolver adalah salah satu dari banyak biner yang terhubung ke protokol Winbox RouterOS. Pada tingkat tinggi, "pesan" yang dikirim ke port Winbox dapat dirutekan ke berbagai biner di RouterOS berdasarkan skema penomoran berbasis array.

Secara default, RouterOS menonaktifkan fitur server DNS.

Kerentanan backport di RouterOS membahayakan ratusan ribu perangkat

Namun, meskipun fungsi server dinonaktifkan, router tetap mempertahankan cache DNS-nya sendiri.

Kerentanan backport di RouterOS membahayakan ratusan ribu perangkat

Saat kita membuat request menggunakan winbox_dns_request misalnya example.com, router akan menyimpan hasilnya dalam cache.

Kerentanan backport di RouterOS membahayakan ratusan ribu perangkat

Karena kita dapat menentukan server DNS yang akan digunakan untuk mengirim permintaan, memasukkan alamat yang salah adalah hal yang sepele. Misalnya, Anda dapat mengonfigurasi implementasi server DNS dari Philip Klausuntuk selalu merespons dengan catatan A yang berisi alamat 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()

Sekarang jika Anda mencari example.com menggunakan Winbox, Anda dapat melihat bahwa cache DNS router diracuni.

Kerentanan backport di RouterOS membahayakan ratusan ribu perangkat

Tentu saja, meracuni example.com tidak terlalu berguna karena router tidak benar-benar menggunakannya. Namun, router perlu mengakses upgrade.mikrotik.com, cloud.mikrotik.com, cloud2.mikrotik.com dan download.mikrotik.com. Dan berkat kesalahan lainnya, mereka bisa diracuni sekaligus.

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

Router meminta satu izin, dan kami memberikan lima izin kembali. Router tidak menyimpan semua tanggapan ini dengan benar.

Kerentanan backport di RouterOS membahayakan ratusan ribu perangkat

Tentu saja, serangan ini juga berguna jika router bertindak sebagai server DNS, karena memungkinkan klien dari router tersebut diserang.

Serangan ini juga memungkinkan Anda mengeksploitasi kerentanan yang lebih serius: downgrade atau backport versi RouterOS. Penyerang membuat ulang logika server pembaruan, termasuk log perubahan, dan memaksa RouterOS untuk menganggap versi lama (rentan) sebagai versi terbaru. Bahayanya di sini terletak pada kenyataan bahwa ketika versi "diperbarui", kata sandi administrator diatur ulang ke nilai default - penyerang dapat masuk ke sistem dengan kata sandi kosong!


Meskipun demikian, serangan tersebut cukup berhasil penulis mengimplementasikan beberapa vektor lagi, termasuk yang terkait dengan menyematkan pintu belakang ke dalam firmware, tapi ini sudah merupakan teknik yang mubazir dan penggunaannya untuk tujuan yang tidak sah adalah ilegal.

perlindungan

Cukup menonaktifkan Winbox memungkinkan Anda melindungi diri dari serangan ini. Meskipun kemudahan administrasi melalui Winbox, lebih baik menggunakan protokol SSH.

Sumber: www.habr.com

Tambah komentar