باگ بحرانی جدید ویندوز و اجرای کد از راه دور از طریق SMB

آسیب‌پذیری بحرانی در SMBv3 می‌تواند در یک شبکه که به‌روز رسانی این نقص در صبح روز ۱۲ مارس منتشر شد. آسیب پذیری به دلیل پردازش نامناسب صورت می‌گیرد که منجربه سرریز بافر و اجرای کد دلخواه در کلاینت و سرور قربانی می‌شود.

آسیب‌پذیری بحرانی در SMBv3 می‌تواند در یک شبکه با استفاده از آخرین پروتکل SMB 3.1.1 گسترش یابد. به‌روز رسانی این نقص در صبح روز ۱۲ مارس منتشر شد. آسیب پذیری به دلیل پردازش نامناسب پیام در payload پکت صورت می‌گیرد که منجربه سرریز بافر و اجرای کد دلخواه در کلاینت و سرور قربانی می‌شود.

آسیب‌پذیری:  CVE-2020-0796

درجه آسیب‌پذیری:

NVD score not yet provided

سیستم‌های آسیب‌پذیر:

Windows 10 Version 1903 for 32-bit Systems

Windows 10 Version 1903 for ARM64-based Systems

Windows 10 Version 1903 for x64-based Systems

Windows 10 Version 1909 for 32-bit Systems

Windows 10 Version 1909 for ARM64-based Systems

Windows 10 Version 1909 for x64-based Systems

Windows Server, version 1903

Windows Server, version 1909

توضیحات:

در صورتیکه سیستم بر روی پورت ۴۴۵ از بیرون قابل دسترس باشد، بصورت پیش فرض غیرفشرده سازی فعال است و  کلاینت payload فشرده سازی شده را به سرور ارسال می‌نماید. در هدر غیرفشرده سازی SMB آسیب پذیری شناسایی می شود که نیازی به احراز هویت هم ندارد. اندازه دستکاری شده OriginalSize باعث ایجاد سرریز بافر در سرور خواهد شد. همینطور در سمت کلاینت در صورتیکه کلاینت به سک سرور آلوده وصل شود، هر دو سمت به یک درخواست دستکاری شده پاسخ می دهند و منجربه سرریز بافر در سرور و کلاینت می شود.

  • دو پارامتر در هدر مورد توجه است: OriginalCompressedSegmentSize و Offset/Length.
  • تابع Srv2DecompressData (srv2.sys) اندازه بافر را به مقدار OriginalCompressedSegmentSize + Offset/Length اختصاص می‌دهد.
  • اعتبارسنجی این مقادیر صورت نمی گیرد و مهاجم می تواند اندازه بافر را کمتر در نظر بگیرد.
  • اطلاعات در buffer + offset از حالت فشرده بودن خارج می‌شود و از اطلاعات در packet+0x10+offset استفاده می‌شود.
  • OriginalCompressedSegmentSize به عنوان پارامتر UncompressedBufferSize استفاده می‌شود و به تابع SmbCompressionDecompression داده می‌شود که یک wrapper برای SmbCompressionDecompression می باشد.

به همین دلیل فرایند از حالت فشرده خارج کردن می تواند بافر را از اندازه اصلی خارج نماید.

این نقص می تواند روی کلاینت و سرور در فرایند SMB برای فشرده کردن پیام تاثیر بگذارد. آسیب‌پذیری سرور در srv2.sys اتفاق می‌افتد و در سمت کلاینت در فایل mrxsmb.sys اتفاق می‌افتد و در هر دو حالت یک کد در SmbCompressDecompress استفاده می‌شود.

پیشنهاد می‌شود سریعا سازمان ها نسبت به به روز رسانی سیستم‌های خود اقدام نمایند در حال حاضر اکسپلویت بصورت عمومی منتشر نشده است ولی مطمئنا در آینده بسیار نزدیک در دسترس همگان قرار خواهد گرفت. سیستم‌های بسیار پرخطر آن‌هایی هستند که بصورت عمومی پورت ۴۴۵ از اینترنت قابل دسترس هستند مانند باگ WannaCry.

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

Set-ItemProperty -path “HKLM:SYSTEM\CurrentControlSet/Services/LanmanServer\Parameters” DisableCompression -Type DWORD -Value 1 -Force

این تغییر به راه‌اندازی مجدد سیستم نیاز ندارد و این سرویس فعلا در ویندوز عادی و ویندوز سرور استفاده نمی‌شود. پس غیرفعال کردن فشرده سازی SMB تاثیری روی عملکرد ویندوز نمی‌گذارد.

با بستن دسترسی از اینترنت برای TCP port 445 می‌توان جلوی اکسپلویت شدن سیستم‌ها را از طریق اینترنت گرفت ولی هنوز سیستم آسیب‌پذیر است اگر حمله کننده وارد سازمان شود که می‌بایست وصله امنیتی ارایه شده توسط مایکروسافت نصب گردد.

منابع:

https://www.mcafee.com/blogs/other-blogs/mcafee-labs/smbghost-analysis-of-cve-2020-0796/

https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/adv200005

در صورت تمایل به اشتراگ بگذارید