CVE-2026-43497 (GCVE-0-2026-43497)

Vulnerability from cvelistv5 – Published: 2026-05-21 12:12 – Updated: 2026-08-05 12:28
VLAI
Title
fbdev: udlfb: add vm_ops to dlfb_ops_mmap to prevent use-after-free
Summary
In the Linux kernel, the following vulnerability has been resolved: fbdev: udlfb: add vm_ops to dlfb_ops_mmap to prevent use-after-free dlfb_ops_mmap() uses remap_pfn_range() to map vmalloc framebuffer pages to userspace but sets no vm_ops on the VMA. This means the kernel cannot track active mmaps. When dlfb_realloc_framebuffer() replaces the backing buffer via FBIOPUT_VSCREENINFO, existing mmap PTEs are not invalidated. On USB disconnect, dlfb_ops_destroy() calls vfree() on the old pages while userspace PTEs still reference them, resulting in a use-after-free: the process retains read/write access to freed kernel pages. Add vm_operations_struct with open/close callbacks that maintain an atomic mmap_count on struct dlfb_data. In dlfb_realloc_framebuffer(), check mmap_count and return -EBUSY if the buffer is currently mapped, preventing buffer replacement while userspace holds stale PTEs. Tested with PoC using dummy_hcd + raw_gadget USB device emulation.
Impacted products
Vendor Product Version
Linux Linux Affected: 7433914efd584b22bb49d3e1eee001f5d0525ecd , < 60f711cfd580f86fea8284146ac133804e728f9a (git)
Affected: 7433914efd584b22bb49d3e1eee001f5d0525ecd , < 5931f5651ee32bd41b3323256b31fcc8e71336ed (git)
Affected: 7433914efd584b22bb49d3e1eee001f5d0525ecd , < e3d9865dacd7435b8465848428210d0f0c673311 (git)
Affected: 7433914efd584b22bb49d3e1eee001f5d0525ecd , < 4f312c30f0368e8d2a76aa650dff73f23490b5e7 (git)
Affected: 7433914efd584b22bb49d3e1eee001f5d0525ecd , < 18dd358de72d57993422cbb5dfb29ccd74efe192 (git)
Affected: 7433914efd584b22bb49d3e1eee001f5d0525ecd , < da9b065cedfd3b574f229d5be594e6aa47a27ae6 (git)
Affected: 7433914efd584b22bb49d3e1eee001f5d0525ecd , < a2c53a3822ee26e8d758071815b9ed3bf6669fc1 (git)
Affected: 7433914efd584b22bb49d3e1eee001f5d0525ecd , < 8de779dc40d35d39fa07387b6f921eb11df0f511 (git)
Create a notification for this product.
Linux Linux Affected: 4.19
Unaffected: 0 , < 4.19 (semver)
Unaffected: 5.10.258 , ≤ 5.10.* (semver)
Unaffected: 5.15.209 , ≤ 5.15.* (semver)
Unaffected: 6.1.175 , ≤ 6.1.* (semver)
Unaffected: 6.6.140 , ≤ 6.6.* (semver)
Unaffected: 6.12.88 , ≤ 6.12.* (semver)
Unaffected: 6.18.30 , ≤ 6.18.* (semver)
Unaffected: 7.0.7 , ≤ 7.0.* (semver)
Unaffected: 7.1 , ≤ * (original_commit_for_fix)
Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/video/fbdev/udlfb.c",
            "include/video/udlfb.h"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "60f711cfd580f86fea8284146ac133804e728f9a",
              "status": "affected",
              "version": "7433914efd584b22bb49d3e1eee001f5d0525ecd",
              "versionType": "git"
            },
            {
              "lessThan": "5931f5651ee32bd41b3323256b31fcc8e71336ed",
              "status": "affected",
              "version": "7433914efd584b22bb49d3e1eee001f5d0525ecd",
              "versionType": "git"
            },
            {
              "lessThan": "e3d9865dacd7435b8465848428210d0f0c673311",
              "status": "affected",
              "version": "7433914efd584b22bb49d3e1eee001f5d0525ecd",
              "versionType": "git"
            },
            {
              "lessThan": "4f312c30f0368e8d2a76aa650dff73f23490b5e7",
              "status": "affected",
              "version": "7433914efd584b22bb49d3e1eee001f5d0525ecd",
              "versionType": "git"
            },
            {
              "lessThan": "18dd358de72d57993422cbb5dfb29ccd74efe192",
              "status": "affected",
              "version": "7433914efd584b22bb49d3e1eee001f5d0525ecd",
              "versionType": "git"
            },
            {
              "lessThan": "da9b065cedfd3b574f229d5be594e6aa47a27ae6",
              "status": "affected",
              "version": "7433914efd584b22bb49d3e1eee001f5d0525ecd",
              "versionType": "git"
            },
            {
              "lessThan": "a2c53a3822ee26e8d758071815b9ed3bf6669fc1",
              "status": "affected",
              "version": "7433914efd584b22bb49d3e1eee001f5d0525ecd",
              "versionType": "git"
            },
            {
              "lessThan": "8de779dc40d35d39fa07387b6f921eb11df0f511",
              "status": "affected",
              "version": "7433914efd584b22bb49d3e1eee001f5d0525ecd",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/video/fbdev/udlfb.c",
            "include/video/udlfb.h"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "4.19"
            },
            {
              "lessThan": "4.19",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.10.*",
              "status": "unaffected",
              "version": "5.10.258",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.15.*",
              "status": "unaffected",
              "version": "5.15.209",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.1.*",
              "status": "unaffected",
              "version": "6.1.175",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.6.*",
              "status": "unaffected",
              "version": "6.6.140",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.88",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.30",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.0.*",
              "status": "unaffected",
              "version": "7.0.7",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.1",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.10.258",
                  "versionStartIncluding": "4.19",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.15.209",
                  "versionStartIncluding": "4.19",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.1.175",
                  "versionStartIncluding": "4.19",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.140",
                  "versionStartIncluding": "4.19",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.88",
                  "versionStartIncluding": "4.19",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.30",
                  "versionStartIncluding": "4.19",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.0.7",
                  "versionStartIncluding": "4.19",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.1",
                  "versionStartIncluding": "4.19",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nfbdev: udlfb: add vm_ops to dlfb_ops_mmap to prevent use-after-free\n\ndlfb_ops_mmap() uses remap_pfn_range() to map vmalloc framebuffer pages\nto userspace but sets no vm_ops on the VMA. This means the kernel cannot\ntrack active mmaps. When dlfb_realloc_framebuffer() replaces the backing\nbuffer via FBIOPUT_VSCREENINFO, existing mmap PTEs are not invalidated.\nOn USB disconnect, dlfb_ops_destroy() calls vfree() on the old pages\nwhile userspace PTEs still reference them, resulting in a use-after-free:\nthe process retains read/write access to freed kernel pages.\n\nAdd vm_operations_struct with open/close callbacks that maintain an\natomic mmap_count on struct dlfb_data. In dlfb_realloc_framebuffer(),\ncheck mmap_count and return -EBUSY if the buffer is currently mapped,\npreventing buffer replacement while userspace holds stale PTEs.\n\nTested with PoC using dummy_hcd + raw_gadget USB device emulation."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 7.3,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:L - The entire exploit is driven by local syscalls (open/mmap/FBIOPUT_VSCREENINFO/close) on the /dev/fbN character device; the attacker is a local software user, not a malicious USB device feeding crafted data, so the vector to the vulnerable component is local rather than physical.\nAC:L - The attacker reliably performs the mmap + realloc-via-ioctl + close sequence and can detect the disconnect before closing; the freed-page mapping is then deterministic with no race or uncontrolled memory-layout condition required to trigger the UAF.\nPR:L - Exploitation requires read/write access to the framebuffer device node, which is available to an ordinary logged-in/video-group user (or kiosk app user) but not to a fully unprivileged unauthenticated actor.\nUI:R - The freeing vfree only runs after a USB disconnect (unregister_framebuffer), so completing the exploit depends on a disconnect event (undock/unplug) performed by the user or environment rather than by the attacker\u0027s own code.\nS:U - The use-after-free corrupts kernel memory within the same security authority (the kernel); there is no VM, IOMMU, or sandbox boundary crossed.\nC:H - The process keeps a read mapping to freed pages that are recycled for arbitrary kernel allocations, allowing disclosure of arbitrary kernel memory.\nI:H - The same mapping retains write access to the freed pages once reused by other kernel objects, providing an arbitrary-write primitive suitable for privilege escalation or control-flow hijack.\nA:H - A use-after-free of freed kernel pages readily causes memory corruption and a kernel panic/oops."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T12:28:19.915Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/60f711cfd580f86fea8284146ac133804e728f9a"
        },
        {
          "url": "https://git.kernel.org/stable/c/5931f5651ee32bd41b3323256b31fcc8e71336ed"
        },
        {
          "url": "https://git.kernel.org/stable/c/e3d9865dacd7435b8465848428210d0f0c673311"
        },
        {
          "url": "https://git.kernel.org/stable/c/4f312c30f0368e8d2a76aa650dff73f23490b5e7"
        },
        {
          "url": "https://git.kernel.org/stable/c/18dd358de72d57993422cbb5dfb29ccd74efe192"
        },
        {
          "url": "https://git.kernel.org/stable/c/da9b065cedfd3b574f229d5be594e6aa47a27ae6"
        },
        {
          "url": "https://git.kernel.org/stable/c/a2c53a3822ee26e8d758071815b9ed3bf6669fc1"
        },
        {
          "url": "https://git.kernel.org/stable/c/8de779dc40d35d39fa07387b6f921eb11df0f511"
        }
      ],
      "title": "fbdev: udlfb: add vm_ops to dlfb_ops_mmap to prevent use-after-free",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-43497",
    "datePublished": "2026-05-21T12:12:47.150Z",
    "dateReserved": "2026-05-01T14:12:56.013Z",
    "dateUpdated": "2026-08-05T12:28:19.915Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-43497",
      "date": "2026-10-03",
      "epss": "0.00165",
      "percentile": "0.05192"
    }
  }
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.

Loading…

Detection rules are retrieved from Rulezet.

Loading…

Loading…

Related by attack behaviour

Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.


Loading…