CVE-2026-93782 (GCVE-0-2026-93782)

Vulnerability from cvelistv5 – Published: 2026-09-24 16:02 – Updated: 2026-09-25 12:42
VLAI
Title
vhost-scsi: flush backend after device ioctls
Summary
In the Linux kernel, the following vulnerability has been resolved: vhost-scsi: flush backend after device ioctls vhost-scsi translates guest response descriptors into userspace iovecs when commands are submitted. Target-core completes those commands asynchronously, so VHOST_SET_MEM_TABLE can replace the memory table while an in-flight command still retains response iovecs translated through the old table. If the old mapping is reused after VHOST_SET_MEM_TABLE returns, command completion can write the response to an unrelated userspace object. Flush the vhost-scsi backend after vhost_dev_ioctl() handles a device ioctl. This waits for in-flight commands that can still use the old response iovecs before the ioctl returns.
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: 057cbf49a1f08297877e46c82f707b1bfea806a8 , < 981c97d09c6b9560bb12dcc41f11ce59b1a48e97 (git)
Affected: 057cbf49a1f08297877e46c82f707b1bfea806a8 , < 6c1b802e36b05ebd9d41686c4dce6f06966af469 (git)
Affected: 057cbf49a1f08297877e46c82f707b1bfea806a8 , < 22598f55a4c2b510b3df5e69e563387a963222ae (git)
guessed Create a notification for this product.
Linux Linux Affected: 3.6
Unaffected: 0 , < 3.6 (semver)
Unaffected: 6.12.111 , ≤ 6.12.* (semver)
Unaffected: 6.18.53 , ≤ 6.18.* (semver)
Unaffected: 7.2 , ≤ * (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/vhost/scsi.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "981c97d09c6b9560bb12dcc41f11ce59b1a48e97",
              "status": "affected",
              "version": "057cbf49a1f08297877e46c82f707b1bfea806a8",
              "versionType": "git"
            },
            {
              "lessThan": "6c1b802e36b05ebd9d41686c4dce6f06966af469",
              "status": "affected",
              "version": "057cbf49a1f08297877e46c82f707b1bfea806a8",
              "versionType": "git"
            },
            {
              "lessThan": "22598f55a4c2b510b3df5e69e563387a963222ae",
              "status": "affected",
              "version": "057cbf49a1f08297877e46c82f707b1bfea806a8",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/vhost/scsi.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "3.6"
            },
            {
              "lessThan": "3.6",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.111",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.53",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.2",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.111",
                  "versionStartIncluding": "3.6",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.53",
                  "versionStartIncluding": "3.6",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2",
                  "versionStartIncluding": "3.6",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nvhost-scsi: flush backend after device ioctls\n\nvhost-scsi translates guest response descriptors into userspace iovecs\nwhen commands are submitted.  Target-core completes those commands\nasynchronously, so VHOST_SET_MEM_TABLE can replace the memory table while\nan in-flight command still retains response iovecs translated through the\nold table.\n\nIf the old mapping is reused after VHOST_SET_MEM_TABLE returns, command\ncompletion can write the response to an unrelated userspace object.\n\nFlush the vhost-scsi backend after vhost_dev_ioctl() handles a device\nioctl.  This waits for in-flight commands that can still use the old\nresponse iovecs before the ioctl returns."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 7.8,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:C/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:L - The missing flush is in vhost_scsi_ioctl() after vhost_dev_ioctl() handles VHOST_SET_MEM_TABLE via vhost_set_memory() on /dev/vhost-scsi; the retained pointers are tvc_resp_iovs filled by vhost_scsi_setup_resp_iovs() from vhost_get_vq_desc() on the local virtio-scsi virtqueue, not a network PDU.\nAC:H - A guest can leave commands in target-core via vhost_scsi_handle_vq()-\u003evhost_scsi_target_queue_cmd()-\u003etarget_submit(), but cannot call VHOST_SET_MEM_TABLE; only the VMM issues that ioctl (memory hotplug or live migration), so the replacement that makes old HVAs reusable is outside the attacker\u0027s control.\nPR:L - The attacker is a VM tenant sending virtio-scsi I/O that plants those tvc_resp_iovs; vhost_scsi_open() and vhost_scsi_ioctl() have no capable() check, and the already-attached LIO tpg (VHOST_SCSI_SET_ENDPOINT by QEMU) lets that guest I/O run without host root.\nUI:N - The guest plants in-flight commands by kicking its own virtqueue; no other user must mount an image or open a file. A later VMM VHOST_SET_MEM_TABLE is ordinary hypervisor memory-listener bookkeeping, not a tricked interactive action.\nS:C - vhost_scsi_complete_cmd_work() copy_to_iter()s virtio_scsi_cmd_resp through stale tvc_resp_iovs (and vhost_scsi_copy_sgl_to_iov() through a stale read_iter) into the host QEMU mm, so guest-originated completion corrupts VMM userspace across the KVM guest-to-host boundary.\nC:H - After QEMU reuses the old HVA, completion writes into unrelated VMM objects; the copied_iov READ path (vhost_scsi_copy_iov_to_sgl() dup_iter, then vhost_scsi_copy_sgl_to_iov()) can copy LUN data into that remapped heap, which is leverageable to disclose host memory back to the guest.\nI:H - copy_to_iter() of the packed virtio_scsi_cmd_resp plus, when vhost_scsi_map_to_sgl() falls back to vhost_scsi_copy_iov_to_sgl() for misaligned I/O with sgl_count\u003eBIO_MAX_VECS, a guest-influenced READ payload into the remapped HVA, corrupting QEMU heap objects and enabling VMM control-flow hijack.\nA:H - A reused QEMU mapping hit by that completion write corrupts VMM heap metadata and aborts QEMU, terminating the VM; an unmapped old HVA only hits the \"Faulted on virtio_scsi_cmd_resp\" path, but reuse after VHOST_SET_MEM_TABLE is the contract the ioctl was supposed to guarantee."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-09-25T12:42:47.488Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/981c97d09c6b9560bb12dcc41f11ce59b1a48e97"
        },
        {
          "url": "https://git.kernel.org/stable/c/6c1b802e36b05ebd9d41686c4dce6f06966af469"
        },
        {
          "url": "https://git.kernel.org/stable/c/22598f55a4c2b510b3df5e69e563387a963222ae"
        }
      ],
      "title": "vhost-scsi: flush backend after device ioctls",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-93782",
    "datePublished": "2026-09-24T16:02:14.457Z",
    "dateReserved": "2026-09-18T17:59:28.788Z",
    "dateUpdated": "2026-09-25T12:42:47.488Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-93782",
      "date": "2026-09-27",
      "epss": "0.0012",
      "percentile": "0.01632"
    },
    "microsoft_vex": {
      "current_release_date": "2026-09-28T02:46:13.000Z",
      "cve": "CVE-2026-93782",
      "id": "msrc_CVE-2026-93782",
      "initial_release_date": "2026-09-28T02:46:13.000Z",
      "product_status:known_affected": "1",
      "source": "Microsoft CSAF VEX",
      "status": "final",
      "title": "vhost-scsi: flush backend after device ioctls",
      "url": "https://msrc.microsoft.com/csaf/vex/2026/msrc_cve-2026-93782.json",
      "version": "1"
    },
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "defaultStatus": "unaffected",
                "product": "Linux",
                "programFiles": [
                  "drivers/vhost/scsi.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "lessThan": "981c97d09c6b9560bb12dcc41f11ce59b1a48e97",
                    "status": "affected",
                    "version": "057cbf49a1f08297877e46c82f707b1bfea806a8",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "6c1b802e36b05ebd9d41686c4dce6f06966af469",
                    "status": "affected",
                    "version": "057cbf49a1f08297877e46c82f707b1bfea806a8",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "22598f55a4c2b510b3df5e69e563387a963222ae",
                    "status": "affected",
                    "version": "057cbf49a1f08297877e46c82f707b1bfea806a8",
                    "versionType": "git"
                  }
                ]
              },
              {
                "defaultStatus": "affected",
                "product": "Linux",
                "programFiles": [
                  "drivers/vhost/scsi.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "status": "affected",
                    "version": "3.6"
                  },
                  {
                    "lessThan": "3.6",
                    "status": "unaffected",
                    "version": "0",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.12.*",
                    "status": "unaffected",
                    "version": "6.12.111",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.18.*",
                    "status": "unaffected",
                    "version": "6.18.53",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "*",
                    "status": "unaffected",
                    "version": "7.2",
                    "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\nvhost-scsi: flush backend after device ioctls\n\nvhost-scsi translates guest response descriptors into userspace iovecs\nwhen commands are submitted.  Target-core completes those commands\nasynchronously, so VHOST_SET_MEM_TABLE can replace the memory table while\nan in-flight command still retains response iovecs translated through the\nold table.\n\nIf the old mapping is reused after VHOST_SET_MEM_TABLE returns, command\ncompletion can write the response to an unrelated userspace object.\n\nFlush the vhost-scsi backend after vhost_dev_ioctl() handles a device\nioctl.  This waits for in-flight commands that can still use the old\nresponse iovecs before the ioctl returns."
          }
        ],
        "id": "CVE-2026-93782",
        "lastModified": "2026-09-25T13:17:18.713",
        "metrics": {
          "cvssMetricV31": [
            {
              "cvssData": {
                "attackComplexity": "HIGH",
                "attackVector": "LOCAL",
                "availabilityImpact": "HIGH",
                "baseScore": 7.8,
                "baseSeverity": "HIGH",
                "confidentialityImpact": "HIGH",
                "integrityImpact": "HIGH",
                "privilegesRequired": "LOW",
                "scope": "CHANGED",
                "userInteraction": "NONE",
                "vectorString": "CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:C/C:H/I:H/A:H",
                "version": "3.1"
              },
              "exploitabilityScore": 1.1,
              "impactScore": 6.0,
              "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
              "type": "Secondary"
            }
          ]
        },
        "published": "2026-09-24T17:17:10.793",
        "references": [
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/22598f55a4c2b510b3df5e69e563387a963222ae"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/6c1b802e36b05ebd9d41686c4dce6f06966af469"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/981c97d09c6b9560bb12dcc41f11ce59b1a48e97"
          }
        ],
        "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "vulnStatus": "Received"
      }
    },
    "redhat_vex": {
      "aggregate_severity": "Moderate",
      "current_release_date": "2026-09-28T10:23:55+00:00",
      "cve": "CVE-2026-93782",
      "id": "CVE-2026-93782",
      "initial_release_date": "2026-09-24T00:00:00+00:00",
      "product_status:known_not_affected": "276",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: vhost-scsi: flush backend after device ioctls",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-93782.json",
      "version": "3"
    },
    "suse_vex": {
      "aggregate_severity": "important",
      "current_release_date": "2026-09-25T23:48:59Z",
      "cve": "CVE-2026-93782",
      "id": "CVE-2026-93782",
      "initial_release_date": "2026-09-24T23:47:58Z",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2026-93782",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2026-93782.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…

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…