Odebrany

CVE-2026-89655

opublikowano:
modyfikacja:
Ocena CVSS
n/a
Brak oceny

>_ Opis

Tłumaczenie automatyczne – może zawierać nieścisłości.

W jądrze Linuksa usunięto następującą lukę:

ceph: napraw UAF w __kick_flushing_caps() na wejściu cf zwolnionym podczas odblokowania

list_for_each_entry() iteruje ci->i_cap_flush_list, ale spada
i_ceph_lock, aby wysyłać wiadomości z limitem. W oknie odblokowania
handle_cap_flush_ack() może uzyskać i_ceph_lock, odłączyć wpisy cf
z tid <= Flush_tid z listy, zwolnij i_ceph_lock i za darmo
je za pomocą ceph_free_cap_flush() poza dowolnym zamkiem. Kiedy oryginał
wątek ponownie uzyskuje i_ceph_lock, a makro pętli for przechodzi dalej przez
cf = list_next_entry(cf, i_list), usuwa referencje cf->i_list.next
na zwolnionej pamięci.

Harmonogram wyścigu:

__kick_flushing_caps() handle_cap_flush_ack()
------------------------ ------------------
trzyma i_ceph_lock <---
iteruje do cf (tid=10)
przygotowuje wiadomość FLUSH
upuszcza i_ceph_lock <---
__send_cap() ── FLUSH(tid=10)
MDS wysyła FLUSH_ACK(tid=10)
---> przejmuje i_ceph_lock
cf->tid(10) <= Flush_tid(10),
odłącza cf od i_cap_flush_list
upuszcza i_ceph_lock
ceph_free_cap_flush(cf) <- uwalnia!
nabywa i_ceph_lock <---
postępy w pętli for:
cf = lista_next_entry(cf, i_list)
-- UAF na uwolnionym cf->i_list.next

Wartość cf została właśnie wysłana przez samą funkcję __kick_flushing_caps za pomocą funkcji __send_cap().
MDS może wystarczająco szybko odpowiedzieć FLUSH_ACK
handle_cap_flush_ack() zwalnia cf, zanim __kick_flushing_caps będzie mógł to zrobić
zakończyć iterację.

Napraw, konwertując na ręczną pętlę while: zapisz następny wskaźnik
pod i_ceph_lock przed upuszczeniem, a następnie użyj zapisanego wskaźnika
po ponownym przejęciu, więc do potencjalnie uwolnionego cf już nigdy nie będzie można uzyskać dostępu.

>_ Referencje

Dane podatności pochodzą z oficjalnych źródeł (CVE® List / NVD). Opisy po polsku są tłumaczone automatycznie i mogą zawierać nieścisłości – na stronie rekordu można wyświetlić wersję angielską.

This product uses the NVD API but is not endorsed or certified by the NVD.

Copyright © 1999–2026, The MITRE Corporation. CVE is a registered trademark and the CVE logo is a registered trademark of The MITRE Corporation.

CVE Usage: MITRE hereby grants you a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute Common Vulnerabilities and Exposures (CVE®). Any copy you make for such purposes is authorized provided that you reproduce MITRE's copyright designation and this license in any such copy. ALL DOCUMENTS AND THE INFORMATION CONTAINED THEREIN PROVIDED BY MITRE ARE PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND.

NVD Terms of Use / CVE® Terms of Use / nvd.nist.gov / cve.org