چهارمین نقص امنیتی که در سیستم عامل ویندوز وجود دارد و مورد استفاده در حملات هدفمند می باشد.
در فوریه سال ۲۰۱۹ سیستم خودکار پیشگیری از نفوذ کسپرسکی (AEP) وجود یک حفره امنیتی در سیستم عامل ویندوز را تشخیص داد. در بررسی های بیشتر مشخص شد که این نقص درون win32k.sys قرار دارد. شرکت کسپرسکی در تاریخ ۲۲ فوریه ۲۰۱۹ این مطلب را به شرکت مایکروسافت اعلام کرد.این شرکت آن را تائید کرده و تلاش خود را برای بر طرف کردن آن آغاز نمود و طبق کد گذاری خود کد CVE-2019-0797 را به این حفره امنیتی اختصاص داد.
این به عنوان چهارمین حفره امنیتی در سیستم عامل ویندوز است که اخیرا با فناوری های پیشرفته شرکت کسپرسکی کشف و گزارش شده است. همانند حفره های امنیتی CVE-2018-8589 شرکت کسپرسکی معتقد است که exploit هم از چند روش مختلف حمله از جمله FruityArmor و SandCat استفاده می کند. FruityArmor می تواند به صورت پیشرفته از SandCat APT و CHAINSHOT استفاده کند که اخیرا کشف شده است. علاوه بر این ها، این exploit قادر است از قالب FinFisher / FinSpy استفاده کند.
شرکت کسپرسکی این نقص امنیتی را از طریق راه های زیر تشخیص داده است:
جهت دریافت آپدیت های مورد نظر به سایت مایکروسافت مراجعه کنید.
CVE-2019-0797 is a race condition that is present in the win32k driver due to a lack of proper synchronization between undocumented syscalls NtDCompositionDiscardFrame and NtDCompositionDestroyConnection. The vulnerable code can be observed below on screenshots made on an up-to-date system during initial analysis:
On this screenshot with the simplified logic of the NtDCompositionDiscardFrame syscall you can see that this code acquires a lock that is related to frame operations in the structure DirectComposition::CConnection and tries to find a frame that corresponds to a given id and will eventually call a free on it. The problem with this can be observed on the second screenshot:
Snippet of NtDCompositionDestroyConnection syscall inner function (Windows 8.1)
On this screenshot with the simplified logic of the function DiscardAllCompositionFrames that is called from within the NtDCompositionDestroyConnection syscall you can see that it does not acquire the necessary lock and calls the function DiscardAllCompositionFrames that will release all allocated frames. The problem lies in the fact that when the syscalls NtDCompositionDiscardFrame and NtDCompositionDestroyConnection are executed simultaneously, the function DiscardAllCompositionFrames may be executed at a time when the NtDCompositionDiscardFrame syscall is already looking for a frame to release or has already found it. This condition leads to a use-after-free scenario.
Interestingly, this is the third race condition zero-day exploit used by the same group in addition to CVE-2018-8589 and CVE-2018-8611.
Stop execution if module file name contains substring “chrome.exe”
The exploit that was found in the wild was targeting 64-bit operating systems in the range from Windows 8 to Windows 10 build 15063. The exploitation process for all those operating systems does not differ greatly and is performed using heap spraying palettes and accelerator tables with the use of GdiSharedHandleTable and gSharedInfo to leak their kernel addresses. In exploitation of Windows 10 build 14393 and higher windows are used instead of palettes. Besides that, that exploit performs a check on whether it’s running from Google Chrome and stops execution if it is because vulnerability CVE-2019-0797 can’t be exploited within a sandbox.
منبع: Kaspersky