CVE-2026-63910 (GCVE-0-2026-63910)

Vulnerability from cvelistv5 – Published: 2026-07-19 14:55 – Updated: 2026-08-05 12:37
VLAI
Title
dma-buf: fix UAF in dma_buf_fd() tracepoint
Summary
In the Linux kernel, the following vulnerability has been resolved: dma-buf: fix UAF in dma_buf_fd() tracepoint Once FD_ADD() returns, the fd is live in the file descriptor table and a thread sharing that table can close() it before DMA_BUF_TRACE() runs. The close drops the last reference, __fput() frees the dma_buf, and the tracepoint then dereferences dmabuf to take dmabuf->name_lock -- slab-use-after-free. Split FD_ADD() back into get_unused_fd_flags() + fd_install() and emit the tracepoint between them. While the fdtable slot is reserved with a NULL file pointer, a racing close() returns -EBADF without entering __fput(), so the dma_buf stays alive across the trace. Same approach as commit 2d76319c4cbb ("dma-buf: fix UAF in dma_buf_put() tracepoint"). This undoes the FD_ADD() conversion done in commit 34dfce523c90 ("dma: convert dma_buf_fd() to FD_ADD()"); FD_ADD() has no place to hook the tracepoint safely.
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: 281a226314238e8adb08d11b765347687ffb38b9 , < b569f86e2f8dbf6f11d31d3de794d22e18098b23 (git)
Affected: 281a226314238e8adb08d11b765347687ffb38b9 , < ead6680f354f83966c796fc7f9463a3171789616 (git)
guessed Create a notification for this product.
Linux Linux Affected: 7.0
Unaffected: 0 , < 7.0 (semver)
Unaffected: 7.0.12 , ≤ 7.0.* (semver)
Unaffected: 7.1 , ≤ * (original_commit_for_fix)
guessed Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/dma-buf/dma-buf.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "b569f86e2f8dbf6f11d31d3de794d22e18098b23",
              "status": "affected",
              "version": "281a226314238e8adb08d11b765347687ffb38b9",
              "versionType": "git"
            },
            {
              "lessThan": "ead6680f354f83966c796fc7f9463a3171789616",
              "status": "affected",
              "version": "281a226314238e8adb08d11b765347687ffb38b9",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/dma-buf/dma-buf.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "7.0"
            },
            {
              "lessThan": "7.0",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.0.*",
              "status": "unaffected",
              "version": "7.0.12",
              "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": "7.0.12",
                  "versionStartIncluding": "7.0",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.1",
                  "versionStartIncluding": "7.0",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\ndma-buf: fix UAF in dma_buf_fd() tracepoint\n\nOnce FD_ADD() returns, the fd is live in the file descriptor table\nand a thread sharing that table can close() it before DMA_BUF_TRACE()\nruns. The close drops the last reference, __fput() frees the dma_buf,\nand the tracepoint then dereferences dmabuf to take dmabuf-\u003ename_lock\n-- slab-use-after-free.\n\nSplit FD_ADD() back into get_unused_fd_flags() + fd_install() and\nemit the tracepoint between them. While the fdtable slot is reserved\nwith a NULL file pointer, a racing close() returns -EBADF without\nentering __fput(), so the dma_buf stays alive across the trace. Same\napproach as commit 2d76319c4cbb (\"dma-buf: fix UAF in dma_buf_put()\ntracepoint\").\n\nThis undoes the FD_ADD() conversion done in commit 34dfce523c90\n(\"dma: convert dma_buf_fd() to FD_ADD()\"); FD_ADD() has no place to\nhook the tracepoint safely."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 7.8,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:L - The UAF is reached only through local syscalls/ioctls (e.g. UDMABUF_CREATE, DMA_HEAP_IOCTL_ALLOC, DRM/videobuf2 buffer export) that call dma_buf_fd(); there is no network or physical-device entry point.\nAC:L - Exploitation requires a race between dma_buf_fd() and close() on a shared fd table, but the attacker controls both threads and can hammer the window concurrently; syzkaller demonstrated reliable triggering without conditions outside attacker control.\nPR:L - An unprivileged local user with access to dma-buf interfaces (udmabuf, dma_heap, DRM render node, or media devices) can reach dma_buf_fd(); syzbot confirmed unprivileged and user-namespace reachability without real root in the init namespace.\nUI:N - Exploitation is performed entirely by the attacker\u0027s own multi-threaded process issuing ioctls and close() calls; no action by a separate victim user is required.\nS:U - Impact is kernel memory corruption and privilege escalation within the same kernel security domain; this is standard local kernel compromise, not a VM escape or IOMMU/DMA boundary bypass.\nC:H - The bug is a slab use-after-free on struct dma_buf; the tracepoint dereferences freed memory (name_lock, exp_name, file fields), enabling controlled reuse of freed kmalloc-1k objects for arbitrary kernel memory disclosure.\nI:H - UAF on a kmalloc-1k kernel object with spinlock interaction provides heap corruption primitives that can be developed into arbitrary kernel writes and local privilege escalation.\nA:H - Winning the race causes a confirmed slab-use-after-free in dma_buf_fd() (KASAN/lockdep fault), which can panic or oops the kernel even when not fully exploited for code execution."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T12:37:04.026Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/b569f86e2f8dbf6f11d31d3de794d22e18098b23"
        },
        {
          "url": "https://git.kernel.org/stable/c/ead6680f354f83966c796fc7f9463a3171789616"
        }
      ],
      "title": "dma-buf: fix UAF in dma_buf_fd() tracepoint",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-63910",
    "datePublished": "2026-07-19T14:55:15.770Z",
    "dateReserved": "2026-07-19T07:54:57.020Z",
    "dateUpdated": "2026-08-05T12:37:04.026Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-63910",
      "date": "2026-09-21",
      "epss": "0.00154",
      "percentile": "0.0492"
    },
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "defaultStatus": "unaffected",
                "product": "Linux",
                "programFiles": [
                  "drivers/dma-buf/dma-buf.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "lessThan": "b569f86e2f8dbf6f11d31d3de794d22e18098b23",
                    "status": "affected",
                    "version": "281a226314238e8adb08d11b765347687ffb38b9",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "ead6680f354f83966c796fc7f9463a3171789616",
                    "status": "affected",
                    "version": "281a226314238e8adb08d11b765347687ffb38b9",
                    "versionType": "git"
                  }
                ]
              },
              {
                "defaultStatus": "affected",
                "product": "Linux",
                "programFiles": [
                  "drivers/dma-buf/dma-buf.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "status": "affected",
                    "version": "7.0"
                  },
                  {
                    "lessThan": "7.0",
                    "status": "unaffected",
                    "version": "0",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "7.0.*",
                    "status": "unaffected",
                    "version": "7.0.12",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "*",
                    "status": "unaffected",
                    "version": "7.1",
                    "versionType": "original_commit_for_fix"
                  }
                ]
              }
            ],
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
          }
        ],
        "cveTags": [],
        "descriptions": [
          {
            "lang": "en",
            "value": "In the Linux kernel, the following vulnerability has been resolved:\n\ndma-buf: fix UAF in dma_buf_fd() tracepoint\n\nOnce FD_ADD() returns, the fd is live in the file descriptor table\nand a thread sharing that table can close() it before DMA_BUF_TRACE()\nruns. The close drops the last reference, __fput() frees the dma_buf,\nand the tracepoint then dereferences dmabuf to take dmabuf-\u003ename_lock\n-- slab-use-after-free.\n\nSplit FD_ADD() back into get_unused_fd_flags() + fd_install() and\nemit the tracepoint between them. While the fdtable slot is reserved\nwith a NULL file pointer, a racing close() returns -EBADF without\nentering __fput(), so the dma_buf stays alive across the trace. Same\napproach as commit 2d76319c4cbb (\"dma-buf: fix UAF in dma_buf_put()\ntracepoint\").\n\nThis undoes the FD_ADD() conversion done in commit 34dfce523c90\n(\"dma: convert dma_buf_fd() to FD_ADD()\"); FD_ADD() has no place to\nhook the tracepoint safely."
          }
        ],
        "id": "CVE-2026-63910",
        "lastModified": "2026-07-27T17:44:23.777",
        "metrics": {
          "cvssMetricV31": [
            {
              "cvssData": {
                "attackComplexity": "LOW",
                "attackVector": "LOCAL",
                "availabilityImpact": "HIGH",
                "baseScore": 7.8,
                "baseSeverity": "HIGH",
                "confidentialityImpact": "HIGH",
                "integrityImpact": "HIGH",
                "privilegesRequired": "LOW",
                "scope": "UNCHANGED",
                "userInteraction": "NONE",
                "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
                "version": "3.1"
              },
              "exploitabilityScore": 1.8,
              "impactScore": 5.9,
              "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
              "type": "Secondary"
            }
          ]
        },
        "published": "2026-07-19T16:17:08.857",
        "references": [
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/b569f86e2f8dbf6f11d31d3de794d22e18098b23"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/ead6680f354f83966c796fc7f9463a3171789616"
          }
        ],
        "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "vulnStatus": "Awaiting Analysis"
      }
    },
    "redhat_vex": {
      "aggregate_severity": "Moderate",
      "current_release_date": "2026-09-10T10:19:14+00:00",
      "cve": "CVE-2026-63910",
      "id": "CVE-2026-63910",
      "initial_release_date": "2026-07-19T00:00:00+00:00",
      "product_status:known_affected": "2",
      "product_status:known_not_affected": "272",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: dma-buf: fix UAF in dma_buf_fd() tracepoint",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-63910.json",
      "version": "3"
    },
    "suse_vex": {
      "aggregate_severity": "important",
      "current_release_date": "2026-07-28T23:38:11Z",
      "cve": "CVE-2026-63910",
      "id": "CVE-2026-63910",
      "initial_release_date": "2026-07-21T13:03:45Z",
      "product_status:known_not_affected": "298",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2026-63910",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2026-63910.json",
      "version": "3"
    }
  }
}



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…