CVE-2024-46762 (GCVE-0-2024-46762)
Vulnerability from cvelistv5
Published
2024-09-18 07:12
Modified
2026-08-05 11:38
Summary
In the Linux kernel, the following vulnerability has been resolved: xen: privcmd: Fix possible access to a freed kirqfd instance Nothing prevents simultaneous ioctl calls to privcmd_irqfd_assign() and privcmd_irqfd_deassign(). If that happens, it is possible that a kirqfd created and added to the irqfds_list by privcmd_irqfd_assign() may get removed by another thread executing privcmd_irqfd_deassign(), while the former is still using it after dropping the locks. This can lead to a situation where an already freed kirqfd instance may be accessed and cause kernel oops. Use SRCU locking to prevent the same, as is done for the KVM implementation for irqfds.
Impacted products
Vendor Product Version
Linux Linux Version: f8941e6c4c712948663ec5d7bbb546f1a0f4e3f6
Version: f8941e6c4c712948663ec5d7bbb546f1a0f4e3f6
Version: f8941e6c4c712948663ec5d7bbb546f1a0f4e3f6
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "adp": [
      {
        "metrics": [
          {
            "other": {
              "content": {
                "id": "CVE-2024-46762",
                "options": [
                  {
                    "Exploitation": "none"
                  },
                  {
                    "Automatable": "no"
                  },
                  {
                    "Technical Impact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2024-09-29T14:43:33.478974Z",
                "version": "2.0.3"
              },
              "type": "ssvc"
            }
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2024-09-29T14:43:47.331Z",
          "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "shortName": "CISA-ADP"
        },
        "title": "CISA ADP Vulnrichment"
      }
    ],
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/xen/privcmd.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "e997b357b13a7d95de31681fc54fcc34235fa527",
              "status": "affected",
              "version": "f8941e6c4c712948663ec5d7bbb546f1a0f4e3f6",
              "versionType": "git"
            },
            {
              "lessThan": "112fd2f02b308564724b8e81006c254d20945c4b",
              "status": "affected",
              "version": "f8941e6c4c712948663ec5d7bbb546f1a0f4e3f6",
              "versionType": "git"
            },
            {
              "lessThan": "611ff1b1ae989a7bcce3e2a8e132ee30e968c557",
              "status": "affected",
              "version": "f8941e6c4c712948663ec5d7bbb546f1a0f4e3f6",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/xen/privcmd.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.6"
            },
            {
              "lessThan": "6.6",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.6.*",
              "status": "unaffected",
              "version": "6.6.51",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.10.*",
              "status": "unaffected",
              "version": "6.10.10",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.11",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.51",
                  "versionStartIncluding": "6.6",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.10.10",
                  "versionStartIncluding": "6.6",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.11",
                  "versionStartIncluding": "6.6",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nxen: privcmd: Fix possible access to a freed kirqfd instance\n\nNothing prevents simultaneous ioctl calls to privcmd_irqfd_assign() and\nprivcmd_irqfd_deassign(). If that happens, it is possible that a kirqfd\ncreated and added to the irqfds_list by privcmd_irqfd_assign() may get\nremoved by another thread executing privcmd_irqfd_deassign(), while the\nformer is still using it after dropping the locks.\n\nThis can lead to a situation where an already freed kirqfd instance may\nbe accessed and cause kernel oops.\n\nUse SRCU locking to prevent the same, as is done for the KVM\nimplementation for irqfds."
        }
      ],
      "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 vulnerability is reached only through `ioctl(IOCTL_PRIVCMD_IRQFD)` on the `/dev/xen/privcmd` character device, requiring local access to the system. No remote or adjacent-network path exists to `privcmd_ioctl_irqfd()`.\nAC:L - The attacker controls both sides of the race, issuing the assign and deassign ioctls concurrently from its own threads on the same eventfd, and can retry in a tight loop; the window is further widened by the workqueue handoff to `irqfd_shutdown()` and the preemptible `HYPERVISOR_dm_op()` call in `irqfd_inject()`.\nPR:L - `privcmd_ioctl()` performs no capability check whatsoever \u2014 only the device-node permission gates access \u2014 and the `IOCTL_PRIVCMD_RESTRICT` design explicitly hands a privcmd fd to deprivileged device-model/virtio-backend daemons, which is exactly the scenario the irqfd interface was built for, so an unprivileged local process holding that fd can trigger the UAF.\nUI:N - The attacker performs the entire sequence itself with two concurrent ioctls on descriptors it owns; no action by any other user or victim process is needed.\nS:U - The use-after-free corrupts kernel memory in the same domain that hosts the calling process, giving standard local kernel privilege escalation rather than crossing the Xen guest/host or IOMMU boundary.\nC:H - The freed `privcmd_kernel_irqfd` is left registered in the eventfd wait queue and is re-read (`kirqfd-\u003eeventfd`, `kirqfd-\u003exbufs`, `wait-\u003efunc`) after `kfree()`, and the attacker chooses the allocation size via the unbounded `irqfd-\u003esize`, so resprayed slab contents can be leveraged into arbitrary kernel memory disclosure.\nI:H - `add_wait_queue_priority()` writes list pointers into the freed chunk and `kirqfd-\u003eerror = rc` writes into it as well, while the dangling wait-queue entry causes a later `eventfd_signal()` to call a function pointer read from attacker-resprayed memory \u2014 a control-flow hijack / arbitrary-write primitive.\nA:H - The commit itself states the freed `kirqfd` access \"can lead to a situation where an already freed kirqfd instance may be accessed and cause kernel oops\"; the corrupted wait-queue list and freed `eventfd_ctx` reliably panic the kernel even without full exploitation."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T11:38:24.559Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/e997b357b13a7d95de31681fc54fcc34235fa527"
        },
        {
          "url": "https://git.kernel.org/stable/c/112fd2f02b308564724b8e81006c254d20945c4b"
        },
        {
          "url": "https://git.kernel.org/stable/c/611ff1b1ae989a7bcce3e2a8e132ee30e968c557"
        }
      ],
      "title": "xen: privcmd: Fix possible access to a freed kirqfd instance",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2024-46762",
    "datePublished": "2024-09-18T07:12:21.854Z",
    "dateReserved": "2024-09-11T15:12:18.272Z",
    "dateUpdated": "2026-08-05T11:38:24.559Z",
    "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-2024-46762\", \"role\": \"CISA Coordinator\", \"options\": [{\"Exploitation\": \"none\"}, {\"Automatable\": \"no\"}, {\"Technical Impact\": \"partial\"}], \"version\": \"2.0.3\", \"timestamp\": \"2024-09-29T14:43:33.478974Z\"}}}], \"providerMetadata\": {\"orgId\": \"134c704f-9b21-4f2e-91b3-4a467353bcc0\", \"shortName\": \"CISA-ADP\", \"dateUpdated\": \"2024-09-29T14:43:37.649Z\"}}], \"cna\": {\"title\": \"xen: privcmd: Fix possible access to a freed kirqfd instance\", \"affected\": [{\"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\", \"vendor\": \"Linux\", \"product\": \"Linux\", \"versions\": [{\"status\": \"affected\", \"version\": \"f8941e6c4c712948663ec5d7bbb546f1a0f4e3f6\", \"lessThan\": \"e997b357b13a7d95de31681fc54fcc34235fa527\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"f8941e6c4c712948663ec5d7bbb546f1a0f4e3f6\", \"lessThan\": \"112fd2f02b308564724b8e81006c254d20945c4b\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"f8941e6c4c712948663ec5d7bbb546f1a0f4e3f6\", \"lessThan\": \"611ff1b1ae989a7bcce3e2a8e132ee30e968c557\", \"versionType\": \"git\"}], \"programFiles\": [\"drivers/xen/privcmd.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.6\"}, {\"status\": \"unaffected\", \"version\": \"0\", \"lessThan\": \"6.6\", \"versionType\": \"semver\"}, {\"status\": \"unaffected\", \"version\": \"6.6.51\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"6.6.*\"}, {\"status\": \"unaffected\", \"version\": \"6.10.10\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"6.10.*\"}, {\"status\": \"unaffected\", \"version\": \"6.11\", \"versionType\": \"original_commit_for_fix\", \"lessThanOrEqual\": \"*\"}], \"programFiles\": [\"drivers/xen/privcmd.c\"], \"defaultStatus\": \"affected\"}], \"references\": [{\"url\": \"https://git.kernel.org/stable/c/e997b357b13a7d95de31681fc54fcc34235fa527\"}, {\"url\": \"https://git.kernel.org/stable/c/112fd2f02b308564724b8e81006c254d20945c4b\"}, {\"url\": \"https://git.kernel.org/stable/c/611ff1b1ae989a7bcce3e2a8e132ee30e968c557\"}], \"x_generator\": {\"engine\": \"bippy-1.2.0\"}, \"descriptions\": [{\"lang\": \"en\", \"value\": \"In the Linux kernel, the following vulnerability has been resolved:\\n\\nxen: privcmd: Fix possible access to a freed kirqfd instance\\n\\nNothing prevents simultaneous ioctl calls to privcmd_irqfd_assign() and\\nprivcmd_irqfd_deassign(). If that happens, it is possible that a kirqfd\\ncreated and added to the irqfds_list by privcmd_irqfd_assign() may get\\nremoved by another thread executing privcmd_irqfd_deassign(), while the\\nformer is still using it after dropping the locks.\\n\\nThis can lead to a situation where an already freed kirqfd instance may\\nbe accessed and cause kernel oops.\\n\\nUse SRCU locking to prevent the same, as is done for the KVM\\nimplementation for irqfds.\"}], \"cpeApplicability\": [{\"nodes\": [{\"negate\": false, \"cpeMatch\": [{\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.6.51\", \"versionStartIncluding\": \"6.6\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.10.10\", \"versionStartIncluding\": \"6.6\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.11\", \"versionStartIncluding\": \"6.6\"}], \"operator\": \"OR\"}]}], \"providerMetadata\": {\"orgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"shortName\": \"Linux\", \"dateUpdated\": \"2026-01-05T11:37:37.901Z\"}}}",
      "cveMetadata": "{\"cveId\": \"CVE-2024-46762\", \"state\": \"PUBLISHED\", \"dateUpdated\": \"2026-01-05T11:37:37.901Z\", \"dateReserved\": \"2024-09-11T15:12:18.272Z\", \"assignerOrgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"datePublished\": \"2024-09-18T07:12:21.854Z\", \"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…