Bug 2521055 (CVE-2026-74580) - CVE-2026-74580 kernel: vhost: reset the vring metadata cache on vring reconfiguration
Summary: CVE-2026-74580 kernel: vhost: reset the vring metadata cache on vring reconfi...
Keywords:
Status: NEW
Alias: CVE-2026-74580
Product: Security Response
Classification: Other
Component: vulnerability
Version: unspecified
Hardware: All
OS: Linux
high
high
Target Milestone: ---
Assignee: Product Security
QA Contact:
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2026-08-21 17:03 UTC by OSIDB Bzimport
Modified: 2026-10-27 21:24 UTC (History)
5 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed:
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Product Errata RHSA-2026:62568 0 None None None 2026-09-02 11:02:35 UTC
Red Hat Product Errata RHSA-2026:81349 0 None None None 2026-10-12 16:30:58 UTC
Red Hat Product Errata RHSA-2026:81371 0 None None None 2026-10-12 16:01:21 UTC

Description OSIDB Bzimport 2026-08-21 17:03:11 UTC
In the Linux kernel, the following vulnerability has been resolved:

vhost: reset the vring metadata cache on vring reconfiguration

vq->meta_iotlb[] caches the vhost_iotlb_map that backs each vring
metadata region, and iotlb_access_ok() returns early on a cache hit,
taking the hit as proof that the region has already been validated:

	if (vhost_vq_meta_fetch(vq, addr, len, type))
		return true;

The cache is reset on VHOST_IOTLB_UPDATE and VHOST_IOTLB_INVALIDATE, on
device IOTLB (re)initialisation and on vq reset, but not when
VHOST_SET_VRING_ADDR replaces vq->desc, vq->avail and vq->used, nor when
VHOST_SET_VRING_NUM changes the region sizes.

With a device IOTLB attached both ioctls are accepted while the vq is
live, and neither validates the addresses at ioctl time: vq_access_ok()
and vq_log_used_access_ok() return true early because the addresses are
GIOVAs, deferring validation to prefetch time.  Once the cache has been
populated that deferred validation no longer runs -- vq_meta_prefetch()
hits the stale entry and returns true -- and vhost_vq_meta_fetch() keeps
translating through the old mapping as

	map->addr + addr - map->start

for an address the mapping no longer covers.  vhost_copy_to_user() and
vhost_copy_from_user() consume the result with __copy_to_user() and
__copy_from_user(), which do not check it either, so a subsequent used
ring update or descriptor fetch accesses memory outside the region the
IOTLB actually maps.

Reset the metadata cache whenever the vring is reconfigured, so the new
addresses are pushed back through iotlb_access_ok()'s slow path.

Comment 1 Mauro Matteo Cascella 2026-08-21 17:57:58 UTC
Upstream advisory:
https://lore.kernel.org/linux-cve-announce/2026082158-CVE-2026-74580-5db9@gregkh/T

Comment 8 errata-xmlrpc 2026-09-02 11:02:34 UTC
This issue has been addressed in the following products:

  Red Hat Enterprise Linux 9.6 Extended Update Support

Via RHSA-2026:62568 https://access.redhat.com/errata/RHSA-2026:62568

Comment 9 Jon Orris 2026-10-12 16:01:20 UTC
This issue has been addressed in the following products:

  Red Hat Enterprise Linux 7 Extended Lifecycle Support

Via RHSA-2026:81371 https://access.redhat.com/errata/RHSA-2026:81371

Comment 10 Jon Orris 2026-10-12 16:30:57 UTC
This issue has been addressed in the following products:

  Red Hat Enterprise Linux 7 Extended Lifecycle Support

Via RHSA-2026:81349 https://access.redhat.com/errata/RHSA-2026:81349

Comment 11 Akiyoshi Kurita 2026-10-14 08:40:28 UTC
Additional Information: Public PoC and Upstream Stable Fixes for CVE-2026-74580

A public Proof-of-Concept (PoC) exploit for CVE-2026-74580, affecting the Linux kernel vhost subsystem, is now available.

Recent security research also reports successful local privilege escalation on RHEL 9.8 and potential VM escape under specific conditions.

Public PoC:
https://github.com/zhangutah/security-research/tree/main/pocs/linux/cve-2026-74580

Upstream stable fixes:

- Linux 5.10.y (reference for RHEL 8):
  https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=5224bd37e37d36076a550d99b2aebba33939fd95
- Linux 5.15.y (reference for RHEL 9):
  https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=54617e9119be2eb728ecdd8d977b99c99d4c498a

These commits are upstream stable fixes and do not confirm their inclusion in RHEL kernels.

Possible mitigation:

On systems where vhost is not required, administrators can prevent automatic loading of the vhost module:

echo "install vhost /bin/true" > /etc/modprobe.d/disable-vhost.conf

This mitigation does not affect already loaded modules and may not cover all module loading paths.

Security news (October 14, 2026):
https://thehackernews.com/2026/10/ai-found-linux-kernel-flaw-gives-local.html

Could Red Hat Product Security please verify the fix status across affected RHEL 8 and RHEL 9 kernel streams, including EUS releases, and reassess the security impact in light of the publicly available PoC?

I have not independently reproduced the exploit.


Note You need to log in before you can comment on or make changes to this bug.