HarborGuard / CVE
Back to search
HIGHCVE-2026-46209Published Modified CNA Linux

CVE-2026-46209: drm/gem: Fix inconsistent plane dimension calculation in drm_gem_fb_init_with_funcs()

In the Linux kernel, the following vulnerability has been resolved: drm/gem: Fix inconsistent plane dimension calculation in drm_gem_fb_init_with_funcs() drm_gem_fb_init_with_funcs() computes sub-sampled plane dimensions using plain integer division: unsigned int width = mode_cmd->width / (i ? info->hsub : 1); unsigned int height = mode_cmd->height / (i ? info->vsub : 1); However, the ioctl-level framebuffer_check() in drm_framebuffer.c uses drm_format_info_plane_width/height() which round up dimensions via DIV_ROUND_UP(). This inconsistency corrupts the subsequent GEM object size check for certain pixel format and dimension combinations. For example, with NV12 (vsub=2) and a 1-pixel-tall framebuffer the GEM size validation path sees height=0 instead of height=1. The expression (height - 1) then wraps to UINT_MAX as an unsigned int, causing min_size to overflow and wrap back to a small value. A tiny GEM object therefore passes the size guard, yet when the GPU accesses the chroma plane it will read or write memory beyond the object's bounds. Fix by replacing the open-coded divisions with drm_format_info_plane_width() and drm_format_info_plane_height(), which use DIV_ROUND_UP() and match the calculation already used in framebuffer_check().

HarborGuard Analysis

HarborGuard analysis

Synopsis

An integer underflow and wrap-around vulnerability exists in the Linux kernel's DRM GEM framebuffer subsystem, specifically in the drm_gem_fb_init_with_funcs() function. The bug is reachable locally by an authenticated user with at least a low-privilege account. Successful exploitation allows an attacker to read or write kernel memory beyond the bounds of a Graphics Execution Manager (GEM) object, enabling full disclosure, tampering, and potential service disruption. Patched-image rebuilds at the fix versions listed above are available on HarborGuard for environments running an affected kernel.

HarborGuard Coverage

Detection

Detection of CVE-2026-46209 is available across every HarborGuard environment. Vulnerability data is ingested from upstream feeds within minutes of publication and matched against container images in customer registries and CI/CD pipelines, including custom-built images that carry affected kernel packages.

Available
Triage

Triage is available using the CVSS v3.1 score of 7.8 (HIGH), weighted against each customer organization's configured compliance policies. Findings are routed to the appropriate team inbox within the customer org based on severity thresholds and ownership rules.

Available
Patch

A patched-image rebuild at the fix version (kernel 6.6.140 or the upstream commit identifiers) becomes available on HarborGuard for any image found carrying an affected kernel package. For customers who opt into auto-remediation, HarborGuard can perform the rebuild, run a regression test suite against the updated image, and open a pull request against affected workloads.

Available

Exploit Conditions

  • Network reachabilityNot required

    The attacker needs an existing shell or process on the host; no network access to a listening service is required.

  • AuthenticationRequired

    Any low-privilege local account is sufficient to trigger the vulnerable ioctl code path; no administrative credentials are needed.

  • Victim interactionNot required

    No victim interaction is required; the attacker triggers the vulnerability directly through their own process.

  • Attack complexityDetail

    Attack complexity is low, meaning the exploit is reliable and requires no race condition, memory layout knowledge, or other environmental pre-condition beyond the local session.

Blast Radius

  • Reads arbitrary kernel memory beyond the bounds of the GEM object, exposing data from other processes or kernel structures such as credentials and session tokens.
  • Writes arbitrary kernel memory beyond object bounds, allowing modification of kernel data structures and persisted process state.
  • Corrupts GPU-accessible memory regions, which can crash the affected service or destabilize the kernel, causing a denial of service for all processes on the host.
  • Combining out-of-bounds read and write primitives, a local attacker can escalate privileges on the host by overwriting kernel security controls.

How HarborGuard Handles This

Available on HarborGuard: once a container image is matched against CVE-2026-46209, a patched-image rebuild targeting the corrected kernel version (6.6.140 or the corresponding upstream commit) is made available automatically. For customers who opt into auto-remediation, HarborGuard triggers the rebuild, executes the configured regression tests, and opens a pull request against affected workloads; for HIGH-severity issues, the median time from CVE publication to a merged patch PR in auto-remediation environments is around 90 minutes. For environments where compliance policy does not permit auto-remediation, the finding appears in the triage queue with CVSS context and fix-version details so that a manual rebuild can be initiated. Because this is a local privilege-escalation path rather than a remotely reachable service, compensating controls such as strict seccomp profiles, disabling direct DRM device access for unprivileged containers, and SELinux or AppArmor policy enforcement can reduce exposure until a patched image is deployed.

See how HarborGuard automates this

Metrics

CVSS v3.1
7.8
Severity
HIGH
Fixed in
0
Affected Products
2

Fix available

01a17ea9861e89585361caa8bc231bd22dc6dbe7d1da4ab7189f1064b3b712b388772c008b4d825803d4c2268bd7243c3780fe32bf24ff876da272acf6.6.1406.12.906.18.326b992591e04f2cce813bcf239b354f375bbf84d37.0.97.1-rc2c5fc49d8470c5ebf3b41607600f277158f159950
Affected packages
  • Linux / Linux
    < 6b992591e04f2cce813bcf239b354f375bbf84d3 (from 4c3dbb2c312c9fafbac30d98c523b8b1f3455d78) · < 1da4ab7189f1064b3b712b388772c008b4d82580 (from 4c3dbb2c312c9fafbac30d98c523b8b1f3455d78) · < 1a17ea9861e89585361caa8bc231bd22dc6dbe7d (from 4c3dbb2c312c9fafbac30d98c523b8b1f3455d78) · < c5fc49d8470c5ebf3b41607600f277158f159950 (from 4c3dbb2c312c9fafbac30d98c523b8b1f3455d78) · < 3d4c2268bd7243c3780fe32bf24ff876da272acf (from 4c3dbb2c312c9fafbac30d98c523b8b1f3455d78)
  • Linux / Linux
    4.14
    Fixed in 0, 6.6.140, 6.12.90, 6.18.32, 7.0.9, 7.1-rc2
CVSS Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H