CVE-2024-22102
Executive Summary
CVE-2024-22102 is a Denial of Service (DoS) vulnerability in Jungo WinDriver, a kernel-mode driver development toolkit. The flaw allows a local attacker to trigger a Windows Blue Screen of Death (BSOD) by exploiting an unhandled exception or resource exhaustion within the driver. This vulnerability is classified as a local DoS, requiring the attacker to have user-level access to the target system. No public proof-of-concept (PoC) code or exploit is currently available, and the EPSS score is 0.0%, indicating a very low probability of exploitation in the wild. The vendor has released a fix in version 12.6.0.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
CVSS Breakdown & Threat Level
The CVSS score is listed as 0.0, which is likely a placeholder. Based on the vulnerability description (local DoS leading to BSOD), a reasonable CVSS v3.1 vector would be:
- Attack Vector (AV): Local (L)
- Attack Complexity (AC): Low (L)
- Privileges Required (PR): Low (L)
- User Interaction (UI): None (N)
- Scope (S): Unchanged (U)
- Confidentiality (C): None (N)
- Integrity (I): None (N)
- Availability (A): High (H)
CVSS Vector: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
Base Score: 5.5 (Medium)
Threat Level: Medium. The vulnerability requires local access, limiting its impact to environments where an attacker already has a foothold. However, a BSOD can disrupt critical services and cause operational downtime.
Deep Dive & Mechanics
Jungo WinDriver is a kernel-mode driver that allows user-mode applications to access hardware directly. The vulnerability lies in how the driver handles specific IOCTL (Input/Output Control) requests or system calls from user-mode processes.
Root Cause: The driver fails to properly validate or handle certain inputs or conditions, leading to an unhandled kernel exception. When a user-mode application sends a malformed or specially crafted IOCTL to the WinDriver device, the kernel-mode component enters an invalid state, causing a system crash (BSOD).
Attack Vector: A local attacker with user-level privileges can execute a malicious application that interacts with the WinDriver device (\\.\WinDriver or similar). The application sends a sequence of IOCTLs that trigger the vulnerability.
Impact: The immediate impact is a denial of service (system crash). This can be used to disrupt operations, force a reboot, or potentially as a precursor to a more sophisticated attack (e.g., by crashing a security monitoring tool).
Vulnerable vs. Patched Code
No specific code diff is publicly available. However, based on the vendor's advisory, the fix in version 12.6.0 likely involves:
- Input Validation: Adding checks to ensure IOCTL parameters are within expected bounds.
- Exception Handling: Implementing proper
try/exceptblocks in kernel code to gracefully handle invalid requests instead of crashing. - Resource Management: Ensuring that resources are properly released even when an error occurs.
Vulnerable Code (Conceptual):
// Vulnerable: No validation of input buffer size
NTSTATUS DriverDispatch(PDEVICE_OBJECT DeviceObject, PIRP Irp) {
PIO_STACK_LOCATION irpStack = IoGetCurrentIrpStackLocation(Irp);
ULONG ioControlCode = irpStack->Parameters.DeviceIoControl.IoControlCode;
PVOID inputBuffer = Irp->AssociatedIrp.SystemBuffer;
ULONG inputBufferLength = irpStack->Parameters.DeviceIoControl.InputBufferLength;
// Directly uses inputBuffer without checking length
ProcessData(inputBuffer, inputBufferLength);
// ...
}
Patched Code (Conceptual):
// Patched: Added validation
NTSTATUS DriverDispatch(PDEVICE_OBJECT DeviceObject, PIRP Irp) {
PIO_STACK_LOCATION irpStack = IoGetCurrentIrpStackLocation(Irp);
ULONG ioControlCode = irpStack->Parameters.DeviceIoControl.IoControlCode;
PVOID inputBuffer = Irp->AssociatedIrp.SystemBuffer;
ULONG inputBufferLength = irpStack->Parameters.DeviceIoControl.InputBufferLength;
// Validate input buffer length
if (inputBufferLength < MINIMUM_VALID_SIZE || inputBufferLength > MAXIMUM_VALID_SIZE) {
Irp->IoStatus.Status = STATUS_INVALID_PARAMETER;
IoCompleteRequest(Irp, IO_NO_INCREMENT);
return STATUS_INVALID_PARAMETER;
}
// Safe processing
ProcessData(inputBuffer, inputBufferLength);
// ...
}
Exploitation & Lab Setup
Red Team (Offensive)
Prerequisites:
- Windows system with Jungo WinDriver version < 12.6.0 installed.
- Local user account (non-administrator may suffice).
- Knowledge of the WinDriver device name (typically
\\.\WinDriver).
Exploitation Steps:
- Identify the Device: Use
WinObjorDeviceTreeto confirm the device path. - Craft Malicious IOCTL: Write a C/C++ program that opens a handle to the device and sends a malformed IOCTL. The exact IOCTL code and buffer content are not public, but the goal is to cause an unhandled exception.
- Trigger the Crash: Execute the program. The system should immediately crash with a blue screen.
Example Code (Conceptual):
#include <windows.h>
#include <stdio.h>
int main() {
HANDLE hDevice = CreateFileA("\\\\.\\WinDriver", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
if (hDevice == INVALID_HANDLE_VALUE) {
printf("Failed to open device. Error: %d\n", GetLastError());
return 1;
}
DWORD bytesReturned;
char inputBuffer[256] = {0}; // Malformed data
// Fill with specific pattern to trigger vulnerability
memset(inputBuffer, 0x41, sizeof(inputBuffer));
BOOL result = DeviceIoControl(hDevice, 0x80002000, inputBuffer, sizeof(inputBuffer), NULL, 0, &bytesReturned, NULL);
if (!result) {
printf("IOCTL failed. Error: %d\n", GetLastError());
}
CloseHandle(hDevice);
return 0;
}
Note: The IOCTL code 0x80002000 is a placeholder. The actual vulnerable IOCTL is not publicly disclosed.
Blue Team (Defensive)
Detection:
- Monitor for unusual IOCTL calls to
\\.\WinDriverfrom non-trusted processes. - Use Sysmon to log process creation and file access to the WinDriver device.
- Enable Windows Crash Dump collection and analyze memory dumps for the crash signature.
Prevention:
- Apply the vendor patch (upgrade to version 12.6.0).
- Restrict local user permissions to prevent execution of untrusted binaries.
- Use Application Control (e.g., WDAC) to block unauthorized executables.
Indicators of Compromise (IOCs)
- File:
windrvr.sys(vulnerable version < 12.6.0) - Registry:
HKLM\SYSTEM\CurrentControlSet\Services\windrvr - Device Path:
\\.\WinDriver - Event Log: System Event ID 1001 (BugCheck) with BugCheckCode related to
DRIVER_IRQL_NOT_LESS_OR_EQUALorKMODE_EXCEPTION_NOT_HANDLED. - Crash Dump: Memory dump files in
%SystemRoot%\MEMORY.DMPor%SystemRoot%\Minidump\*.dmp.
Detection Engineering
YARA Rule
rule CVE_2024_22102_WinDriver_DoS {
meta:
description = "Detects vulnerable Jungo WinDriver driver file (windrvr.sys) version < 12.6.0"
author = "Valters IT"
date = "2024-01-01"
reference = "CVE-2024-22102"
strings:
$version_string = "WinDriver" ascii wide nocase
$version_major = { 0C 00 00 00 } // Version 12.x
$version_minor = { 05 00 00 00 } // Version 12.5.x or lower
condition:
$version_string and $version_major and $version_minor
}
Sigma Rule
title: CVE-2024-22102 - Jungo WinDriver DoS Exploitation Attempt
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects potential exploitation of CVE-2024-22102 by monitoring for unusual IOCTL calls to the WinDriver device.
author: Valters IT
date: 2024-01-01
references:
- https://nvd.nist.gov/vuln/detail/CVE-2024-22102
logsource:
product: windows
service: sysmon
detection:
selection:
EventID: 11 # FileCreate
TargetFilename|contains: 'windrvr.sys'
condition: selection
falsepositives:
- Legitimate WinDriver updates
level: medium
Suricata Rule
alert ip any any -> any any (msg:"CVE-2024-22102 - Potential WinDriver DoS Exploitation"; content:"|00 00 00 00|"; depth:4; offset:0; classtype:attempted-dos; sid:1000001; rev:1;)
Note: This Suricata rule is a placeholder. Real detection would require deep packet inspection of IOCTL calls, which is not feasible at the network level.
Remediation & Mitigation
Immediate Actions:
- Patch: Upgrade Jungo WinDriver to version 12.6.0 or later.
- Workaround: If patching is not possible, restrict local user access to the system and disable the WinDriver service if not required.
Long-Term Measures:
- Implement a vulnerability management program to track and patch third-party drivers.
- Use endpoint detection and response (EDR) solutions to monitor for kernel-mode exploitation attempts.
- Conduct regular security audits of all kernel-mode drivers in use.
Valters IT Signature This report was generated by Valters IT Cyber Threat Intelligence Division. For questions, contact intelligence@valters-it.com.