Zafiyet.live Keşfet. Değerlendir. Düzelt. Doğrula.
  • Son 7 gün

CVE-2026-98995

Linux çekirdeğinde mnt_change_mountpoint işlevinde use-after-free açığına yol açan dangling pointer sorunu

Linux

Yüksek 7,8 CVSS 3.1
Yayımlandı
Güncellendi
24 Eki 2026
Açık yaşı
5 gün
Kaydı açan
Linux

ÖzetTürkçe

Linux çekirdeğinde, __umount_mnt işlevi bağlantı noktasını (mount) kaldırdığında üst bağlamın ->overmount alanını sıfırlar; ancak mnt_change_mountpoint bunu yapmaz. Bu işlev bir bağlantıyı yeni üst öğesine taşır ve eski üst öğe hâlâ taşınan bağlantıyı işaret etmeye devam eder. attach_recursive_mnt içinde bu bir sorun oluşturmaz, çünkü yeni bağlantı eski üst öğenin ->overmount alanını zaten sıfırlamıştır. Ancak reparent işlevinde durum farklıdır: propagate_umount hayatta kalan bir overmount bağlantısını ilk kaldırılmayacak atasına taşır ve kaynak bağlantı hemen ardından kaldırılır. Bu kaldırılmış bağlantıyı canlı tutan bir dosya tanımlayıcısı varsa ->overmount, taşınmış bağlantıyı işaret eder; bu bir dangling pointer olur ve taşınmış bağlantı kaldırılıp serbest bırakıldığında use-after-free (UAF) oluşur. do_lock_mount işlevi, mount_lock altında hedef yoldan ->overmount alanını izler; böyle bir bağlantı üzerindeki bir dosya tanımlayıcısı bağlama hedefi olarak kullanıldığında topmost_overmount serbest bırakılmış bağlantıya ulaşabilir ve do_lock_mount orada bulduğu nesneler için referans alabilir. Düzeltme olarak, mnt_change_mountpoint içinde eski üst öğenin ->overmount alanı __umount_mnt ile aynı şekilde sıfırlanır; böylece bir bağlantının ->overmount alanı her zaman ona bağlı bir bağlantıyı gösterir. CVSS 3.1 vektörü: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H (puan 7.8, YÜKSEK). Etkilenen sürüm: 6.17; 6.18.57 ve 7.2.11 ile sonraki sürümler etkilenmez.

Kaynaktaki açıklama (İngilizce)

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

namespace: reset the old parent's ->overmount in mnt_change_mountpoint()

__umount_mnt() resets ->overmount of the parent when it unmounts the
mount that overmounts it. mnt_change_mountpoint() doesn't. It moves the
mount to its new parent and leaves the old one pointing at it.

For a mount that is moved beneath in attach_recursive_mnt() that doesn't
matter. The new mount has already reset ->overmount of the old parent by
the time the old top mount is moved onto it.

It matters for reparent() though. propagate_umount() moves a surviving
overmount onto the first ancestor that isn't going to be unmounted. The
mount it was taken from is unmounted immediately afterwards. If a file
descriptor keeps that unmounted mount alive ->overmount points at the
moved mount. That's a dangling pointer and UAF as the moved mount is
unmounted and freed.

do_lock_mount() follows ->overmount from the target path under
mount_lock. With a file descriptor on such a mount as the target of a
mount beneath topmost_overmount() walks into the freed mount and
do_lock_mount() takes references on whatever it finds there.

So reset ->overmount of the old parent in mnt_change_mountpoint() the
same way __umount_mnt() does. A mount's ->overmount is then always a
mount that is attached to it.

Bu açığın açıklamasını Türkçeye çevirdik. Adım adım çözüm önerilerini kritik ve yeni açıklar için hazırlıyoruz; düzeltilmiş sürüm aşağıdaki tabloda, ayrıntılar üreticinin duyurusunda.

Etkilenen sürümler1 yazılım

YazılımEtkilenenDüzeltildiği sürüm
Linux 6.17 –
< 6.17 Etkilenmiyor –
≥ 6.18.57 Etkilenmiyor –
≥ 7.2.11 Etkilenmiyor –

Kaynaklar5 kaynak

Kayıt geçmişi

  1. Yayımlandı

İlgili açıklar

Türkçe metin, resmi kayıtlardaki bilgilerle yapay zekâ yardımıyla yazıldı ve yayından önce otomatik kontrollerden geçti. Bir değişikliği uygulamadan önce üreticinin duyurusuna mutlaka bakın.