- Son 7 gün
CVE-2026-98982
Linux çekirdeğinde sahte dentry'nin mount kökü olmasına izin veren bellek kullanımı sorunu
- Yayımlandı
- Güncellendi
- 24 Eki 2026
- Açık yaşı
- 5 gün
- Kaydı açan
- Linux
ÖzetTürkçe
Linux çekirdeğinde, bir mount noktasının kökü olarak sahte (pseudo) bir dentry'nin kullanılmasına izin verilmesiyle ilgili bir güvenlik açığı giderilmiştir. d_alloc_pseudo fonksiyonu, boru (pipe), soket ve diğer dosyalar için dentry'ler üretir; bunlar hiçbir zaman başka bir dentry'nin alt ya da üst öğesi olmaz. Bu dentry'ler DCACHE_NORCU bayrağını taşır ve kilitsiz yol gezintisi ile erişilemeyeceği için dentry_free bunları hemen serbest bırakır. Bu varsayım, dentry'nin bir mount'un kökü olmadığı sürece geçerlidir. Ancak /proc/self/fd/<fd> üzerinden böyle bir dosyanın bind mount edilmesi bu durumu oluşturabilir. alloc_file_pseudo çağrılarının çoğu dosyalarını çekirdek içi mount'lara yerleştirdiği ve may_copy_tree bunları reddettiği için sorun büyük ölçüde bpf_token_create üzerinden ortaya çıkar; bu fonksiyon token dosyasını çağıranın verdiği bpffs mount'una yerleştirir ve bu mount çağıranın mount ad alanındadır. Bu durumda __follow_mount_rcu fonksiyonu, mount'un kökündeki dentry'ye ait verileri okuyabilir; dentry bu sırada zaten serbest bırakılmış olabilir ve bu da kullanım-sonrası-serbest-bırakma (use-after-free) türünde bir duruma yol açabilir. Düzeltme ile DCACHE_NORCU dentry'ye sahip bir mount'un klonlanması artık reddedilmektedir.
Kaynaktaki açıklama (İngilizce)
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.
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ım | Etkilenen | Düzeltildiği sürüm |
|---|---|---|
| Linux | 6.9 | – |
| < 6.9 Etkilenmiyor | – | |
| ≥ 6.12.113 Etkilenmiyor | – | |
| ≥ 6.18.57 Etkilenmiyor | – | |
| ≥ 7.2.11 Etkilenmiyor | – |
Kaynaklar6 kaynak
Kayıt geçmişi
- 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.