Katalog CVE

CVE-2026-97994

Nieznane
Opublikowano: Przetłumaczono: NVD NIST

Streszczenie

W jądrze Linux w module vhost/vdpa występuje błąd polegający na akceptowaniu rozmiaru kolejki VRING_NUM większego niż maksymalny rozmiar obsługiwany przez urządzenie. vhost_vring_set_num() przyjmuje dowolny niezerowy rozmiar kolejki będący potęgą dwójki mieszczący się w 16 bitach, a vhost-vdpa przekazuje tę wartość do set_vq_num() bez porównania z get_vq_num_max(). Proces z dostępem do /dev/vhost-vdpa-* może skonfigurować kolejkę większą niż reklamowana przez urządzenie, co prowadzi do odczytu poza granicami w ścieżce vringh IOTLB (KASAN zgłasza 16-bajtowy out-of-bounds read).

Ocena ryzyka

Lokalny użytkownik z dostępem do /dev/vhost-vdpa-* może wywołać odczyt poza granicami pamięci, prowadzący do awarii jądra lub potencjalnego ujawnienia danych. Dotyczy systemów korzystających z vhost-vdpa i vdpa_sim.

Rekomendacja

Zaktualizuj jądro Linux do wersji zawierającej poprawkę, która waliduje rozmiar kolejki względem get_vq_num_max() i buforuje tę wartość po resecie. Ogranicz dostęp do /dev/vhost-vdpa-* dla niezaufanych użytkowników.

Inne podatności w Linux kernel

Zobacz wszystkie
Oryginalny opis (angielski, źródło NVD)

In the Linux kernel, the following vulnerability has been resolved: vhost/vdpa: reject VRING_NUM larger than device max vhost_vring_set_num() accepts any non-zero power-of-two queue size that fits in 16 bits. vhost-vdpa then passes that value to set_vq_num() without comparing it with get_vq_num_max(). A process with access to /dev/vhost-vdpa-* can therefore configure a queue larger than the device advertises. With vdpa_sim, the worker can walk descriptors beyond the mapped descriptor ring. KASAN reports a 16-byte out-of-bounds read, corresponding to one vring_desc, in the vringh IOTLB path: BUG: KASAN: out-of-bounds in _copy_from_iter Read of size 16 copy_from_iotlb copydesc_iotlb vringh_getdesc_iotlb vdpasim_net_work Cache get_vq_num_max() immediately after reset. Some backends derive it from writable queue-size state, so querying it after SET_NUM may return the current size instead of the device capability. Invalidate the cached value before reset so a failed reset leaves SET_NUM disabled. For VHOST_SET_VRING_NUM, copy the complete vring state once and use the same index and size for validation, vq->num, and set_vq_num(). This ensures that validation and use operate on the same copied values.

Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS