Katalog CVE

CVE-2026-98982

WysokieCVSS 7.8
Opublikowano: Zaktualizowano: Przetłumaczono: NVD NIST

Prawdopodobieństwo exploitacji (EPSS)

Niskie ryzyko
0.21%

Percentyl 11 - wyżej niż 11% wszystkich znanych CVE

Streszczenie

W jądrze Linux d_alloc_pseudo() zwraca dentry z flagą DCACHE_NORCU, które są natychmiast zwalniane, o ile nie stanowią korzenia montowania. Bind mounting /proc/self/fd/<fd> takiego pliku (np. tokenu BPF na bpffs) czyni taki dentry korzeniem montowania, co prowadzi do use-after-free podczas ścieżki __follow_mount_rcu(). Może to spowodować dostęp do zwolnionej pamięci.

Ocena ryzyka

Możliwe jest wywołanie use-after-free w jądrze, co może prowadzić do eskalacji uprawnień lub odmowy usługi. Wymaga lokalnego dostępu i możliwości wykonywania operacji montowania.

Rekomendacja

Zaktualizuj jądro Linux do wersji z poprawką. Ogranicz możliwość bind mountowania plików pseudo i operacji open_tree przez nieuprzywilejowanych 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: namespace: don't let a pseudo dentry become the root of a mount d_alloc_pseudo() hands out dentries for pipes, sockets and other files that are never anyone's child or parent. They carry DCACHE_NORCU and dentry_free() frees them right away because no lockless path walk can ever reach them. That holds as long as such a dentry isn't the root of a mount. But bind mounting /proc/self/fd/<fd> of such a file does exactly that. Most callers of alloc_file_pseudo() put their files on kernel-internal mounts and may_copy_tree() refuses those. bpf_token_create() doesn't. It places the token file on the bpffs mount the caller handed it and that mount is in the caller's mount namespace so the clone goes through: mount --bind /proc/self/fd/<token> <file> open_tree(tokfd, "", AT_EMPTY_PATH | OPEN_TREE_CLONE) + move_mount() __follow_mount_rcu() then loads ->mnt_root of that mount, reads d_seq and d_flags of the dentry and only then checks mount_lock. The dentry can be gone by then. The final mntput() of an unmounted parent unhooks a child that stayed attached to it under mount_lock alone. When the child's holder does the final put right after that the root is dput() and freed immediately while a walker that found the mount hashed still looks at it. Refuse to clone a mount with a DCACHE_NORCU dentry as its root. Nothing sensible can be done with a bind mount of a bpf token anyway.

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