{"id":"CVE-2026-80693","state":"PUBLISHED","title":"idpf: bound interrupt-vector register fill to the allocated array","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nidpf: bound interrupt-vector register fill to the allocated array\n\nidpf_get_reg_intr_vecs() fills the caller-allocated reg_vals[] array from\nthe VIRTCHNL2_OP_ALLOC_VECTORS reply in adapter->req_vec_chunks, bounding\nits inner loop only by the per-chunk num_vectors. The array is sized\nseparately: idpf_intr_reg_init() allocates\nkzalloc_objs(struct idpf_vec_regs, total_vecs) from\ncaps.num_allocated_vectors and only checks the returned count after the\nfill. The sum of per-chunk num_vectors is never reconciled against\ntotal_vecs, so a reply with a small num_allocated_vectors but chunks\nsumming higher writes past the end of reg_vals[].\n\nImpact: a control plane (a PF or hypervisor device model) that returns a\nVIRTCHNL2_OP_ALLOC_VECTORS reply whose per-chunk num_vectors sum exceeds\nnum_allocated_vectors writes struct idpf_vec_regs entries past the end of\nthe reg_vals kmalloc allocation (KASAN slab-out-of-bounds write).\n\nBound the fill loop to the array capacity passed in by the callers,\nmirroring the sibling idpf_vport_get_q_reg(). The existing\nnum_regs < num_vecs check then rejects an undersized reply without the\nout-of-bounds write happening first.","publishedAt":"2026-08-28T06:52:56.131Z","updatedAt":"2026-10-21T12:46:53.892Z","severity":{"score":9.3,"label":"Critical","version":"3.1","vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H","source":"Linux"},"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"d4d5587182664b0c4ab6d3556ce881cb975507c2","status":"affected","lessThan":"a6447b6a9678e701ca4d32789f311067cf528c2d","versionType":"git"},{"version":"d4d5587182664b0c4ab6d3556ce881cb975507c2","status":"affected","lessThan":"e299b7d1334ebec4d43a7bb697d10c12df1aaed3","versionType":"git"},{"version":"d4d5587182664b0c4ab6d3556ce881cb975507c2","status":"affected","lessThan":"41bb8748124d0d8ee5d8e1eace9dfbc874bc9564","versionType":"git"},{"version":"d4d5587182664b0c4ab6d3556ce881cb975507c2","status":"affected","lessThan":"9f7007ee9858c99aa43101bc8352c672fee85644","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/net/ethernet/intel/idpf/idpf_dev.c","drivers/net/ethernet/intel/idpf/idpf_vf_dev.c","drivers/net/ethernet/intel/idpf/idpf_virtchnl.c","drivers/net/ethernet/intel/idpf/idpf_virtchnl.h"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"6.7","status":"affected"},{"version":"0","status":"unaffected","lessThan":"6.7","versionType":"semver"},{"version":"6.12.114","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.57","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.1.8","status":"unaffected","lessThanOrEqual":"7.1.*","versionType":"semver"},{"version":"7.2","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/net/ethernet/intel/idpf/idpf_dev.c","drivers/net/ethernet/intel/idpf/idpf_vf_dev.c","drivers/net/ethernet/intel/idpf/idpf_virtchnl.c","drivers/net/ethernet/intel/idpf/idpf_virtchnl.h"]}],"references":["https://git.kernel.org/stable/c/a6447b6a9678e701ca4d32789f311067cf528c2d","https://git.kernel.org/stable/c/e299b7d1334ebec4d43a7bb697d10c12df1aaed3","https://git.kernel.org/stable/c/41bb8748124d0d8ee5d8e1eace9dfbc874bc9564","https://git.kernel.org/stable/c/9f7007ee9858c99aa43101bc8352c672fee85644"],"weaknesses":[],"ingestedAt":"2026-10-29T20:13:07.220Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/80xxx/CVE-2026-80693.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-80693","state":"PUBLISHED","datePublished":"2026-08-28T06:52:56.131Z","dateUpdated":"2026-10-21T12:46:53.892Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2026-08-26T14:34:25.785Z"},"containers":{"cna":{"title":"idpf: bound interrupt-vector register fill to the allocated array","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nidpf: bound interrupt-vector register fill to the allocated array\n\nidpf_get_reg_intr_vecs() fills the caller-allocated reg_vals[] array from\nthe VIRTCHNL2_OP_ALLOC_VECTORS reply in adapter->req_vec_chunks, bounding\nits inner loop only by the per-chunk num_vectors. The array is sized\nseparately: idpf_intr_reg_init() allocates\nkzalloc_objs(struct idpf_vec_regs, total_vecs) from\ncaps.num_allocated_vectors and only checks the returned count after the\nfill. The sum of per-chunk num_vectors is never reconciled against\ntotal_vecs, so a reply with a small num_allocated_vectors but chunks\nsumming higher writes past the end of reg_vals[].\n\nImpact: a control plane (a PF or hypervisor device model) that returns a\nVIRTCHNL2_OP_ALLOC_VECTORS reply whose per-chunk num_vectors sum exceeds\nnum_allocated_vectors writes struct idpf_vec_regs entries past the end of\nthe reg_vals kmalloc allocation (KASAN slab-out-of-bounds write).\n\nBound the fill loop to the array capacity passed in by the callers,\nmirroring the sibling idpf_vport_get_q_reg(). The existing\nnum_regs < num_vecs check then rejects an undersized reply without the\nout-of-bounds write happening first."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"d4d5587182664b0c4ab6d3556ce881cb975507c2","status":"affected","lessThan":"a6447b6a9678e701ca4d32789f311067cf528c2d","versionType":"git"},{"version":"d4d5587182664b0c4ab6d3556ce881cb975507c2","status":"affected","lessThan":"e299b7d1334ebec4d43a7bb697d10c12df1aaed3","versionType":"git"},{"version":"d4d5587182664b0c4ab6d3556ce881cb975507c2","status":"affected","lessThan":"41bb8748124d0d8ee5d8e1eace9dfbc874bc9564","versionType":"git"},{"version":"d4d5587182664b0c4ab6d3556ce881cb975507c2","status":"affected","lessThan":"9f7007ee9858c99aa43101bc8352c672fee85644","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/net/ethernet/intel/idpf/idpf_dev.c","drivers/net/ethernet/intel/idpf/idpf_vf_dev.c","drivers/net/ethernet/intel/idpf/idpf_virtchnl.c","drivers/net/ethernet/intel/idpf/idpf_virtchnl.h"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"6.7","status":"affected"},{"version":"0","status":"unaffected","lessThan":"6.7","versionType":"semver"},{"version":"6.12.114","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.57","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.1.8","status":"unaffected","lessThanOrEqual":"7.1.*","versionType":"semver"},{"version":"7.2","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/net/ethernet/intel/idpf/idpf_dev.c","drivers/net/ethernet/intel/idpf/idpf_vf_dev.c","drivers/net/ethernet/intel/idpf/idpf_virtchnl.c","drivers/net/ethernet/intel/idpf/idpf_virtchnl.h"]}],"references":[{"url":"https://git.kernel.org/stable/c/a6447b6a9678e701ca4d32789f311067cf528c2d"},{"url":"https://git.kernel.org/stable/c/e299b7d1334ebec4d43a7bb697d10c12df1aaed3"},{"url":"https://git.kernel.org/stable/c/41bb8748124d0d8ee5d8e1eace9dfbc874bc9564"},{"url":"https://git.kernel.org/stable/c/9f7007ee9858c99aa43101bc8352c672fee85644"}],"metrics":[{"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H","baseScore":9.3,"baseSeverity":"CRITICAL"},"scenarios":[{"lang":"en","value":"AV:L - The bug is reached only when the idpf driver processes a VIRTCHNL2_OP_ALLOC_VECTORS reply over the PCIe virtchnl/mailbox control queue during idpf_vc_core_init()/idpf_vport_intr_init(); there is no network packet, syscall, or netlink path into idpf_get_reg_intr_vecs().\nAC:L - A malicious control plane fully controls GET_CAPS num_allocated_vectors and per-chunk num_vectors in the ALLOC_VECTORS reply, so the slab out-of-bounds write is deterministic on driver init or hardware-reset re-init without races or attacker-uncontrollable memory layout.\nPR:N - Exploitation requires no credentials on the victim OS; a malicious PF, hypervisor device model, or NIC firmware can inject the crafted virtchnl reply during probe/reset before any local user action, including in cloud VMs where tenants never administer the control plane.\nUI:N - No victim interaction is required beyond normal driver bring-up; cloud and server images auto-probe the Intel idpf PF/VF and open netdevs at boot, so the attacker need not wait for a user to mount, click, or manually configure the interface.\nS:C - The attack crosses the SR-IOV/virtio control-plane boundary: a hypervisor or device firmware outside the guest/host kernel trust domain corrupts kernel heap memory inside the idpf driver security authority, matching other virtchnl isolation-breaker CVEs.\nC:H - The flaw is a kmalloc slab out-of-bounds write of attacker-influenced struct idpf_vec_regs entries (dyn_ctl_reg, itrn_reg, itrn_index_spacing); such heap corruption can disclose adjacent slab objects and be groomed into an arbitrary kernel read primitive.\nI:H - Each overfilled entry writes 12 bytes of control-plane-supplied register metadata past reg_vals[], giving a repeatable heap overflow primitive that can corrupt adjacent allocations and be leveraged for control-flow hijack or privilege escalation in the victim kernel.\nA:H - Writing far beyond the reg_vals[] allocation corrupts slab metadata or adjacent kernel objects and can immediately oops/panic the host or guest kernel; hardware-reset recovery re-enters idpf_vc_core_init(), allowing repeated crash or re-exploitation attempts."}]}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-10-21T12:46:53.892Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.7","versionEndExcluding":"6.12.114"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.7","versionEndExcluding":"6.18.57"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.7","versionEndExcluding":"7.1.8"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.7","versionEndExcluding":"7.2"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}},"adp":[{"title":"CISA ADP Vulnrichment","metrics":[{"other":{"type":"ssvc","content":{"id":"CVE-2026-80693","role":"CISA Coordinator","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"total"}],"version":"2.0.3","timestamp":"2026-10-16T19:20:11.642760Z"}}}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2026-10-16T19:26:33.729Z"}}]}}}