CVE-2023-36803 - Deep Dive into the Windows Kernel Information Disclosure Vulnerability

---

In 2023, Microsoft disclosed an important security vulnerability tracked as CVE-2023-36803. It sits inside the Windows Kernel and allows for an information disclosure—essentially leaking sensitive memory content to user processes. Let’s unpack how this bug works, the real risks, see a simple code snippet for demonstration, and point to authoritative sources for more reading.

What is CVE-2023-36803?

CVE-2023-36803 is a vulnerability found in the way the Windows Kernel manages memory objects. If exploited, a user with low-level access (think regular user—not admin) can siphon off privileged information. This could include kernel structure pointers or confidential data, making the next stage of attacks (like privilege escalation or kernel exploits) much easier.

Microsoft patches this bug in their August 2023 updates. Official entry:  
🔗 Microsoft Security Update Guide - CVE-2023-36803

Potential encryption keys, or other critical secrets

Alone, this isn’t full system compromise, but in the attack chain, it’s a booster for more damaging exploits.

The Technical Details (Explained Simply)

The root cause is often improper handling of certain APIs, buffers, or functions inside ntoskrnl.exe (Windows Kernel core). In this flaw, some system calls might return data to user-mode programs without fully initializing it, so old or sensitive kernel memory becomes visible.

Think of it as lending someone a whiteboard, but forgetting to erase last week’s secret notes.

Security researchers found that, under specific circumstances, system calls could be misused to leak these uninitialized memory chunks.

Detailed analysis:  
🔗 HackerOne Report on CVE-2023-36803

Sample Code Snippet

Here’s a simplified C example (won’t trigger the real bug, but shows the general method attackers use: requesting data from the kernel, then displaying unknown memory):

#include <Windows.h>
#include <stdio.h>

// Generic buffer size; real attackers might fuzz this!
#define BUF_SIZE 4096

int main() {
    DWORD bytesReturned;
    BYTE *buffer = (BYTE *)malloc(BUF_SIZE);
    HANDLE hDevice = CreateFileA("\\\\.\\SomeDevice", GENERIC_READ | GENERIC_WRITE,
                                 , NULL, OPEN_EXISTING, , NULL);
    if (hDevice == INVALID_HANDLE_VALUE) {
        printf("Failed to open device.\n");
        return 1;
    }

    // IOCTL code would target the specific vulnerable call
    // Replace IOCTL_CODE below with real vulnerable code if known
    if (DeviceIoControl(hDevice, IOCTL_CODE, NULL, , buffer, BUF_SIZE, &bytesReturned, NULL)) {
        printf("Data from kernel:\n");
        for (int i = ; i < bytesReturned; i++) {
            printf("%02X ", buffer[i]);
        }
        printf("\n");
    } else {
        printf("DeviceIoControl failed.\n");
    }

    CloseHandle(hDevice);
    free(buffer);
    return ;
}

Note:

Proof-of-Concept and Detection

Researchers sometimes release Proof-of-Concept (PoC) code for demonstration/validation. Such code is only shared with Microsoft and security professionals.

Detection tips

- Use EDR/AV with kernel telemetry.

Microsoft’s Fix

Microsoft’s August 2023 Patch Tuesday closes this hole by properly initializing all memory returned to user mode.

If you haven’t yet, update your Windows systems (especially servers and endpoints used by multiple users).

Official patch:  
🔗 Windows Aug 2023 Cumulative Updates

Conclusion

CVE-2023-36803 underscores why even “just” information disclosure bugs in the kernel are major risks. While it doesn’t allow full remote code execution by itself, it’s a golden stepping stone for advanced attackers.

- Microsoft Security Advisory
- HackerOne Exploit Report
- NIST NVD

Stay safe and stay patched.  
*— Your Security Blog*

Timeline

Published on: 09/12/2023 17:15:00 UTC
Last modified on: 09/12/2023 19:38:00 UTC