{
  "schema_version": "1.6.1",
  "id": "RPI-CVE-2024-49936",
  "modified": "2026-10-09T11:39:44Z",
  "upstream": [
    "CVE-2024-49936"
  ],
  "published": "2024-10-21T18:02:47Z",
  "summary": "net/xen-netback: prevent UAF in xenvif_flush_hash()",
  "details": "In the Linux kernel, the following vulnerability has been resolved:\n\nnet/xen-netback: prevent UAF in xenvif_flush_hash()\n\nDuring the list_for_each_entry_rcu iteration call of xenvif_flush_hash,\nkfree_rcu does not exist inside the rcu read critical section, so if\nkfree_rcu is called when the rcu grace period ends during the iteration,\nUAF occurs when accessing head->next after the entry becomes free.\n\nTherefore, to solve this, you need to change it to list_for_each_entry_safe.",
  "severity": [
    {
      "type": "CVSS_V3",
      "score": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H"
    }
  ],
  "affected": [
    {
      "package": {
        "ecosystem": "Raspberry Pi OS:12",
        "name": "linux"
      },
      "versions": [
        "1:6.1.47-1+rpt4"
      ],
      "ecosystem_specific": {
        "binaries": [
          {
            "binary_name": "linux-image-6.1.0-rpi3-rpi-2712",
            "binary_version": "1:6.1.47-1+rpt4"
          },
          {
            "binary_name": "linux-image-6.1.0-rpi3-rpi-v6",
            "binary_version": "1:6.1.47-1+rpt4"
          },
          {
            "binary_name": "linux-image-6.1.0-rpi3-rpi-v7",
            "binary_version": "1:6.1.47-1+rpt4"
          },
          {
            "binary_name": "linux-image-6.1.0-rpi3-rpi-v7l",
            "binary_version": "1:6.1.47-1+rpt4"
          },
          {
            "binary_name": "linux-image-6.1.0-rpi3-rpi-v8",
            "binary_version": "1:6.1.47-1+rpt4"
          }
        ]
      },
      "database_specific": {
        "per_version": {
          "1:6.1.47-1+rpt4": {
            "linux_commit": "655fc658a15ae7a6f37103754adb39ba52a9a14e",
            "upstream_version": "6.1.47",
            "assessment": "commit ancestry (strak rule)",
            "upstream_fixed": "6.1.113",
            "compiled_filter": false
          }
        }
      }
    }
  ],
  "references": [
    {
      "type": "ADVISORY",
      "url": "https://www.cve.org/CVERecord?id=CVE-2024-49936"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/3c4423b0c4b98213b3438e15061e1d08220e6982"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/a7f0073fcd12ed7de185ef2c0af9d0fa1ddef22c"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/a0465723b8581cad27164c9073fd780904cd22d4"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/efcff6ce7467f01f0753609f420333f3f2ceceda"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/143edf098b80669d05245b2f2367dd156a83a2c5"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/d408889d4b54f5501e4becc4dbbb9065143fbf4e"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/54d8639af5568fc41c0e274fc3ec9cf86c59fcbb"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/0fa5e94a1811d68fbffa0725efe6d4ca62c03d12"
    }
  ],
  "database_specific": {
    "source": "https://git.kernel.org/pub/scm/linux/security/vulns.git",
    "upstream_modified": "2026-08-05T11:52:36Z",
    "severity": {
      "source": "kernel CNA",
      "cvss_v3_score": 8.8,
      "cvss_v3_severity": "High",
      "scenario": "AV:L - The trigger is a `XEN_NETIF_CTRL_TYPE_SET_HASH_KEY` request written into the Xen shared-memory control ring by the guest frontend, or control-ring teardown \u2014 a local shared-memory interface from a guest VM, not a network protocol. No remote packet path reaches `xenvif_flush_hash()`.\nAC:L - A malicious guest fully controls both sides: it can keep the 64-entry cache populated with distinct flows and issue SET_HASH_KEY control requests in an unbounded tight loop, retrying the RCU-timing window arbitrarily many times per second with no host-side rate limit.\nPR:L - The attacker needs kernel/root control of a guest domU that has been granted a vif by the host toolstack, i.e. a low, host-conferred privilege relative to the vulnerable dom0 component \u2014 matching this repo's convention for guest-to-host issues such as CVE-2025-22012.\nUI:N - The guest drives the control ring entirely on its own; no dom0 administrator or user action is required at any point in the path.\nS:C - The vulnerable code executes in the dom0/driver-domain kernel while the attacker resides in an untrusted guest, so successful exploitation crosses the Xen VM/host security boundary.\nC:H - Use-after-free traversal reads `link.next` and entry fields out of freed, reclaimable heap memory in the host kernel, which an attacker who reallocates the slab can leverage into disclosure of host kernel data.\nI:H - After following a stale pointer, `list_del_rcu()` writes through attacker-influenceable `prev->next`/`next->prev` and `kfree_rcu()` is invoked on a bogus pointer, yielding a host-kernel write primitive suitable for control-flow hijacking.\nA:H - Dereferencing freed list memory in a dom0 IRQ-thread context with the cache spinlock held causes an oops or panic of the host kernel, taking down every VM on the machine."
    }
  }
}
