آسیب‌پذیری در CryptoAPIویندوز و نحوه رفع آن به زبان ساده

در روزهای گذشته خبر آسیب‌پذیری با شناسه CVE-2020-0601 در سیستم عامل ویندوز 10 و ویندوز سرور 2016 و 2019 یکی از اخبار جالب و بسیار نگران کننده بود. جالب از این جهت که این آسیب‌پذیری را اولین بار NSA  اعلام کرد و نگران کننده از این جهت که NSA اعلام کرد! سازمانی که خود سابقه تاریکی در جاسوسی از شهروندان امریکایی و غیر امریکایی دارد این آسیب‌پذیری را اعلام کرد و احتمالاً به این دلیل است که NSA متوجه شده هکرهای سایر کشورها مانند روسیه یا چین هم از این آسیب‌پذیری استفاده می‌کنند و با اعلام آن سعی کرده در کار آنها اختلال ایجاد کند وگرنه NSA چندان خیر خواه امنیت دیگران نیست. در آسیب‌پذیری MS17-10 یا همان  EternalBlue هم با اینکه NSA مدت‌ها قبل آسیب‌پذیری را کشف کرده بود اما آن را اعلام نکرده بود و سال‌ها از آن استفاده می‌کرد تا اینکه پس از نفوذ گروه Shadow Brokers به NSA این مورد را منتشر کرد .
در این گزارش به زبان ساده خطرات این آسیب‌پذیری، نحوه بررسی آسیب‌پذیر بودن سیستم و به روزرسانی آن را شرح خواهیم داد.

این آسیب‌پذیری روی CryptoAPI (Crypt32.dll) است که ویندوز و برخی نرم افزارها از آن برای اعتبارسنجی گواهینامه با رمزنگاری منحنی بیضوی (Elliptic Curve) استفاده می‌کنند و می‌تواند منجر به جعل گواهینامه شود. دقت کنید که خود الگوریتم رمزنگاری منحنی بیضوی آسیب‌پذیر نیست و جزو امن ترین الگوریتم‌های رمزنگاری دنیا است آسیب‌پذیری روی پیاده سازی آن است برای توضیحات بیشتر می توانید به اینجا مراجعه فرمایید. جعل گواهی‌های رمزنگاری که در ارتباطات رمزشده استفاده می‌شود می‌تواند باعث حمله مرد میانی  و شنود ارتباط رمزشده هم بشود . از طرفی بسیاری از برنامه‌ها در ویندوز دارای امضای دیجیتال از طرف سازنده هستند (شکل 1)  به کمک ابزار Sigcheck هم می‌توانید امضای دیجیتال برنامه ها را بررسی کنید. به عنوان مثلا خروجی بررسی برنامه پرکاربرد nslookup روی این سیستم به شکل 2 است. این امضای دیجیتال نشان دهنده این است که نرم افزار از طرف یک سازنده معتبر مثلا Microsoft ایجاد شده است و فایلی که در اختیار ماست توسط فرد دیگری دستکاری نشده و همان فایلی سازنده است. فاجعه بزرگ اینجاست که بسیاری از آنتی ویروس‌ها با دیدن امضای معتبر یک برنامه آن را اسکن نمی‌کنند و مهاجمان به کمک این آسیب‌پذیری می‌توانند هر برنامه مخربی را امضا شده توسط یک سازنده معتبر مانند Microsoft نشان دهند! حتی فایل‌های Macro در نرم افزارهایی مانند Word هم ار این قاعده مستثنا نیستند و اگر در تنظیمات این نرم افزار اجازه اجرا فقط به فایل‌های دارای امضای معتبر داده شده باشد اکنون با این آسیب‌پذیری می‌توان هر فایل مخربی را در آن اجرا کرد.
شکل 1- برنامه دارای امضای معتبر (راست) و برنامه با امضای نامعتبر (چپ)

شکل 2- بررسی امضای nslookup.exe
توجه شود که اگر ابزاری برای رمزنگاری خود از کتابخانه‌های خودش استفاده کند و از ویندوز کمک نگیرد این آسیب‌پذیری روی آن تاثیری نخواهد داشت مانند مرورگر Firefox (البته ممکن است آسیب‌پذیری‌های دیگری داشته باشد!)



برای بررسی آسیب پذیر بودن یک سیستم دو راه وجود دارد  روش برخط (Online) و غیربرخط (Offline).
3-1- روش برخط (Online)
در این روش با مرورگر Edge یا Internet Explorer به وب سایت https://curveballtest.com/index.htmlرفته اگر مانند شکل 3 پیام You Are Vulnerable را مشاهده کردید شما آسیب پذیر هستید. اگر بعد از نصب به روزرسانی مجدداً عبارت You Are Vulnerable را مشاهده کردید چند بار دکمه Ctrl+F5 را فشارید تا صفحه کامل Refresh شود اگر پیام شکل 4 را دیدید به روزرسانی به درستی انجام شده است.
 
شکل 3- پیام آسیب پذیر بودن
 
شکل 4- پیام آسیب پذیر نبودن
3-2- روش غیربرخط (Offline)
در این روش این فایل را دانلود بفرمایید و از حالت فشرده خارج کنید (کلمه عبور curveball) است. روی فایل کلیک راست کنید و روی Properties کلید کنید در برگه Digital Signatures در وسط صفحه Microsoft Windows را انتخاب کنید و روی Details کلیک کنید اگر در پنجره بازشده عبارت This digital signature is OK را مشاهده کردید (شکل 5) سیستم شما آسیب پذیر است.

شکل 5- سیستم ایمن (راست) سیستم آسیب پذیر (چپ) 
4- نحوه مقابله
برای مقابله با این آسیب‌پذیری باید ویندوز خود را طبق یکی از روش‌های زیر به روز رسانی کنید.
4-1- روش اول - به روزرسانی خودکار (توصیه می شود)
 سیستم خود را به اینترنت متصل کنید و در منوی استارت ویندوز update را تایپ کنید و روی windows update و در صفحه بازشده Check for updates  (شکل 6) کلیک کنید و مدتی طولانی منتظر بمانید تا ویندوز شما آپدیت شود و درنهایت سیستم را Restart کنید و دوباره آسیب پذیر بودن سیستم خود را بررسی کنید.
شکل 6- شروع بروزرسانی ویندوز
4-2- روش دوم - به روزرسانی دستی:
اگر به هر دلیلی امکان به روزرسانی خودکار برای شما وجود ندارد از این روش استفاده کنید.
ابتدا با نوشتن winver در run یا منو استارت ویندوز 10 نسخه دقیق ویندوز را تعیین کنید مانند شکل 7 که در این مثلا ویندوز 1809 است.
 
شکل 7-تعیین  نسخه ویندوز
همچنین باید 32 یا 64 بیتی بودن ویندوز خود را با کلیک راست روی This PC و انتخاب Properties و مشاهده 32 یا 64 بیتی بودن در صفحه باز شده تعیین کنید (شکل 8).
 
شکل 8- تعیین 32 یا 64 بیتی بودن ویندوز
پس از تعیین نسخه دقیق ویندوز به صفحه توضیحات آسیب‌پذیری بروید و در بخش Security Updates متناسب با نسخه ویندوز خود آپدیت مناسب را انتخاب کنید و با کلیک روی Security Update به صفحه دانلود به روزرسانی بروید (شکل 9).
 
شکل 9- انتخاب آپدیت مناسب
در صفحه دانلود بازهم متناسب با نسخه ویندوز خود روی دکمه Download کلیک کنید (شکل 10).
 
شکل 10- صفحه دانلود آپدیت
در صفحه باز شده روی لینک آپدیت مورد نظر (شکل 11) کلیک کنید تا دانلود فایل آغاز شود.
 
شکل 11- لینک دانلود آپدیت
پس از دانلود، فایل دریافتی که با نامی مشابه windows10.0-kb4534273-xxxxxxxxxxxxxx.msu است را اجرا کنید و روی Yes کلیک کنید تا نصب آپدیت آغاز شود. در پایان پیام شکل 12 نمایش داده می‌شود و روی Restart Now کلید کنید تا نصب تکمیل شود.


 
شکل 12- پایان نصب آپدیت
5- بررسی نصب بودن به روزرسانی
برای بررسی آسیب‌پذیر بودن سیستم می‌توانید با روش‌های گفته شده در بخش آیا سیستم من آسیب‌پذیر است؟ عمل کنید یا با روش‌های زیر از نصب به روزرسانی اطمینان حاصل کنید.
5-1- روش اول
فایل نصب آپدیت را دوباره اجرا کنید اگر نصب باشد به شما پیام شکل 13 نمایش داده می‌شود.

شکل 13- پیام نصب بودن آپدیت
5-2- روش دوم
برای بررسی نصب بودن به روزرسانی روی یک سیستم update history را در منو استارت ویندوز تایپ کنید و در برگه View update history به دنبال نام آن مثلاً kb4534273 بگردید (شکل 14) توجه داشته باشید که بسته به نسخه ویندوز ممکن است نام به‌روزرسانی فرق کند، مثلاً برای ویندوز 1903 نام به روزرسانی KB4528760 است این نام را در ابتدای نام فایل به روزرسانی دانلود شده می توانید ببینید در جدول 1 نام آپدیت‌ها بر اساس نسخه ویندوز آورده شده است.
 
شکل 14- بررسی نصب آپدیت


جدول 1- جدول نام آپدیت‌ها بر اساس نسخه ویندوز


5-3- روش سوم
در منوی استارت appwiz.cpl را تایپ کنید و آن را اجرا نمایید در سمت چپ روی View installed updates کلیک کنید در این صفحه دنبال آپدیت بگردید، از قسمت جستجوی بالا هم می‌توانید کمک بگیرید (شکل 15).
 
شکل 15-بررسی نصب آپدیت روش دوم
5-4- روش چهارم (حرفه‌ای)
در powershell  دستور Get-HotFix –Id با نام مناسب KB ( طبق جدول 1) را وارد کنید اگر آپدیت نصب شده باشد خروجی باید به شکل 16 باشد وگرنه پیام خطا نمایش داده می‌شود.
 
شکل 16- بررسی نصب با Powershell

نسخه الکترونیکی گزارش فوق :
-cve-2020-0601.pdf [1.69 Mb] ( تعداد دانلود: 0)