CVE-2026-13212
The Zephyr virtio driver does not validate the descriptor-chain head id that the virtio device writes into the used ring. In virtio_isr() (drivers/virtio/virtio_common.c), the device-written vq->used->ring[idx].id is used directly as an index into vq->recv_cbs[] and vq->desc[], which are both allocated with exactly vq->num entries. recv_cbs[] holds {cb, opaque} callback entries, and the indexed callback pointer is then invoked as cbe.cb(cbe.opaque, used_len). Because the id is consumed as a 16-bit value with no bound check, a malicious or compromised virtio backend (an untrusted hypervisor, or an untrusted hardware/peer-processor virtio device on a PCI or MMIO transport) can supply an id far beyond vq->num. This causes an out-of-bounds read of a {function pointer, argument} pair from heap memory beyond recv_cbs[], after which the driver calls that attacker-shaped pointer in the guest's interrupt context. No guest privileges or user interaction are required; the backend triggers it by writing the shared used ring and raising the queue interrupt. The result is an arbitrary / attacker-influenced function-pointer call in the Zephyr guest, i.e. a control-flow-hijack primitive that can lead to code execution or, at minimum, a reliable crash. The fix rejects any used-ring id >= vq->num before indexing recv_cbs[]/desc[] or invoking the callback. This affects builds using CONFIG_VIRTIO with the PCI or MMIO transport.
Scoring
- Severity
- HIGH
- CVSS base score
- 8.8
- CVSS vector
- CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
- EPSS probability
- 0.22%
- CWE
- CWE-129
- Published
- 2026-08-24
- Last modified
- 2026-08-24
Affected products
- zephyrproject zephyr
Weakness type
Related vulnerabilities
- CVE-2023-54396 — PocketMine-MP before 4.8.1 Server Crash via Banner NBT
- CVE-2026-87500 — Improper validation of array index in ANGLE in Google Chrome prior to 153.0.8010.36 allowed a...
- CVE-2026-0799 — OOBR and OOBW in libpcap before 1.10.7
- CVE-2026-57159 — PJSIP: SDP parser out-of-bounds write in remote payload-type map maintenance
- CVE-2026-85084 — Out-of-bounds write in TizenFX MediaBufferBase indexer setter due to missing bounds check
- CVE-2023-31308 — A malicious virtual function can invoke the certain command handlers in the SMU, causing a denial...
- CVE-2026-82327 — Libsolv: libsolv: out-of-bounds write in repo_write() via unvalidated directory id from vertical/paged .solv filelist data
- CVE-2026-19318 — Fireware OS Pre-Authentication Stack Buffer Overflow in iked Allows Remote Code Execution