در تحقیقات اخیر Check Point Research، سه آسیبپذیری در سرویس “Microsoft Message Queuing” که معمولاً با نام MSMQ شناخته میشود، یافت شد. MSMQ جزء اختیاری ویندوز است که میتوان آن را بر روی طیف گستردهای از سیستم عاملهای ویندوز، از جمله انواع سرور و دسکتاپ نصب نمود. این آسیبپذیریهای اجرای کد از راه دور (RCE) که بدون احراز هویت قابل بهره برداری است، برای مایکروسافت نیز محرز گردید و در اصلاحیههای امنیتی Patch Tuesday آوریل 2023 برطرف شد.
شدیدترین آنها، آسیبپذیری حیاتی موسوم به QueueJumper، با شناسه CVE-2023-21554 میباشد که امکان اجرای کد دلخواه از راه دور در زمینه فرآیند سرویس ویندوز mqsvc.exe را برای مهاجمان احراز هویت نشده فراهم میآورد.
سه آسیبپذیری مذکور در سرویس MSMQ که در به روزرسانی Patch Tuesday ماه آوریل وصله شدهاند به شرح زیر است:
[CVE-2023-21554]
آسیبپذیری حیاتی CVE-2023-21554، نقص اجرای کد از راه دور احراز هویت نشده ( unauthenticated Remote Code Execution) با امتیاز CVSS:3.1 9.8 / 8.5
این نقص که توسط Check Point Research با نام QueueJumper یاد میشود، امکان اجرای کد دلخواه از راه دور در زمینه فرآیند سرویس ویندوز mqsvc.exe را برای مهاجمان احراز هویت نشده فراهم میآورد. MSMQ به عنوان یک جزء اختیاری ویندوز ارائه شده است و همچنان در تمام سیستم عاملهای ویندوز، از جمله آخرین ویندوز سرور 2022 و ویندوز 11 در دسترس قرار دارد. در واقع آسیبپذیری CVE-2023-21554 به مهاجم اجازه میدهد که به طور بالقوه کد را از راه دور و بدون مجوز با رسیدن به پورت TCP 1801 اجرا کند. به عبارت دیگر مهاجم میتواند کنترل فرآیند را تنها از طریق یک بسته (packet) به پورت 1801/tcp به دست آورد و بدین ترتیب از این آسیبپذیری سو استفاده کند.
[CVE-2023-21769]
نقص CVE-2023-21769، آسیبپذیری DoS سطح اپلیکیشن از راه دور احراز هویت نشده (قطع یا خرابی سرویس) unauthenticated Remote Application Level DoS (service crash) با امتیاز CVSS:3.1 7.5 / 6.5
[CVE-2023-28302]
نقص CVE-2023-28302، آسیبپذیری DoS سطح هسته از راه دور احراز هویت نشده (BSOD ویندوز) unauthenticated Remote Kernel Level DoS (Windows BSOD) با امتیاز CVSS:3.1 7.5 / 6.5
درباره MSMQ
صفهای پیام یک الگوی ارتباطی ناهمگن را بین دو یا چند پردازه یا Thread پیادهسازی میکنند که به موجب آن طرف فرستنده و گیرنده نیازی به تعامل با صف پیام دقیقا در یک زمان ندارند. پیام هایی که در صف قرار میگیرند تا زمانی که گیرنده آنها را بازیابی کند، ذخیره میشوند.
اگرچه در ژانویه 2020 برخی از کارشناسان MSMQ۷ خبرهایی درخصوص بررسی روند بازنشستگی این سرویس منتشر کرده بودند و علیرغم اینکه MSMQ به عنوان یک سرویس اصطلاحا “فراموش شده” یا “legacy” در نظر گرفته شده، اما همچنان به عنوان جزء اختیاری ویندوز در تمامی سیستم عاملهای ویندوز از جمله آخرین ویندوز سرور 2022 و ویندوز 11 موجود است. کاربران به راحتی از طریق کنترل پنل یا از طریق دستور PowerShell به شرح “Install-WindowsFeature MSMQ-Services” میتوانند نسبت به فعالسازی این سرویس اقدام کنند.
از آنجا که بردار حمله مرتبط با این آسیبپذیری بستهها را به پورت 1801/tcp ارسال میکند، محققان checkpoint برای درک بهتر کاربران از تأثیر بالقوه این سرویس در دنیای واقعی، با انجام اسکن کامل اینترنتی در کمال تعجب دریافتند که بیش از 360000 IP دارای 1801/tcp باز بر روی اینترنت هستند و سرویس MSMQ را اجرا میکنند. لازم به ذکر است که این رقم فقط شامل تعداد هاستهای در معرض اینترنت میباشد و دربردارنده رایانههایی نیست که سرویس MSMQ را در شبکههای داخلی میزبانی میکنند. (که احتمالا تعداد رایانههای به مراتب بیشتری را به خود اختصاص میدهد.)
سرویس MSMQ یک سرویس middleware یا میانافزار است که برخی از نرمافزارهای محبوب به آن متکی هستند. هنگامی که کاربر آن نرم افزار محبوب را نصب میکند، سرویس MSMQ در ویندوز فعال میشود که گاه ممکن است بدون اطلاع کاربر رخ دهد. به عنوان مثال، نصب کننده Microsoft Exchange گزینهای را برای گنجاندن خودکار ویژگیهای مورد نیاز که MSMQ را اجرا میکند ارائه میدهد. طبق مشاهده کارشناسان، هنگام نصب سرور رسمی Microsoft Exchange، در صورتی که کاربر گزینه “Automatically install Windows Server roles and features that are required to install Exchange” را انتخاب کند، برنامه wizard راهاندازی، سرویس MSMQ را در پسزمینه فعال میسازد. بنابراین سرور Exchange را با سرویس MSMQ در همان دستگاه اجرا میکند.
MSMQ در نصبهای پیش فرض ویندوز وجود ندارد اما اغلب بر روی سرورها نصب میشود تا ارتباط ناهمزمان بین برنامهها را فعال کند. میتوان آن را به روش های مختلفی نصب کرد، از جمله:
- به طور خودکار به عنوان یک جزء در یک برنامه بزرگتر (مایکروسافت یا … )
- به صورت اختیاری به عنوان یک جزء غیر ضروری از یک برنامه بزرگتر (مایکروسافت یا موارد دیگر)
- مستقیما از طریق کنترل پنل
- به صورت دستی از طریق دستورهای PowerShell CLI
پس از نصب MSMQ، یک سرویس ویندوز ایجاد میشود که به طور خودکار فرآیند mqsvc.exe را با امتیاز سطح دسترسی اکانت Network Service شروع میکند. پس از راهاندازی، این فرآیند به چندین پورت TCP زیر متصل میشود:
- 1801
- 2103
- 2105
- 2107
- 50111
البته با توجه به اجزای فرعی که ممکن است نصب شوند، احتمال استفاده از پورتهای دیگر نیز موجود است. لازم به ذکر است که نقصهای مربوط به CVE-2023-21554 از طریق پورت 1801 دسترسپذیر میباشد و با استفاده از پروتکل باینری MSMQ که مایکروسافت آن را با عنوان MQQB نامگذاری کرده، ارتباط برقرار میکند.
♦ نکته قابل توجه این است که اگر MSMQ بر روی یک سرور فعال باشد، مهاجم به طور بالقوه قادر به سوء استفاده از این آسیبپذیری یا دیگر آسیبپذیریهای MSMQ و نهایتا تصاحب سرور خواهد بود. بنابراین شدیداً به ادمینها توصیه میشود با بررسی دقیق سرورهای خود، راهکارهای حفاظتی و توصیههای کاهشی را اعمال کنند.
برنامههایی که از MSMQ استفاده میکنند
MSMQ اغلب توسط مایکروسافت و محصولات شخص ثالث به ویژه موارد ذیل با هدف ایجاد ارتباط میان برنامهها مورد استفاده قرار میگیرد :
- Citrix
- ManageEngine
- SAP
- SolarWinds
- Sophos
- Trend Micro
- Veritas
راهکارهای مقابله
- به تمامی ادمینهای ویندوز توصیه میشود با بررسی سرورها و کلاینتهای خود از نصب سرویس MSMQ و از در حال اجرا بودن سرویسی به نام «Message Queuing» اطلاع حاصل کنند، همچنین بررسی شود که آیا پورت TCP 1801 در حال listening است یا خیر. بستن سطوح حمله غیر ضروری همواره راهکار امنیتی مناسبی محسوب میشود.
- به کاربران توصیه میشود در اسرع وقت وصله رسمی مایکروسافت را برای این آسیبپذیری خاص نصب کنند. در صورتی که به MSMQ نیاز دارید اما در حال حاضر قادر به اعمال وصله مایکروسافت نیستید، میتوانید اتصالات ورودی 1801/tcp را از منابع نامعتبر با قوانین فایروال مسدود کنید. (به عنوان مثال، مسدود کردن اتصالات اینترنت به 1801/tcp برای دستگاههای دارای اینترنت)