Sérülékenységek

CVE-2026-46242

Linux Linux

Adatlap

Eszköztípus
IT
Publikálva
Frissítve
Súlyosság
Magas
Prioritás
Fokozott
CWE
CWE-416

CVSS-pontszámok

Verzió Pontszám Súlyosság Vektor
3.1 7,8 Magas CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

Eredeti leírás

In the Linux kernel, the following vulnerability has been resolved:

eventpoll: fix ep_remove struct eventpoll / struct file UAF

ep_remove() (via ep_remove_file()) cleared file->f_ep under
file->f_lock but then kept using @file inside the critical section
(is_file_epoll(), hlist_del_rcu() through the head, spin_unlock).
A concurrent __fput() taking the eventpoll_release() fastpath in
that window observed the transient NULL, skipped
eventpoll_release_file() and ran to f_op->release / file_free().

For the epoll-watches-epoll case, f_op->release is
ep_eventpoll_release() -> ep_clear_and_put() -> ep_free(), which
kfree()s the watched struct eventpoll. Its embedded ->refs
hlist_head is exactly where epi->fllink.pprev points, so the
subsequent hlist_del_rcu()'s "*pprev = next" scribbles into freed
kmalloc-192 memory.

In addition, struct file is SLAB_TYPESAFE_BY_RCU, so the slot
backing @file could be recycled by alloc_empty_file() --
reinitializing f_lock and f_ep -- while ep_remove() is still
nominally inside that lock. The upshot is an attacker-controllable
kmem_cache_free() against the wrong slab cache.

Pin @file via epi_fget() at the top of ep_remove() and gate the
critical section on the pin succeeding. With the pin held @file
cannot reach refcount zero, which holds __fput() off and
transitively keeps the watched struct eventpoll alive across the
hlist_del_rcu() and the f_lock use, closing both UAFs.

If the pin fails @file has already reached refcount zero and its
__fput() is in flight. Because we bailed before clearing f_ep,
that path takes the eventpoll_release() slow path into
eventpoll_release_file() and blocks on ep->mtx until the waiter
side's ep_clear_and_put() drops it. The bailed epi's share of
ep->refcount stays intact, so the trailing ep_refcount_dec_and_test()
in ep_clear_and_put() cannot free the eventpoll out from under
eventpoll_release_file(); the orphaned epi is then cleaned up
there.

A successful pin also proves we are not racing
eventpoll_release_file() on this epi, so drop the now-redundant
re-check of epi->dying under f_lock. The cheap lockless
READ_ONCE(epi->dying) fast-path bailout stays.

Érintett termékek

  • Linux Linux Verziók: f2451def095c1743adcfcb0cb5dadc86034e162a – < a10fbbe74e1c743beb1bb312109366667461df8a; a1f93804449d13f97dabd4b996817de4bf1ed67a – < 3e1144d2515d28e4312e663ea05eac203101491d; 58c9b016e12855286370dfb704c08498edbc857a – < 2de4db145b2992da496fea6c51f9839be678, 6.4; 0 – < 6.4; 5.15.222 – <= 5.15.*; 6.1.178 – <= 6.1.*; 6.6.144 – <= 6.6.*; 6.12.95 – <= 6.12.*; 6.18.33 – <= 6.18.*; 7.0.10 – <= 7.0.*; 7.1 – <= *

Prioritás

Szint
Fokozott
Teendő
Azonnali intézkedés nem szükséges, de kövesse figyelemmel a sérülékenységet, mert a megítélése (például a kihasználtsága) változhat. Új információ hiányában a szoftvert a normál frissítési ütemezés szerint frissítse.

Kihasználási státusz

EPSS
4,58%
Automatizálhatóság
Nem
Technikai hatás
Teljes

Javítás

Javított verzió
5.15.222, 6.1.178, 6.6.144, 6.12.95, 6.18.33, 7.0.10, 7.1

Hivatkozások

Nemzeti Kiberbiztonsági Intézet
Adatvédelmi áttekintés

Weboldalunkon sütiket (cookie) használunk a látogatói forgalom elemzéséhez, az egyes felhasználói munkamenetek azonosításához, a tartalom és a hirdetések személyre szabásához, valamint a közösségi médiafunkciókhoz. Az "Összes elfogadása" gombra kattintva, Ön beleegyezik ezen cookie-k használatába, vagy az alábbi lehetőségek közül kiválaszthatja, mely sütiket engedélyezi. (Egyes sütik technikai okok miatt az első újratöltésig létrejöhetnek.)

További részletekért látogasson el a Tájékoztató a sütikről oldalra.