CVE-2026-52940
ŚrednieCVSS 5.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 2 - wyżej niż 2% wszystkich znanych CVE
Streszczenie
W jądrze Linux w funkcji tun_put_user() struktura virtio_net_hdr_v1_hash_tunnel na stosie nie jest zerowana. Dla pakietów nietunelowych inicjalizowane jest tylko 10 pierwszych bajtów, a pozostałe 14 bajtów zawiera śmieci ze stosu. Nieuprzywilejowany użytkownik może ustawić rozmiar nagłówka vnet na 24 bajty, co powoduje wyciek 14 bajtów danych ze stosu jądra do przestrzeni użytkownika przy każdym odczycie pakietu nietunelowego.
Ocena ryzyka
Organizacja narażona jest na wyciek wrażliwych danych jądra (np. klucze, hasła, fragmenty innych procesów) do przestrzeni użytkownika, co może umożliwić eskalację uprawnień lub kradzież informacji.
Rekomendacja
Niezwłocznie zastosować łatkę bezpieczeństwa dla jądra Linux zawierającą zerowanie całej struktury virtio_net_hdr_v1_hash_tunnel w funkcji tun_put_user(). Zaktualizować system do wersji jądra zawierającej poprawkę.
Oryginalny opis (angielski, źródło NVD)
In the Linux kernel, the following vulnerability has been resolved: tun: zero the whole vnet header in tun_put_user() tun_put_user() declares an on-stack struct virtio_net_hdr_v1_hash_tunnel without zeroing it. For a non-tunnel skb, virtio_net_hdr_tnl_from_skb() only initializes the first 10 bytes (sizeof(struct virtio_net_hdr)), leaving bytes 10..23 (num_buffers and the hash/tunnel fields) as stack garbage. An unprivileged user can set the vnet header size to 24 with TUNSETVNETHDRSZ, so __tun_vnet_hdr_put() copies all 24 bytes of the partially-initialized struct to userspace, leaking 14 bytes of kernel stack on every read of a non-tunnel packet. Fix it the same way tun_get_user() already does by zeroing the whole header right after declaration.

