CVE-2026-52943
Açıklama
Linux kernel'de aşağıdaki güvenlik açığı giderilmiştir: net: skbuff: pskb_carve yardımcılarındaki eksik zerocopy referansı düzeltildi pskb_carve_inside_header() ve pskb_carve_inside_nonlinear() fonksiyonlarının her ikisi de eski skb_shared_info başlığını memcpy() aracılığıyla yeni bir ara belleğe kopyalar; bu işlem MSG_ZEROCOPY skb'ler için destructor_arg işaretçisini (uarg) da içerir. Her iki fonksiyon da yeni shinfo için net_zcopy_get() çağırmaz ve bu durum hesaplanmamış bir tutucu oluşturur: destructor_arg ayarlanmış olan her skb_shared_info, serbest bırakıldığında bir kez skb_zcopy_clear() çağıracaktır ancak yeni kopya için ilgili net_zcopy_get() hiçbir zaman çağrılmamıştır. Tekrarlanan çağrılar uarg->refcnt değerini vaktinden önce sıfıra indirerek, TX skb'ler hala geçerli destructor_arg işaretçilerini tutarken ubuf_info_msgzc yapısının serbest bırakılmasına neden olur. KASAN, serbest bırakılmış bir ubuf_info_msgzc üzerinde serbest bırakıldıktan sonra kullanım (use-after-free) raporlamaktadır: BUG: KASAN: slab-use-after-free in skb_release_data+0x77b/0x810 Read of size 8 at addr ffff88801574d3e8 by task poc/220 Call Trace: skb_release_data+0x77b/0x810 kfree_skb_list_reason+0x13e/0x610 skb_release_data+0x4cd/0x810 sk_skb_reason_drop+0xf3/0x340 skb_queue_purge_reason+0x282/0x440 rds_tcp_inc_free+0x1e/0x30 rds_recvmsg+0x354/0x1780 __sys_recvmsg+0xdf/0x180 Allocated by task 219: msg_zerocopy_realloc+0x157/0x7b0 tcp_sendmsg_locked+0x2892/0x3ba0 Freed by task 219: ip_recv_error+0x74a/0xb10 tcp_recvmsg+0x475/0x530 Geç erişimi gerçekleştiren skb, pskb_carve_inside_nonlinear() tarafından referans sayacı artırılmadan kopyalanan shinfo->destructor_arg üzerinden aynı uarg'ye hâlâ referans vermekteydi. Bunun güvenilir şekilde istismar edilebileceği doğrulanmıştır: çalışan bir kavram kanıtı (PoC), varsayılan çekirdek yapılandırmasında ayrıcalıksız yerel bir kullanıcıdan tam root yetki yükseltme sağlamaktadır. Düzeltme, benzer memcpy/klonlama yapısına sahip olan pskb_expand_head() desenini takip eder. pskb_carve_inside_header() için net_zcopy_get(), skb_orphan_frags() başarılı olduktan sonraya yerleştirilmiştir, böylece orphan hata yolu herhangi bir temizleme gerektirmez. pskb_carve_inside_nonlinear() için ise net_zcopy_get(), tüm hata noktalarından sonraya ve hemen skb_release_data()'dan öncesine yerleştirilmiştir; böylece hiçbir hata yolunun temizlenmesi gerekmez, bu durum pskb_expand_head() ile daha yakın uyum sağlar ve dengeleyici bir net_zcopy_put() ihtiyacını ortadan kaldırır.
Nasıl düzeltilir
- linux linux_kernel5.10.259, 5.15.210, 6.1.176, 6.6.143, 6.12.93, 6.18.35, 7.0.12 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 | 4.7 ≤ v < 5.10.259, 5.11 ≤ v < 5.15.210, 5.16 ≤ v < 6.1.176, 6.2 ≤ v < 6.6.143, 6.7 ≤ v < 6.12.93, 6.13 ≤ v < 6.18.35, 6.19 ≤ v < 7.0.12, 7.1 | 5.10.259, 5.15.210, 6.1.176, 6.6.143, 6.12.93, 6.18.35, 7.0.12 |
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.