info[at]nsec.ir
(+۹۸)-۳۱-۳۳۹۱۵۳۳۶

دردسرهای دسترسی از راه دور با VNC

خلاصه: چندین آسیب‌پذیری با سطح خطر بالا در پیاده‌سازی‌های یکی از رایج‌ترین سیستم‌های دسترسی از راه دور یعنی VNC کشف شده است که از عمر برخی از آن‌‌ها بیش از بیست سال می گذرد. با درنظر گرفتن حملات سایبری خطرناکی که تاکنون، سیستم‌های اتوماسیون صنعتی کشور ما را تهدید کرده‌اند، خطر این آسیب‌پذیری‌ها در نگاه کارشناسان امنیتی بیش از پیش پررنگ شده است. 

 

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

پردازش شبکه مجازی (Virtual Network Computing) که به اختصار VNC نامیده می‌شود یکی از پرکاربردترین سیستم‌‌های به اشتراک‌گذاری دسکتاپ است که به کمک آن می‌توان یک کامپیوتر را از راه دور را توسط کامپیوتر دیگری کنترل کرد، تجهیزات را از راه دور رصد کرد و امکان آموزش از راه دور را فراهم کرد. به طور مثال در این سیستم می‌توان هر آنچه در صفحه کلید یا موس یک کامپیوتر اتفاق می‌افتد را از طریق شبکه و با کمک یک صفحه نمایش گرافیکی به کامیپوتر دیگری انتقال داد. قابل ذکر است که سیستم VNC برای این کار از پروتکل RFB بهره می‌برد.

 

سیستم VNC پیاده‌سازی‌های مختلفی دارد که بنا به گزارش کسپراسکی در چهار مورد از آن‌ها، سی‌وهفت آسیب‌پذیری شناسایی شده است که از عمر برخی از آن‌ها نزدیک به بیست سال می‌گذرد. این در حالی است که با توجه به کاربرد وسیع VNC، حتی به راحتی نمی‌توان تعداد تجهیزاتی آسیب‌پذیر را تخمین زد. موتور جستجوگر Shodan، بیش از ۶۰۰ هزار سرور VNC را در سراسر دنیا شناسایی کرده است که به صورت آنلاین در دسترس قرار دارند اما به نظر می‌رسد تعداد واقعی آن‌ها بسیار بیشتر از این تعداد باشد.

 

 این چهار پیاده‌سازی‌ها عبارتند از:

  • LibVNC، کتابخانه‌ای که شامل مجموعه‌ای از قطعه کدهای آماده برای توسعه‌دهندگان تازه‌کار است. این توسعه‌دهندگان می‌توانند با استفاده از این کتابخانه برنامه‌هایی را ایجاد کنند. به عنوان مثال از LibVNC در سیستم‌هایی استفاده می‌شود که امکان اتصال از راه دور با ماشین مجازی و همچنین موبایل‌هایی با سیستم عامل iOS و Android را دارند.
  • TightVNC 1.X، این برنامه‌ معمولاً از طرف فروشندگان سیستم‌های اتوماسیون صنعتی برای اتصال به یک رابط انسان و ماشین (HMI) توصیه می‌شود.
  • TurboVNC، این پیاده‌سازی از VNC عمدتاً برای کار از راه دور با اشیاء گرافیکی ، سه بعدی و ویدیویی به کار می‌رود.
  • UltraVNC، این پیاده‌سازی مخصوص ویندوز ساخته شده است ولی از آن برای اتصال به HMI به طور گسترده در تولیدات صنعتی نیز استفاده می‌شود.

 

 هر پیاده‌سازی VNC شامل دو بخش است:

  1. سرور که روی کامپیوتر نصب می‌شود تا کاربران بتوانند از راه دور به آن متصل شوند.
  2. کلاینتی که روی دستگاه مورد نظر اجرا می‌شود.

با توجه به طراحی ساده‌تر سرور نسبت به کلاینت، آسیب‌پذیری‌های کمتری هم در سمت سرور شناسایی شده است. البته به طور بالقوه امکان حمله به سمت سرور هم وجود دارد ولی در بسیاری از موارد این حملات برای مهاجم بدون مجوز مقدور نیستند.

 

تمامی آسیب‌پذیری‌های کشف‌شده به علت استفاده نادرست از حافظه ایجاد شده‌اند و مهاجم با بهره‌برداری از آن‌‌ها می‌تواند حالت منع سرویس ایجاد کند و در موارد بدتر حتی می‌تواند دسترسی غیرمجازی به اطلاعات روی دستگاه داشته باشد یا بدافزاری را روی دستگاه قربانی انتشار دهد.

پس از گزارش کسپراسکی به توسعه‌دهندگان این پیاده‌سازی‌ها اکثر آن‌ها در صدد رفع این آسیب‌پذیری‌ها برآمدند اما با توجه به این که  نسخه اول پیاده‌سازی TightVNC دیگر از سمت توسعه‌دهندگان آن پشتیبانی نمی‌شود، این مورد بدون وصله شدن همچنان آسیب‌پذیر باقی مانده است.

 

پیشنهادهایی برای جلوگیری از حملات سایبری

  • بررسی کنید که کدام دستگاه‌ها می‌توانند از راه دور به یکدیگر وصل شوند و در صورت لزوم اتصالات از راه دور آن‌ها را مسدود کنید.
  • فهرستی از همه برنامه‌های دسترسی از راه دور (نه فقطVNC ) تهیه کنید و از به روز بودن آن‌ها مطمئن باشید.
  • برای سرورها  VNCیک رمزعبور قوی انتخاب کنید.
  • به سرورهای VNC غیر قابل اعتماد یا آزمایش نشده متصل نشوید.
  • به نظر می‌رسد در کشور ما امنیت سیستم‌های کنترل صنعتی یکی از چالش‌های اساسی باشد که بایستی به صورت جدی در مورد آن اقداماتی صورت گیرد. یکی از مواردی که در این راستا، بسیار راه‌گشاست استفاده از ابزارهای امنیتی ویژه برای خدمات و محصولات کنترل صنعتی است.  

شناسه آسیب‌پذیری‌ها

شناسه آسیب‌پذیری‌های کشف‌شده با توجه به آسیب‌پذیری آن‌ها در جدول زیر آورده شده است.

شناسه آسیب‌پذیری‌های VNC

پیاده‌سازی LibVNC

CVE-2018-6307

CVE-2018-15126

CVE-2018-15127

CVE-2018-20019

CVE-2018-20020

CVE-2018-20021

CVE-2018-20022

CVE-2018-20023

CVE-2018-20024

CVE-2019-15681

پیاده‌سازی TightVNC 1.X

CVE-2019-8287

CVE-2019-15678

CVE-2019-15679

CVE-2019-15680

پیاده‌سازی TurboVNC

CVE-2019-15683

پیاده‌سازی UltraVNC

CVE-2018-15361

CVE-2019-8258

CVE-2019-8259

CVE-2019-8260

CVE-2019-8261

CVE-2019-8262

CVE-2019-8263

CVE-2019-8264

CVE-2019-8265

CVE-2019-8266

CVE-2019-8267

CVE-2019-8268

CVE-2019-8269

CVE-2019-8270

CVE-2019-8271

CVE-2019-8272

CVE-2019-8273

CVE-2019-8274

CVE-2019-8275

CVE-2019-8276

CVE-2019-8277

CVE-2019-8280