آسیب‌پذیری اجرای کد از راه دور سرویس Windows Print Spooler (PrintNightmare)

  • شناسه: CVE-2021-34527
  • درجه خطر: بسیار خطرناک
  • امتیاز: ۸.۸ (از ۱۰)
  • نوع آسیب‌پذیری: اجرای کد از راه دور

این باگ که با شماره آسیب‌پذیری CVE-2021-34527 شناسایی شده است، هنگامی که سرویس Windows Print Spooler به طور نامناسب عملیات فایل با دسترسی سطح بالا را انجام دهد، به نفوذگر این امکان را می‌دهد تا با سواستفاده از این آسیب‌پذیری اقدام به اجرای کد از راه دور با سطح دسترسی SYSTEM نماید.

در حال حاضر، با وجود اینکه کد سوء استفاده از این آسیب‌پذیری، به صورت عمومی انتشار یافته است، هیچ وصله امنیتی برای رفع آسیب‌پذیری روز صفرم PrintNightmare وجود نداشته، لذا لازم است تا در سریع ترین زمان ممکن، تنها راه‌حل موجود که غیر فعال سازی این سرویس و یا محدودیت آن به استفاده LOCAL می‌باشد را در دستور کار خود قرار دهید.
بروز رسانی: پس از یک هفته، در تاریخ ۱۵ تیر ۱۴۰۰ وصله مربوط به این آسیب‌پذیری از جانب مایکروسافت منتشر گردید.
جهت سو استفاده از این آسیب‌پذیری، لازم است تا نفوذگر نام کاربری و رمز عبور حداقل یک کاربر در شبکه را داشته و همچنین سیستم نفوذگر و سیستم هدف به یک مسیر مشترک دسترسی داشته باشند.
نفوذ گر با قرار دادن فایل دلخواه خود در مسیر اشتراکی و با فراخوانی تابع ()RpcAddPrinterDriverEx باعث میشود تا سیستم به عنوان درایور یک پرینتر جدید اقدام به اجرای آن فایل دلخواه با سطح دسترسی سیستم بنماید.

نسخه‌های آسیب‌پذیر:

تمامی نسخه‌های ویندوز تا زمان انتشار این آسیب‌پذیری

توصیه‌های امنیتی

  1. تنها راه‌حل موجود جهت ادامه استفاده امن از پرینتر، نصب بروز رسانی می‌باشد.
    شما می‌توانید با نصب وصله‌ امنیتی زیراقدام به رفع این آسیب‌پذیری بنمایید:
    CVE-2021-34527

  2. در صورت عدم امکان نصب بروز رسانی، تنها راه حل موجود غیر فعال کردن و یا محدود کردن پرینتر به استفاده محلی و عدم استفاده از پرینتر به صورت اشتراکی است:
    ابتدا با اجرای دستور زیردر PowerShell وضعیت سرویس Print Spooler را مشخص نمایید (تمامی دستوراتی که در ادامه آورده می‌شود بایستی که با دسترسی سطح ادمین اجرا شوند):

    Get-Service -Name Spooler

    اگر Print Spooler در حال اجرا است یا اگر سرویس آن غیرفعال نشده است، یکی از گزینه های زیر را انتخاب کنید تا سرویس Print Spooler غیرفعال کرده و یا پرینت از راه دور را از طریق Group Policy غیرفعال کنید:

    گزینه 1 – غیر فعال کردن سرویس Print Spooler:

    شما با اجرای دستورات زیر می‌توانید سرویس Print Spooler را در شبکه خود به کلی غیرفعال نمایید. توجه فرمایید که با این کار دیگر امکان استفاده از پرینتر (چه به صورت محلی چه از طریق ریموت) تا زمان فعال کردن مجدد این سرویس وجود ندارد

    Stop-Service -Name Spooler -Force
    
    Set-Service -Name Spooler -StartupType Disabled

    گزینه 2 – غیر فعال کردن امکان پرینت از راه دور از طریق Group Policy:

    پس اعمال این تغییرات، دیگر امکان استفاده از پرینتر از طریق شبکه وجود نداشته و تنها امکان استفاده از پرینتر در سیستمی که به صورت فیزیکی به آن متصل است، وجود خواهد داشت.
    ابتدا از طریق Group Policy به مسیر زیر بروید:
    Computer Configuration / Administrative Templates / Printers
    حال در این مرحله گزینه Allow Print Spooler to accept client connections را انتخاب کرده و آن‌ را در وضعیت disable قرار دهید.