CVE-2026-31468 (GCVE-0-2026-31468)
Vulnerability from cvelistv5
Published
2026-04-22 13:53
Modified
2026-10-19 18:35
Summary
In the Linux kernel, the following vulnerability has been resolved: vfio/pci: Fix double free in dma-buf feature The error path through vfio_pci_core_feature_dma_buf() ignores its own advice to only use dma_buf_put() after dma_buf_export(), instead falling through the entire unwind chain. In the unlikely event that we encounter file descriptor exhaustion, this can result in an unbalanced refcount on the vfio device and double free of allocated objects. Avoid this by moving the "put" directly into the error path and return the errno rather than entering the unwind chain.
Impacted products
Vendor Product Version
Linux Linux Version: 5d74781ebc86c5fa9e9d6934024c505412de9b52
Version: 5d74781ebc86c5fa9e9d6934024c505412de9b52
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "adp": [
      {
        "metrics": [
          {
            "other": {
              "content": {
                "id": "CVE-2026-31468",
                "options": [
                  {
                    "Exploitation": "none"
                  },
                  {
                    "Automatable": "no"
                  },
                  {
                    "Technical Impact": "total"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2026-10-16T15:09:44.917281Z",
                "version": "2.0.3"
              },
              "type": "ssvc"
            }
          }
        ],
        "problemTypes": [
          {
            "descriptions": [
              {
                "cweId": "CWE-415",
                "description": "CWE-415 Double Free",
                "lang": "en",
                "type": "CWE"
              }
            ]
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2026-10-19T18:35:49.671Z",
          "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "shortName": "CISA-ADP"
        },
        "title": "CISA ADP Vulnrichment"
      }
    ],
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/vfio/pci/vfio_pci_dmabuf.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "83ad334afc9a645cef1062f5346526b1e36d6516",
              "status": "affected",
              "version": "5d74781ebc86c5fa9e9d6934024c505412de9b52",
              "versionType": "git"
            },
            {
              "lessThan": "e98137f0a874ab36d0946de4707aa48cb7137d1c",
              "status": "affected",
              "version": "5d74781ebc86c5fa9e9d6934024c505412de9b52",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/vfio/pci/vfio_pci_dmabuf.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.19"
            },
            {
              "lessThan": "6.19",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.19.*",
              "status": "unaffected",
              "version": "6.19.11",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.0",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.19.11",
                  "versionStartIncluding": "6.19",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.0",
                  "versionStartIncluding": "6.19",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nvfio/pci: Fix double free in dma-buf feature\n\nThe error path through vfio_pci_core_feature_dma_buf() ignores its\nown advice to only use dma_buf_put() after dma_buf_export(), instead\nfalling through the entire unwind chain.  In the unlikely event that\nwe encounter file descriptor exhaustion, this can result in an\nunbalanced refcount on the vfio device and double free of allocated\nobjects.\n\nAvoid this by moving the \"put\" directly into the error path and return\nthe errno rather than entering the unwind chain."
        }
      ],
      "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 vulnerable code is reached through a local VFIO device file ioctl, specifically VFIO_DEVICE_FEATURE on a VFIO PCI device. It is not reachable from network packets, adjacent radio traffic, or physical hotplug alone.\nAC:L - Once a caller has an opened VFIO PCI device that supports the dma-buf feature, the failure path can be driven by attacker-controlled file descriptor exhaustion and valid ioctl inputs. The relevant condition is under the attacker\u0027s process control rather than a race or external timing dependency.\nPR:L - The attacker needs local access to an opened/access-granted VFIO device fd, which is normally delegated by device node permissions or virtualization management policy. The ioctl path itself does not require real init-namespace root for normal IOMMU-backed VFIO devices, and VFIO is not made reachable through unprivileged user namespaces.\nUI:N - No victim interaction is required after the attacker has the VFIO device fd. The attacker directly invokes the ioctl and controls the file descriptor exhaustion condition.\nS:U - The bug corrupts kernel/VFIO memory from a local kernel interface, so the vulnerable and impacted security authority is the same kernel instance. This is not a guest-to-host escape path or a direct IOMMU/DMA boundary bypass by itself.\nC:H - The old unwind path calls dma_buf_put(), whose release callback frees the private VFIO dma-buf object and phys_vec, then continues to dereference and free those same objects again. This double free/use-after-free style heap corruption is reasonably exploitable for kernel memory disclosure primitives.\nI:H - The double free of attacker-influenced kernel heap objects can corrupt allocator metadata or enable reuse of freed objects, which is a kernel memory corruption primitive. Under the required overestimation rule, this supports high integrity impact due to plausible arbitrary write or code execution.\nA:H - Even without full exploitation, the double free and unbalanced VFIO device reference can trigger allocator corruption, UAF, oops, or panic. The attacker can repeat the ioctl path to cause a reliable local denial of service."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T12:22:47.492Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/83ad334afc9a645cef1062f5346526b1e36d6516"
        },
        {
          "url": "https://git.kernel.org/stable/c/e98137f0a874ab36d0946de4707aa48cb7137d1c"
        }
      ],
      "title": "vfio/pci: Fix double free in dma-buf feature",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-31468",
    "datePublished": "2026-04-22T13:53:57.583Z",
    "dateReserved": "2026-03-09T15:48:24.097Z",
    "dateUpdated": "2026-10-19T18:35:49.671Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "vulnrichment": {
      "containers": "{\"adp\": [{\"title\": \"CISA ADP Vulnrichment\", \"metrics\": [{\"other\": {\"type\": \"ssvc\", \"content\": {\"id\": \"CVE-2026-31468\", \"role\": \"CISA Coordinator\", \"options\": [{\"Exploitation\": \"none\"}, {\"Automatable\": \"no\"}, {\"Technical Impact\": \"total\"}], \"version\": \"2.0.3\", \"timestamp\": \"2026-10-16T15:09:44.917281Z\"}}}], \"problemTypes\": [{\"descriptions\": [{\"lang\": \"en\", \"type\": \"CWE\", \"cweId\": \"CWE-415\", \"description\": \"CWE-415 Double Free\"}]}], \"providerMetadata\": {\"orgId\": \"134c704f-9b21-4f2e-91b3-4a467353bcc0\", \"shortName\": \"CISA-ADP\", \"dateUpdated\": \"2026-10-16T15:09:45.523Z\"}}], \"cna\": {\"title\": \"vfio/pci: Fix double free in dma-buf feature\", \"metrics\": [{\"cvssV3_1\": {\"version\": \"3.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\"}, \"scenarios\": [{\"lang\": \"en\", \"value\": \"AV:L - The vulnerable code is reached through a local VFIO device file ioctl, specifically VFIO_DEVICE_FEATURE on a VFIO PCI device. It is not reachable from network packets, adjacent radio traffic, or physical hotplug alone.\\nAC:L - Once a caller has an opened VFIO PCI device that supports the dma-buf feature, the failure path can be driven by attacker-controlled file descriptor exhaustion and valid ioctl inputs. The relevant condition is under the attacker\u0027s process control rather than a race or external timing dependency.\\nPR:L - The attacker needs local access to an opened/access-granted VFIO device fd, which is normally delegated by device node permissions or virtualization management policy. The ioctl path itself does not require real init-namespace root for normal IOMMU-backed VFIO devices, and VFIO is not made reachable through unprivileged user namespaces.\\nUI:N - No victim interaction is required after the attacker has the VFIO device fd. The attacker directly invokes the ioctl and controls the file descriptor exhaustion condition.\\nS:U - The bug corrupts kernel/VFIO memory from a local kernel interface, so the vulnerable and impacted security authority is the same kernel instance. This is not a guest-to-host escape path or a direct IOMMU/DMA boundary bypass by itself.\\nC:H - The old unwind path calls dma_buf_put(), whose release callback frees the private VFIO dma-buf object and phys_vec, then continues to dereference and free those same objects again. This double free/use-after-free style heap corruption is reasonably exploitable for kernel memory disclosure primitives.\\nI:H - The double free of attacker-influenced kernel heap objects can corrupt allocator metadata or enable reuse of freed objects, which is a kernel memory corruption primitive. Under the required overestimation rule, this supports high integrity impact due to plausible arbitrary write or code execution.\\nA:H - Even without full exploitation, the double free and unbalanced VFIO device reference can trigger allocator corruption, UAF, oops, or panic. The attacker can repeat the ioctl path to cause a reliable local denial of service.\"}]}], \"affected\": [{\"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\", \"vendor\": \"Linux\", \"product\": \"Linux\", \"versions\": [{\"status\": \"affected\", \"version\": \"5d74781ebc86c5fa9e9d6934024c505412de9b52\", \"lessThan\": \"83ad334afc9a645cef1062f5346526b1e36d6516\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"5d74781ebc86c5fa9e9d6934024c505412de9b52\", \"lessThan\": \"e98137f0a874ab36d0946de4707aa48cb7137d1c\", \"versionType\": \"git\"}], \"programFiles\": [\"drivers/vfio/pci/vfio_pci_dmabuf.c\"], \"defaultStatus\": \"unaffected\"}, {\"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\", \"vendor\": \"Linux\", \"product\": \"Linux\", \"versions\": [{\"status\": \"affected\", \"version\": \"6.19\"}, {\"status\": \"unaffected\", \"version\": \"0\", \"lessThan\": \"6.19\", \"versionType\": \"semver\"}, {\"status\": \"unaffected\", \"version\": \"6.19.11\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"6.19.*\"}, {\"status\": \"unaffected\", \"version\": \"7.0\", \"versionType\": \"original_commit_for_fix\", \"lessThanOrEqual\": \"*\"}], \"programFiles\": [\"drivers/vfio/pci/vfio_pci_dmabuf.c\"], \"defaultStatus\": \"affected\"}], \"references\": [{\"url\": \"https://git.kernel.org/stable/c/83ad334afc9a645cef1062f5346526b1e36d6516\"}, {\"url\": \"https://git.kernel.org/stable/c/e98137f0a874ab36d0946de4707aa48cb7137d1c\"}], \"x_generator\": {\"engine\": \"bippy-1.2.0\"}, \"descriptions\": [{\"lang\": \"en\", \"value\": \"In the Linux kernel, the following vulnerability has been resolved:\\n\\nvfio/pci: Fix double free in dma-buf feature\\n\\nThe error path through vfio_pci_core_feature_dma_buf() ignores its\\nown advice to only use dma_buf_put() after dma_buf_export(), instead\\nfalling through the entire unwind chain.  In the unlikely event that\\nwe encounter file descriptor exhaustion, this can result in an\\nunbalanced refcount on the vfio device and double free of allocated\\nobjects.\\n\\nAvoid this by moving the \\\"put\\\" directly into the error path and return\\nthe errno rather than entering the unwind chain.\"}], \"cpeApplicability\": [{\"nodes\": [{\"negate\": false, \"cpeMatch\": [{\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.19.11\", \"versionStartIncluding\": \"6.19\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"7.0\", \"versionStartIncluding\": \"6.19\"}], \"operator\": \"OR\"}]}], \"providerMetadata\": {\"orgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"shortName\": \"Linux\", \"dateUpdated\": \"2026-08-05T12:22:47.492Z\"}}}",
      "cveMetadata": "{\"cveId\": \"CVE-2026-31468\", \"state\": \"PUBLISHED\", \"dateUpdated\": \"2026-10-19T18:35:49.671Z\", \"dateReserved\": \"2026-03-09T15:48:24.097Z\", \"assignerOrgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"datePublished\": \"2026-04-22T13:53:57.583Z\", \"assignerShortName\": \"Linux\"}",
      "dataType": "CVE_RECORD",
      "dataVersion": "5.2"
    }
  }
}


Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Sightings

Author Source Type Date

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
  • Confirmed: The vulnerability is confirmed from an analyst perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
  • Patched: This vulnerability was successfully patched by the user reporting the sighting.
  • Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
  • Not confirmed: The user expresses doubt about the veracity of the vulnerability.
  • Not patched: This vulnerability was not successfully patched by the user reporting the sighting.


Loading…

Loading…