Katalog CVE

CVE-2026-89698

Nieznane
Opublikowano: Przetłumaczono: NVD NIST

Streszczenie

W jądrze Linux struktura nfsd_genl_rqstp deklarowała pola rq_daddr i rq_saddr jako zwykłe struct sockaddr (16 bajtów). Przy połączeniu klienta IPv6 funkcja nfsd_genl_rpc_status_compose_msg() rzutowała te pola na struct sockaddr_in6 (28 bajtów), odczytując 8 bajtów poza końcem pola i wysyłając do przestrzeni użytkownika obcięty adres IPv6 wraz z fragmentem rq_flags przez netlink.

Ocena ryzyka

Możliwe ujawnienie 8 bajtów danych z sąsiedniego pola rq_flags do nieuprzywilejowanego procesu w przestrzeni nazw sieci. Podatność jest osiągalna bez uprawnień, ponieważ NFSD_CMD_RPC_STATUS_GET używa GENL_CMD_CAP_DUMP bez GENL_ADMIN_PERM.

Rekomendacja

Zaktualizować jądro Linux do wersji z poprawką poszerzającą rq_daddr i rq_saddr do struct sockaddr_storage oraz zerującą zmienną genl_rqstp, aby zapobiec wyciekowi niezainicjalizowanych bajtów.

Inne podatności w Linux kernel (nfsd)

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

In the Linux kernel, the following vulnerability has been resolved: nfsd: widen nfsd_genl_rqstp address fields to sockaddr_storage struct nfsd_genl_rqstp declares rq_daddr and rq_saddr as plain "struct sockaddr" (16 bytes). When an IPv6 NFS client is connected, nfsd_genl_rpc_status_compose_msg() casts these fields to "struct sockaddr_in6 *" (28 bytes) and reads sin6_addr at offset 8..24, which extends 8 bytes past the end of the 16-byte sockaddr field into the adjacent rq_flags member. The 16-byte nla_put_in6_addr then ships 8 bytes of truncated IPv6 address followed by 8 bytes of rq_flags to userspace via the NFSD_A_RPC_STATUS_SADDR6/DADDR6 netlink attributes. This is reachable by any unprivileged process in the network namespace because NFSD_CMD_RPC_STATUS_GET uses GENL_CMD_CAP_DUMP without GENL_ADMIN_PERM. Fix by widening rq_daddr and rq_saddr to struct sockaddr_storage so the IPv6 casts operate within bounds, copying sizeof(struct sockaddr_storage) bytes in the memcpy calls so the full address is captured, and zero-initializing the genl_rqstp stack variable to prevent leaking uninitialized tail bytes through netlink.

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