Apr 14, 2026·7 min read·6 visits
Local attacker exploits an out-of-bounds read in the Windows CLFS driver via crafted .blf files to bypass KASLR and gain SYSTEM privileges.
CVE-2023-36424 is an actively exploited Elevation of Privilege vulnerability in the Windows Common Log File System (CLFS) driver (`clfs.sys`). By exploiting an Out-of-Bounds Read flaw during the parsing of malformed Base Log Files (.blf), a low-privileged local attacker can leak sensitive kernel pointers, bypass KASLR, and ultimately elevate privileges to SYSTEM. The flaw affects nearly all supported versions of Windows and Windows Server.
The Windows Common Log File System (CLFS) serves as a general-purpose logging subsystem utilized by both kernel-mode and user-mode applications. The core functionality is implemented within the clfs.sys kernel driver. This driver heavily relies on Base Log Files, designated by the .blf extension, to manage metadata and coordinate logging operations across the operating system. These files consist of complex binary structures that the kernel must parse during initialization and standard log access routines.
CVE-2023-36424 is a high-severity elevation of privilege vulnerability residing in the parsing logic of the clfs.sys driver. The flaw is officially classified as an Out-of-Bounds (OOB) Read, tracked under CWE-125. A local attacker with standard user privileges can trigger this vulnerability by forcing the kernel to process a maliciously crafted .blf file. Exploitation yields arbitrary read capabilities within kernel memory.
The capability to read kernel memory out-of-bounds breaks fundamental security boundaries and facilitates secondary exploitation stages. Attackers leverage the leaked data to bypass Kernel Address Space Layout Randomization (KASLR) and map the layout of kernel structures. Successful exploitation ultimately permits the attacker to overwrite process tokens and achieve SYSTEM-level execution. CISA recorded active exploitation of this flaw, underscoring the immediate risk to unpatched environments.
The root cause of CVE-2023-36424 stems from insufficient validation of internal offsets and size fields when the clfs.sys driver parses .blf files. A Base Log File contains a series of log blocks, each possessing a header that defines metadata, data offsets, and lengths. When a user calls functions such as CreateLogFile, the driver maps these structures into kernel memory and iterates through the defined offsets to process the log blocks.
The vulnerability occurs because the driver implicitly trusts the offset values provided within the .blf structure. An attacker can construct a file where specific internal pointers are modified to point outside the bounds of the legitimately allocated buffer. The driver fails to perform adequate bounds checking against the total size of the mapped file or the bounds of the current log block. Consequently, subsequent memory access operations utilize these malformed offsets.
When the driver dereferences the crafted offsets, it reads data from adjacent memory regions not associated with the .blf mapping. This out-of-bounds read does not inherently cause a system crash, allowing the attacker to retrieve the contents of arbitrary kernel memory addresses safely. The precise control over the offset values grants the attacker a reliable read primitive essential for constructing complex exploit chains.
The mitigation strategy for this vulnerability involves introducing strict bounds checking before the clfs.sys driver processes internal pointers. In the vulnerable implementation, the driver retrieves an offset from the block header and directly calculates the target memory address. This direct calculation ignores the boundaries of the containing structure, exposing the kernel to the out-of-bounds condition.
// Vulnerable Code Pattern
PCLFS_LOG_BLOCK_HEADER pHeader = GetLogBlockHeader(Context);
ULONG DataOffset = pHeader->DataOffset;
// Lack of bounds validation before memory access
PVOID TargetData = (PUCHAR)pHeader + DataOffset;
ProcessLogData(TargetData, pHeader->DataLength);The patched code enforces a mathematical validation to ensure the calculated target pointer resides within the valid bounds of the allocation. Microsoft modified the parsing functions to verify that the sum of the base address, the offset, and the data length does not exceed the maximum allowed extent of the block. If the validation fails, the driver aborts the parsing operation and returns an error code, effectively neutralizing the attack vector.
// Patched Code Pattern
PCLFS_LOG_BLOCK_HEADER pHeader = GetLogBlockHeader(Context);
ULONG DataOffset = pHeader->DataOffset;
ULONG DataLength = pHeader->DataLength;
// Strict bounds checking added
if (DataOffset > MaxBlockSize || DataLength > MaxBlockSize || (DataOffset + DataLength) > MaxBlockSize) {
return STATUS_LOG_FILE_CORRUPT;
}
PVOID TargetData = (PUCHAR)pHeader + DataOffset;
ProcessLogData(TargetData, DataLength);This remediation prevents the out-of-bounds read and hardens the overall resilience of the CLFS driver against malformed input. However, the complexity of the .blf format historically results in multiple related vulnerabilities. Security researchers continuously analyze these parsing routines, indicating that while this specific offset validation is complete, the broader attack surface requires ongoing scrutiny.
Exploiting an out-of-bounds read in the kernel requires a multi-stage approach, often beginning with precise manipulation of the kernel pool memory. Attackers use a technique known as heap grooming to ensure the memory adjacent to the .blf buffer contains predictable and useful data. In the context of CVE-2023-36424, exploit developers frequently utilize Advanced Local Procedure Call (ALPC) objects to massage the kernel heap into the required state.
Once the heap is successfully groomed, the attacker triggers the vulnerability by passing the malformed .blf file to the CLFS driver. The OOB read retrieves the adjacent ALPC object data, which includes highly sensitive kernel pointers. This information leak effectively neutralizes Kernel Address Space Layout Randomization (KASLR). The attacker uses the leaked pointers to calculate the exact base address of the kernel and the location of critical data structures.
The final stage of the exploit leverages the leaked memory addresses to achieve privilege escalation. The attacker maps the location of the EPROCESS structure for their current, unprivileged process and the EPROCESS structure for a privileged process, typically System. By utilizing secondary exploitation techniques or further manipulating CLFS metadata, the attacker overwrites their process token with the SYSTEM token, granting full control over the host.
The successful exploitation of CVE-2023-36424 yields complete administrative control over the compromised system. An attacker initiating the attack from a low-integrity, unprivileged user context can elevate their access to SYSTEM. This grants the ability to terminate security software, access sensitive data, install persistent mechanisms, and pivot laterally within the network. The vulnerability carries a CVSS 3.1 base score of 7.8, reflecting its high severity.
The Exploit Prediction Scoring System (EPSS) assigns this vulnerability a score of 0.10297, placing it in the 93.17th percentile. This statistical model indicates a high probability of continued exploitation relative to other known vulnerabilities. Furthermore, the inclusion of this flaw in the CISA Known Exploited Vulnerabilities (KEV) catalog mandates prioritized remediation for federal agencies and highlights its active use by threat actors.
The ubiquity of the CLFS driver amplifies the overall impact. The driver is present and active on virtually all supported versions of Windows 10, Windows 11, and Windows Server. This wide distribution creates a massive attack surface for threat actors. Local elevation of privilege flaws are critical components in modern intrusion chains, often combined with initial access vectors to cement control over an environment.
The definitive remediation for CVE-2023-36424 is the deployment of the official Microsoft security updates released during the November 2023 Patch Tuesday cycle. System administrators must apply the relevant cumulative updates to all affected Windows and Windows Server environments. A system reboot is strictly required to reload the kernel and initialize the patched version of the clfs.sys driver.
Microsoft has not published any viable workarounds for this vulnerability. The CLFS driver provides fundamental logging capabilities required by numerous Windows components, preventing administrators from simply disabling the service or restricting access to .blf files. Consequently, expedited patching remains the only effective strategy to secure endpoints against this specific attack vector.
Organizations should implement supplementary detection mechanisms to identify exploitation attempts prior to patch deployment. File Integrity Monitoring (FIM) solutions can track the creation of unusual or malformed .blf files in user-accessible directories. Endpoint Detection and Response (EDR) agents should be configured to detect anomalous ALPC port creation patterns and suspicious kernel-mode activity originating from low-integrity processes.
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H| Product | Affected Versions | Fixed Version |
|---|---|---|
Windows 10 Microsoft | 1507, 1607, 1809, 21H2, 22H2 | - |
Windows 11 Microsoft | 21H2, 22H2, 22H3, 23H2 | - |
Windows Server Microsoft | 2008, 2008 R2, 2012, 2012 R2, 2016, 2019, 2022, 23H2 | - |
| Attribute | Detail |
|---|---|
| CWE ID | CWE-125 |
| Attack Vector | Local |
| CVSS Base | 7.8 |
| EPSS Score | 0.10 |
| Impact | SYSTEM Elevation of Privilege |
| Exploit Status | Active Exploitation |
| CISA KEV | Listed |
Failure to properly validate offsets or size fields within the .blf metadata structures.