CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2025-21423

Kernel Memory Corruption in Qualcomm Display Driver via Unvalidated Array Index in EnableTestMode

Alon Barad
Alon Barad
Software Engineer

Mar 1, 2026·6 min read·40 visits

Executive Summary (TL;DR)

CVE-2025-21423 is a local privilege escalation vulnerability in Qualcomm's Display driver used in Snapdragon devices. It allows a local attacker to corrupt kernel memory by passing an unchecked array index to the `EnableTestMode` function. This affects Android devices and Windows-on-ARM laptops. There are no known active exploits, but the complexity to exploit is low.

A high-severity memory corruption vulnerability exists in the Qualcomm Display driver, affecting a broad range of Snapdragon Compute, Connectivity, and IoT platforms. The flaw resides in the handling of the `EnableTestMode` command, which is exposed to user-space applications via the driver's Escape interface. By supplying a crafted index value within the input buffer, a local attacker can trigger an out-of-bounds memory access (CWE-129). This primitive can be leveraged to corrupt kernel memory structures, leading to a Denial of Service (DoS) or, more critically, local privilege escalation to kernel level.

Vulnerability Overview

The Qualcomm Display driver serves as the interface between the operating system kernel and the display hardware subsystem. To support diagnostics and factory testing, the driver exposes a set of 'Escape' calls—vendor-specific extensions to the standard graphics driver API (such as D3DKMTEscape on Windows or specific ioctl commands on Linux/Android). These interfaces allow user-mode clients to send opaque command buffers directly to the kernel-mode driver.

The vulnerability, identified as CVE-2025-21423, is located specifically within the handler for the EnableTestMode command. This function is designed to activate specific diagnostic configurations based on user input. However, the mechanism used to select these configurations lacks robust input validation, creating a direct path for memory corruption.

Because graphics drivers typically have a wide attack surface and are accessible to low-privileged applications (to support rendering), this vulnerability presents a significant risk. It allows a compromised low-privileged process—such as a malicious app or a browser renderer process that has achieved a sandbox escape—to attack the kernel directly.

Root Cause Analysis

The root cause of this vulnerability is an Improper Validation of Array Index (CWE-129). The EnableTestMode function retrieves an integer index from the user-supplied input buffer and uses it to reference an internal array of test mode configuration structures or function pointers.

In the vulnerable code path, the driver fails to verify that the user-supplied index is strictly less than the maximum number of defined test modes. The driver logic assumes the client will provide a valid index. This is a classic 'Time-of-Check to Time-of-Use' (TOCTOU) or missing bounds check scenario where untrusted data controls control flow or memory access.

When an attacker provides an index that exceeds the array's bounds, the driver calculates a memory address outside the intended data structure. If this operation is a read, it may leak adjacent kernel memory (information disclosure). If it is a write—for example, setting a 'mode active' flag—it results in memory corruption. Given the context of 'Enabling' a mode, the operation likely involves writing state data to the calculated address, making this a kernel memory corruption primitive.

Technical Code Analysis

While the exact proprietary source code is not public, the vulnerability follows a standard pattern often seen in driver dispatch routines. Below is a reconstruction of the vulnerable logic versus the remediated code path.

Vulnerable Logic

In the vulnerable version, the driver extracts the TestModeIndex and immediately uses it for pointer arithmetic.

NTSTATUS QclDisplayDispatchEscape(PVOID InputBuffer, ULONG InputSize) {
    // Cast input to expected structure
    PTEST_MODE_CMD cmd = (PTEST_MODE_CMD)InputBuffer;
 
    // VULNERABILITY: No check against MAX_TEST_MODES
    // The attacker controls cmd->TestModeIndex (e.g., 0xFFFFFFFF or large positive int)
    
    PTEST_CONFIG config = &GlobalTestModeArray[cmd->TestModeIndex];
    
    // Write to kernel memory (Corruption)
    config->IsEnabled = TRUE;
    config->Flags = cmd->Flags;
    
    return STATUS_SUCCESS;
}

Remediated Logic

The patch introduces a strict boundary check before the index is used. This ensures that the pointer arithmetic yields a valid address within the GlobalTestModeArray.

NTSTATUS QclDisplayDispatchEscape(PVOID InputBuffer, ULONG InputSize) {
    PTEST_MODE_CMD cmd = (PTEST_MODE_CMD)InputBuffer;
 
    // FIX: Validate index against the array size
    if (cmd->TestModeIndex >= MAX_TEST_MODES) {
        return STATUS_INVALID_PARAMETER;
    }
 
    // Safe access
    PTEST_CONFIG config = &GlobalTestModeArray[cmd->TestModeIndex];
    
    config->IsEnabled = TRUE;
    config->Flags = cmd->Flags;
    
    return STATUS_SUCCESS;
}

This simple validation effectively neutralizes the attack vector by rejecting malformed requests before any memory operation occurs.

Exploitation Methodology

Exploitation of CVE-2025-21423 requires local code execution on the target device. The attack chain typically proceeds as follows:

  1. Interface Enumeration: The attacker identifies the handle to the display device. On Windows, this involves opening the GDI adapter; on Android, it involves opening the framebuffer or DRM device nodes (/dev/dri/card0).
  2. Escape Call Crafting: The attacker constructs a specifically formatted buffer matching the structure expected by the EnableTestMode handler. The critical payload is the TestModeIndex integer.
  3. Heap Grooming (Optional but likely): To maximize reliability, the attacker might perform heap spraying or grooming to ensure that the memory immediately following the GlobalTestModeArray contains sensitive data structures (like a process token or a function pointer table).
  4. Triggering the Corruption: The attacker invokes the Escape system call. The driver uses the OOB index to calculate a target address relative to the array base.
  5. Privilege Escalation:
    • Data-Only Attack: The attacker targets a structure like _SEP_TOKEN_PRIVILEGES (on Windows) or cred struct (on Linux/Android) to grant the current process elevated capabilities (e.g., SeDebugPrivilege or CAP_SYS_ADMIN).
    • Control Flow Hijacking: If the corruption overwrites a function pointer, the attacker can redirect execution to a ROP chain or shellcode (though Supervisor Mode Execution Prevention (SMEP) makes this harder, necessitating data-only attacks).

Impact Assessment

The impact of this vulnerability is rated High (CVSS 7.8).

Confidentiality & Integrity: Successful exploitation allows arbitrary modification of kernel memory. This is sufficient to bypass OS security controls, disable code signing enforcement, or extract encryption keys stored in kernel memory.

Availability: Improper usage of the OOB index can access unmapped memory pages, triggering a page fault in kernel mode. This results in an immediate system crash (Blue Screen of Death on Windows or Kernel Panic on Linux), causing a Denial of Service.

Scope: The vulnerability affects both mobile devices (Android smartphones using Snapdragon chips) and Always-Connected PCs (Windows on Snapdragon). This makes the blast radius significant, covering millions of consumer and enterprise devices.

Remediation & Mitigation

There are no viable workarounds for this vulnerability that do not involve patching, as disabling the display driver is not feasible for device operation. Remediation relies entirely on vendor updates.

For End Users:

  • Windows-on-ARM: Check Windows Update for firmware/driver updates. Look for 'Qualcomm System' or 'Display' driver updates released after April 2025.
  • Android: Install the Android Security Patch Level (SPL) matching the OEM's release timeline (typically included in the monthly security bulletin updates).

For Enterprise Administrators:

  • Deploy forced compliance policies to ensure devices (especially Snapdragon-based laptops like Surface Pro X or ThinkPad X13s) are running the latest driver versions.
  • Monitor EDR logs for abnormal D3DKMTEscape calls, although detection at this granularity is difficult without specific driver instrumentation.

Official Patches

QualcommQualcomm April 2025 Security Bulletin

Technical Appendix

CVSS Score
7.8/ 10
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
EPSS Probability
0.07%
Top 79% most exploited

Affected Systems

Snapdragon 8cx Gen 3 (Compute Platform)Snapdragon 8cx Gen 2 (Compute Platform)Snapdragon 7c+ Gen 3 (Compute Platform)Snapdragon 8 Gen Series (Mobile)Qualcomm FastConnect 6900/7800Qualcomm WCD9385 Audio Codec

Affected Versions Detail

Product
Affected Versions
Fixed Version
Snapdragon Compute Platforms
Qualcomm
All versions prior to April 2025 PatchApril 2025 Patch Level
Snapdragon Mobile Platforms
Qualcomm
All versions prior to April 2025 PatchApril 2025 Patch Level
AttributeDetail
CWE IDCWE-129 (Improper Validation of Array Index)
CVSS v3.17.8 (High)
Attack VectorLocal (AV:L)
Privileges RequiredLow (PR:L)
Exploit StatusNo Known Exploited Vulnerability (KEV)
EPSS Score0.07% (Low Probability)

MITRE ATT&CK Mapping

T1068Exploitation for Privilege Escalation
Privilege Escalation
T1211Exploitation for Defense Evasion
Defense Evasion
CWE-129
Improper Validation of Array Index

The product uses untrusted input as an index into an array, but it does not validate or incorrectly validates that the index is within the boundaries of the array.

Vulnerability Timeline

Vulnerability published by Qualcomm in April 2025 Security Bulletin
2025-04-07
CVE-2025-21423 assigned and published to NVD
2025-04-07
Included in CISA Weekly Bulletin SB25-104
2025-04-14
NVD record updated with comprehensive affected product configurations
2025-08-19

References & Sources

  • [1]NVD - CVE-2025-21423 Detail
  • [2]CISA Weekly Vulnerability Summary SB25-104

More Reports

•2 minutes ago•CVE-2026-116584
7.5

CVE-2026-116584: Denial of Service via Unvalidated Node Element Lists in Seroval

A Denial of Service (DoS) vulnerability exists in the Seroval JavaScript serialization library affecting versions 1.4.1 through 1.6.7. The deserialization routines fromJSON and fromCrossJSON fail to verify that node element lists are actual JavaScript Array primitives before reading their length property. An unauthenticated remote attacker can supply a compact, malformed JSON payload containing an array-like object with an arbitrary length value, causing unbounded memory allocation and synchronous loop iterations that block the event loop or crash the process via heap exhaustion.

Amit Schendel
Amit Schendel
0 views•10 min read
•about 1 hour ago•CVE-2026-116581
7.5

CVE-2026-116581: Unauthenticated Event-Loop Denial of Service via Unvalidated Sequence Indices in Seroval

Seroval, a JavaScript serialization library used for transferring complex structures across network boundaries, contains an input validation vulnerability in versions prior to 1.6.8. The `fromJSON` and `fromCrossJSON` deserializers fail to validate array element lists and the termination boundaries (`done` and `throw` indices) of sequence nodes. By supplying out-of-bounds indices or forged array-like structures, an unauthenticated remote attacker can construct an iterator with an unreachable exit condition or trigger excessive loop iterations, halting the single-threaded JavaScript event loop and causing a denial of service.

Amit Schendel
Amit Schendel
4 views•10 min read
•about 2 hours ago•CVE-2026-116582
4.7

CVE-2026-116582: Cross-Site Scripting via Unescaped RegExp Serialization in Seroval

CVE-2026-116582 is an improper output escaping vulnerability in the Seroval JavaScript serialization library that leads to cross-site scripting (XSS). When Seroval serializes RegExp objects into executable JavaScript literals for embedding in HTML script elements, it fails to neutralize the less-than character ('<'). If an application constructs a regular expression from untrusted input and embeds the serialized output inside an inline script block during server-side rendering (SSR), an attacker can inject a closing script tag to break out of the JavaScript context and execute arbitrary client-side code.

Amit Schendel
Amit Schendel
3 views•11 min read
•about 3 hours ago•CVE-2026-116583
5.3

CVE-2026-116583: Code Injection via TypedArray Constructor Property Spoofing in Seroval

CVE-2026-116583 (GHSA-f86p-h4j2-7qgj) is a code injection and cross-site scripting (XSS) vulnerability in Seroval, a JavaScript object serialization library. In versions 1.6.0 prior to 1.6.11, Seroval derives the constructor name of a TypedArray directly from the `current.constructor.name` property expression during serialization. If an attacker supplies untrusted properties that are merged onto a TypedArray instance, an own `constructor` property overrides the prototype property and gets emitted unescaped after the `new` keyword in the generated JavaScript output. Evaluating or rendering this output in a browser or JavaScript runtime results in arbitrary code execution.

Alon Barad
Alon Barad
4 views•8 min read
•about 4 hours ago•GHSA-JF75-Q64Q-G65R
6.5

GHSA-jf75-q64q-g65r: NoSQL Query Manipulation and Partial Authentication Bypass in Waline Server

An improper input validation and NoSQL query construction vulnerability exists in the Waline comment system server (@waline/vercel) version 1.40.3 and earlier. When MongoDB is used as the backend storage engine, the POST /api/token authentication endpoint fails to validate that the user-supplied email parameter is a string. Supplying a JSON object or array operator causes the MongoDB storage adapter to omit the email filter or construct an unintended match-all query, returning all user records and allowing unauthenticated attackers to target the site administrator account directly without knowing the administrator's email address.

Alon Barad
Alon Barad
3 views•10 min read
•about 5 hours ago•GHSA-2HW4-C9M4-F2FJ
6.5

CVE-2026-54462: Unbounded Request-Body Memory Exhaustion in Knative Admission Webhooks

An uncontrolled resource consumption vulnerability in the knative.dev/pkg/webhook package allows network-adjacent attackers within a Kubernetes cluster to trigger Out-Of-Memory (OOM) terminations of admission controller pods. The admission webhook HTTP server processes incoming AdmissionReview requests through an io.TeeReader and json.Decoder pipeline without enforcing an upper bound on request body size. Due to internal buffer reallocation mechanics, incoming payloads experience a 4.5x memory amplification factor. Because knative.dev/pkg provides the shared webhook server foundation for numerous cloud-native projects—including Knative Serving, Knative Eventing, Tekton, KEDA, Sigstore Policy Controller, and Kpack—exploitation can halt resource admission across entire Kubernetes clusters or bypass critical security validation policies.

Alon Barad
Alon Barad
3 views•10 min read