دردسرهای دسترسی از راه دور با VNC
خلاصه: چندین آسیبپذیری با سطح خطر بالا در پیادهسازیهای یکی از رایجترین سیستمهای دسترسی از راه دور یعنی VNC کشف شده است که از عمر برخی از آنها بیش از بیست سال می گذرد. با درنظر گرفتن حملات سایبری خطرناکی که تاکنون، سیستمهای اتوماسیون صنعتی کشور ما را تهدید کردهاند، خطر این آسیبپذیریها در نگاه کارشناسان امنیتی بیش از پیش پررنگ شده است.
دسترسی از راه دور از کاربردهایی است که در بسیاری از مواقع موجب راحتی کاربران میشود و حتی بعضاً به یکی از نیازهای ضروری آنها تبدیل میشود اما پیامدهای منفی هم دارد. از جمله این که میتواند برای مهاجم، نقطه ورودی به زیرساختهای اساسی فراهم کند، به خصوص اگر ابزار آن آسیبپذیر تشخیص داده شود.
پردازش شبکه مجازی (Virtual Network Computing) که به اختصار VNC نامیده میشود یکی از پرکاربردترین سیستمهای به اشتراکگذاری دسکتاپ است که به کمک آن میتوان یک کامپیوتر را از راه دور را توسط کامپیوتر دیگری کنترل کرد، تجهیزات را از راه دور رصد کرد و امکان آموزش از راه دور را فراهم کرد. به طور مثال در این سیستم میتوان هر آنچه در صفحه کلید یا موس یک کامپیوتر اتفاق میافتد را از طریق شبکه و با کمک یک صفحه نمایش گرافیکی به کامیپوتر دیگری انتقال داد. قابل ذکر است که سیستم VNC برای این کار از پروتکل RFB بهره میبرد.
سیستم VNC پیادهسازیهای مختلفی دارد که بنا به گزارش کسپراسکی در چهار مورد از آنها، سیوهفت آسیبپذیری شناسایی شده است که از عمر برخی از آنها نزدیک به بیست سال میگذرد. این در حالی است که با توجه به کاربرد وسیع VNC، حتی به راحتی نمیتوان تعداد تجهیزاتی آسیبپذیر را تخمین زد. موتور جستجوگر Shodan، بیش از 600 هزار سرور VNC را در سراسر دنیا شناسایی کرده است که به صورت آنلاین در دسترس قرار دارند اما به نظر میرسد تعداد واقعی آنها بسیار بیشتر از این تعداد باشد.
این چهار پیادهسازیها عبارتند از:
- LibVNC، کتابخانهای که شامل مجموعهای از قطعه کدهای آماده برای توسعهدهندگان تازهکار است. این توسعهدهندگان میتوانند با استفاده از این کتابخانه برنامههایی را ایجاد کنند. به عنوان مثال از LibVNC در سیستمهایی استفاده میشود که امکان اتصال از راه دور با ماشین مجازی و همچنین موبایلهایی با سیستم عامل iOS و Android را دارند.
- TightVNC 1.X، این برنامه معمولاً از طرف فروشندگان سیستمهای اتوماسیون صنعتی برای اتصال به یک رابط انسان و ماشین (HMI) توصیه میشود.
- TurboVNC، این پیادهسازی از VNC عمدتاً برای کار از راه دور با اشیاء گرافیکی ، سه بعدی و ویدیویی به کار میرود.
- UltraVNC، این پیادهسازی مخصوص ویندوز ساخته شده است ولی از آن برای اتصال به HMI به طور گسترده در تولیدات صنعتی نیز استفاده میشود.
هر پیادهسازی VNC شامل دو بخش است:
- سرور که روی کامپیوتر نصب میشود تا کاربران بتوانند از راه دور به آن متصل شوند.
- کلاینتی که روی دستگاه مورد نظر اجرا میشود.
با توجه به طراحی سادهتر سرور نسبت به کلاینت، آسیبپذیریهای کمتری هم در سمت سرور شناسایی شده است. البته به طور بالقوه امکان حمله به سمت سرور هم وجود دارد ولی در بسیاری از موارد این حملات برای مهاجم بدون مجوز مقدور نیستند.
تمامی آسیبپذیریهای کشفشده به علت استفاده نادرست از حافظه ایجاد شدهاند و مهاجم با بهرهبرداری از آنها میتواند حالت منع سرویس ایجاد کند و در موارد بدتر حتی میتواند دسترسی غیرمجازی به اطلاعات روی دستگاه داشته باشد یا بدافزاری را روی دستگاه قربانی انتشار دهد.
پس از گزارش کسپراسکی به توسعهدهندگان این پیادهسازیها اکثر آنها در صدد رفع این آسیبپذیریها برآمدند اما با توجه به این که نسخه اول پیادهسازی TightVNC دیگر از سمت توسعهدهندگان آن پشتیبانی نمیشود، این مورد بدون وصله شدن همچنان آسیبپذیر باقی مانده است.
پیشنهادهایی برای جلوگیری از حملات سایبری
- بررسی کنید که کدام دستگاهها میتوانند از راه دور به یکدیگر وصل شوند و در صورت لزوم اتصالات از راه دور آنها را مسدود کنید.
- فهرستی از همه برنامههای دسترسی از راه دور (نه فقط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 |