CVE-2026-64119
Açıklama
Linux çekirdeğinde aşağıdaki güvenlik açığı giderilmiştir: l2tp: l2tp_session_unhash fonksiyonunda list_del_rcu kullanımı Yetkisiz yerel bir kullanıcı, aynı tünel üzerinde eşzamanlı olarak L2TP_CMD_SESSION_CREATE ve L2TP_CMD_SESSION_DELETE komutlarıyla birlikte L2TP_ATTR_IFNAME üzerinden L2TP_CMD_SESSION_GET komutu göndererek l2tp_session_get_by_ifname() içerisinde bir ana bilgisayar CPU'sunu süresiz olarak kilitleyebilir. Her üç komut da GENL_UNS_ADMIN_PERM gerektirdiğinden, netns kullanıcı ad alanındaki CAP_NET_ADMIN yetkisi yeterlidir; l2tp_core modülünün yüklü olduğu herhangi bir ana bilgisayarda tetikleyiciye standart bir `unshare -Urn` sandbox ortamından erişilebilir. l2tp_session_unhash(), bir oturumu tunnel->session_list listesinden list_del_init() ile kaldırır ancak bu liste, l2tp_session_get_by_ifname() tarafından rcu_read_lock_bh() altında list_for_each_entry_rcu() ile gezilir. list_del_init(), silinen girdinin next/prev işaretçilerini kendisine yönlendirir; girdiyi yükleyen ve ardından pos->list.next değerini ilerleten bir okuyucu &session->list değerini okur, container_of() ile tekrar aynı oturuma döner ve list_for_each_entry_rcu() hiçbir zaman liste başına ulaşamaz. CPU, BH ve preemption devre dışı bırakılmış haldeyken gezinici içerisindeki strcmp() fonksiyonunda kalır; böylece ana bilgisayardaki RCU grace period'ları bunun arkasında takılır ve kilitlenen iş parçacığı öldürülemez (SIGKILL, sistem çağrısı dönüşünde iletilir). l2tp_session_register() içindeki mevcut list_add_rcu() ile uyumlu olması için list_del_rcu() kullanılmıştır; silinen oturum, l2tp_session_free() içindeki kfree_rcu() tarafından serbest bırakılana kadar tutarlı next/prev işaretçileriyle devam eden geziniciler için görünür kalır. tunnel->session_list'in tam olarak bir adet list_del_init() çağrı noktası vardır; l2tp_core.c:533 adresindeki list_del_init (&session->clist), RCU altında gezilmeyen çarpışma başına listede işlem yapar. net/l2tp/ dizininde unhash noktasından sonra hiçbir yerde list_empty(&session->list) kullanılmamaktadır, bu nedenle silme sonrası kendi kendine başlatmayı (self-init) kaldırmak güvenlidir; düzeltmenin kullanıcı alanı tarafında görünen herhangi bir davranış değişikliği yoktur.
Nasıl düzeltilir
- linux linux_kernel6.12.92, 6.18.34, 7.0.11 ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| linux linux_kernel | 6.11.3 ≤ v < 6.12.92, 6.13 ≤ v < 6.18.34, 6.19 ≤ v < 7.0.11, 7.1 | 6.12.92, 6.18.34, 7.0.11 |
Sürümünüzü kontrol edin
Ürünü seçin ve kullandığınız sürümü yazın; sürümün etkilenen aralıkta olup olmadığını görün.
Attack Surface Management
Alan adlarınıza bağlı varlıkları, bu varlıklarda çalışan teknolojileri ve bilinen zafiyetleri tek listede görün.