{"dataType": "CVE_RECORD", "dataVersion": "5.2", "cveMetadata": {"cveId": "CVE-2026-72380", "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "state": "PUBLISHED", "assignerShortName": "Linux", "dateReserved": "2026-08-09T03:40:39.922Z", "datePublished": "2026-08-15T05:56:12.866Z", "dateUpdated": "2026-10-30T12:29:12.462Z"}, "containers": {"cna": {"providerMetadata": {"orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "shortName": "Linux", "dateUpdated": "2026-10-30T12:29:12.462Z"}, "descriptions": [{"lang": "en", "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nxen/pvcalls: bound backend response req_id before indexing rsp[]\n\npvcalls_front_event_handler() takes req_id directly from the\nbackend-supplied ring response and uses it to index the fixed-size\nbedata->rsp[] array for a memcpy() and a store, with no range check. A\nmalicious or buggy backend can set req_id past PVCALLS_NR_RSP_PER_RING\nand drive an out-of-bounds write past the bedata allocation.\n\nreq_id was also declared int while the wire field rsp->req_id is u32, so\na range check on the signed value alone is insufficient: a backend\nreq_id of 0xffffffff becomes -1, passes a >= PVCALLS_NR_RSP_PER_RING\ntest and indexes bedata->rsp[-1]. Declare req_id as u32 so a single\nbound covers both ends.\n\nA backend that sends an out-of-range req_id has violated the wire\nprotocol, so rather than silently dropping the response, log once and\nstop trusting the backend: set bedata->disabled. The event handler then\nignores further responses, and the request paths that wait for a\nresponse return -EIO instead of blocking forever. This mirrors the\nfatal-error handling xen-netback uses (xenvif_fatal_tx_err()).\n\nThe pvcalls frontend currently trusts its backend, so this is not a\nclassic-Xen security issue, but it matters for hardening PV frontends\nagainst malicious backends (confidential and disaggregated deployments)."}], "metrics": [{"cvssV3_1": {"version": "3.1", "vectorString": "CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H", "baseScore": 8.8, "baseSeverity": "HIGH"}, "scenarios": [{"lang": "en", "value": "AV:A - The bug is reached when a malicious Xen PVCalls backend writes crafted responses into the shared grant-table ring and notifies the guest frontend via an inter-domain event channel; this is an adjacent on-host backend-to-guest path, not remote IP delivery to the guest.\nAC:L - A compromised backend fully controls ring response contents and can set any req_id (including 0xffffffff for rsp[-1]) and re-notify the frontend IRQ at will; no races or attacker-uncontrollable heap layout are required to trigger the out-of-bounds write.\nPR:N - No credentials inside the vulnerable guest are needed; once the pvcalls frontend is xenbus-connected to a backend, that backend alone can inject the malformed response. Backend/domain control is the attack position, not privileges obtainable in the guest via user namespaces.\nUI:N - No victim user or application action is required after xenbus binds the pvcalls frontend to its backend; backend-driven ring writes and event-channel interrupts alone reach pvcalls_front_event_handler() without mounts, socket use, or other interactive steps.\nS:U - The out-of-bounds write corrupts kmalloc heap memory and kernel objects within the guest running the pvcalls frontend. This is backend-to-guest hardening, not a demonstrated guest-to-host or hypervisor escape across the VM security boundary.\nC:H - Backend-chosen req_id indexes bedata->rsp[] out of bounds for a ~20-byte memcpy plus req_id store, corrupting adjacent kernel heap memory (including rsp[-1] via the signed req_id bug) and enabling plausible arbitrary kernel memory disclosure if shaped further.\nI:H - The heap out-of-bounds write can overwrite adjacent kmalloc objects or allocator metadata, providing a credible path to arbitrary guest-kernel memory modification and control-flow hijack rather than being limited to a bounded or non-security integrity effect.\nA:H - Corrupting kernel heap structures via the unbounded rsp[] indexing can immediately panic or oops the guest kernel; even unexploited attempts are likely to crash or disable the frontend, causing total loss of guest availability."}]}], "affected": [{"product": "Linux", "vendor": "Linux", "defaultStatus": "unaffected", "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git", "programFiles": ["drivers/xen/pvcalls-front.c"], "versions": [{"version": "2195046bfd69e487d9a76dc47840f15c8412840c", "lessThan": "4aaf7f32f1569e2c0475e073b8d7ec63b231d4c6", "status": "affected", "versionType": "git"}, {"version": "2195046bfd69e487d9a76dc47840f15c8412840c", "lessThan": "72e27ef70a20298e60a1de438f3628c515dea895", "status": "affected", "versionType": "git"}, {"version": "2195046bfd69e487d9a76dc47840f15c8412840c", "lessThan": "ede7a60b046d8b7288651c55198574ed7c259da7", "status": "affected", "versionType": "git"}, {"version": "2195046bfd69e487d9a76dc47840f15c8412840c", "lessThan": "bc8f2d1c6f7cf6e6551c00eb582baf4b52a04794", "status": "affected", "versionType": "git"}, {"version": "2195046bfd69e487d9a76dc47840f15c8412840c", "lessThan": "d1297a9e2fd6ce08678b370d41bc980ca798f809", "status": "affected", "versionType": "git"}, {"version": "2195046bfd69e487d9a76dc47840f15c8412840c", "lessThan": "d33846c8dcc06b83b7acdeac1e8bfbb5c0c26cb2", "status": "affected", "versionType": "git"}]}, {"product": "Linux", "vendor": "Linux", "defaultStatus": "affected", "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git", "programFiles": ["drivers/xen/pvcalls-front.c"], "versions": [{"version": "4.15", "status": "affected"}, {"version": "0", "lessThan": "4.15", "status": "unaffected", "versionType": "semver"}, {"version": "6.1.191", "lessThanOrEqual": "6.1.*", "status": "unaffected", "versionType": "semver"}, {"version": "6.6.160", "lessThanOrEqual": "6.6.*", "status": "unaffected", "versionType": "semver"}, {"version": "6.12.114", "lessThanOrEqual": "6.12.*", "status": "unaffected", "versionType": "semver"}, {"version": "6.18.57", "lessThanOrEqual": "6.18.*", "status": "unaffected", "versionType": "semver"}, {"version": "7.1.5", "lessThanOrEqual": "7.1.*", "status": "unaffected", "versionType": "semver"}, {"version": "7.2", "lessThanOrEqual": "*", "status": "unaffected", "versionType": "original_commit_for_fix"}]}], "cpeApplicability": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "4.15", "versionEndExcluding": "6.1.191"}, {"vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "4.15", "versionEndExcluding": "6.6.160"}, {"vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "4.15", "versionEndExcluding": "6.12.114"}, {"vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "4.15", "versionEndExcluding": "6.18.57"}, {"vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "4.15", "versionEndExcluding": "7.1.5"}, {"vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "4.15", "versionEndExcluding": "7.2"}]}]}], "references": [{"url": "https://git.kernel.org/stable/c/4aaf7f32f1569e2c0475e073b8d7ec63b231d4c6"}, {"url": "https://git.kernel.org/stable/c/72e27ef70a20298e60a1de438f3628c515dea895"}, {"url": "https://git.kernel.org/stable/c/ede7a60b046d8b7288651c55198574ed7c259da7"}, {"url": "https://git.kernel.org/stable/c/bc8f2d1c6f7cf6e6551c00eb582baf4b52a04794"}, {"url": "https://git.kernel.org/stable/c/d1297a9e2fd6ce08678b370d41bc980ca798f809"}, {"url": "https://git.kernel.org/stable/c/d33846c8dcc06b83b7acdeac1e8bfbb5c0c26cb2"}], "title": "xen/pvcalls: bound backend response req_id before indexing rsp[]", "x_generator": {"engine": "bippy-1.2.0"}}}}