آسیب پذیری Backport در RouterOS صدها هزار دستگاه را در معرض خطر قرار می دهد

آسیب پذیری Backport در RouterOS صدها هزار دستگاه را در معرض خطر قرار می دهد

توانایی کاهش از راه دور دستگاه های مبتنی بر RouterOS (Mikrotik) صدها هزار دستگاه شبکه را در معرض خطر قرار می دهد. این آسیب‌پذیری با مسموم شدن حافظه پنهان DNS پروتکل Winbox مرتبط است و به شما امکان می‌دهد سیستم‌افزار قدیمی (با تنظیم مجدد رمز عبور پیش‌فرض) یا اصلاح‌شده را روی دستگاه بارگیری کنید.

آسیب پذیری Backport در RouterOS صدها هزار دستگاه را در معرض خطر قرار می دهد

جزئیات آسیب پذیری

ترمینال RouterOS از دستور حل برای جستجوی DNS پشتیبانی می کند.

آسیب پذیری Backport در RouterOS صدها هزار دستگاه را در معرض خطر قرار می دهد

این درخواست توسط یک باینری به نام حل کننده بررسی می شود. Resolver یکی از چندین باینری است که به پروتکل Winbox RouterOS متصل می شود. در سطح بالایی، «پیام‌های» ارسال شده به پورت Winbox را می‌توان به باینری‌های مختلف در RouterOS بر اساس یک طرح شماره‌گذاری مبتنی بر آرایه هدایت کرد.

به طور پیش فرض، RouterOS دارای ویژگی سرور DNS غیرفعال است.

آسیب پذیری Backport در RouterOS صدها هزار دستگاه را در معرض خطر قرار می دهد

با این حال، حتی زمانی که عملکرد سرور غیرفعال است، روتر حافظه پنهان DNS خود را حفظ می کند.

آسیب پذیری Backport در RouterOS صدها هزار دستگاه را در معرض خطر قرار می دهد

وقتی درخواستی را با استفاده از winbox_dns_request برای مثال example.com ارسال می کنیم، روتر نتیجه را کش می کند.

آسیب پذیری Backport در RouterOS صدها هزار دستگاه را در معرض خطر قرار می دهد

از آنجایی که می‌توانیم سرور DNS را مشخص کنیم که درخواست باید از طریق آن انجام شود، وارد کردن آدرس‌های نادرست بی‌اهمیت است. به عنوان مثال، می توانید یک اجرای سرور DNS را از آن پیکربندی کنید فیلیپ کلاوسهمیشه با یک رکورد A حاوی آدرس 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()

اکنون اگر با استفاده از Winbox به جستجوی example.com بپردازید، می بینید که کش DNS روتر مسموم شده است.

آسیب پذیری Backport در RouterOS صدها هزار دستگاه را در معرض خطر قرار می دهد

البته، poisoning example.com چندان مفید نیست زیرا روتر در واقع از آن استفاده نمی کند. با این حال، روتر باید به upgrade.mikrotik.com، cloud.mikrotik.com، cloud2.mikrotik.com و download.mikrotik.com دسترسی داشته باشد. و به لطف یک اشتباه دیگر، می توان همه آنها را به یکباره مسموم کرد.

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

روتر یک مجوز درخواست می کند و ما پنج مجوز را پس می دهیم. روتر همه این پاسخ ها را به درستی کش نمی کند.

آسیب پذیری Backport در RouterOS صدها هزار دستگاه را در معرض خطر قرار می دهد

بدیهی است که این حمله در صورتی مفید است که روتر به عنوان یک سرور DNS عمل کند، زیرا به مشتریان روتر اجازه حمله می‌دهد.

این حمله همچنین به شما این امکان را می دهد که از آسیب پذیری جدی تری سوء استفاده کنید: نسخه RouterOS را کاهش دهید یا backport کنید. مهاجم منطق سرور به‌روزرسانی، از جمله تغییرات را ایجاد می‌کند و RouterOS را مجبور می‌کند تا نسخه قدیمی (آسیب‌پذیر) را به‌عنوان فعلی درک کند. خطر در اینجا در این واقعیت نهفته است که هنگام "به روز رسانی" نسخه، رمز عبور مدیر به مقدار پیش فرض بازنشانی می شود - مهاجم می تواند با یک رمز عبور خالی وارد سیستم شود!


با وجود این واقعیت، حمله کاملاً کار می کند نویسنده چندین بردار دیگر از جمله بردارهای مربوط به را پیاده سازی می کند تعبیه یک درب پشتی در سیستم عامل، اما این یک تکنیک اضافی است و استفاده از آن برای اهداف نامشروع غیرقانونی است.

حفاظت

به سادگی غیرفعال کردن Winbox به شما امکان می دهد از خود در برابر این حملات محافظت کنید. با وجود راحتی مدیریت از طریق Winbox، بهتر است از پروتکل SSH استفاده کنید.

منبع: www.habr.com

اضافه کردن نظر