CVE-2026-64177
Açıklama
Linux kernel'de aşağıdaki güvenlik açığı giderilmiştir: phonet/pep: iletilen sk_receive_skb() etrafındaki BH devre dışı bırakıldı Ağ alma yolu genellikle softirq bağlamından çalıştırılır, ancak soket kilidini alan protokollerin paketleri backlog'da saklanabilir ve daha sonra işlem bağlamından işlenebilir. Bu durumda release_sock() -> __release_sock(), slock'u spin_unlock_bh() ile serbest bırakır ve ardından alt yarılar (bottom halves - BH) etkinleştirilmiş durumdayken sk->sk_backlog_rcv()'yi çağırır. Tipik sk_backlog_rcv işleyicileri, backlog'u boşaltılan soketi işler, bu nedenle giriş anındaki BH durumu dokundukları slock'lar için önemsizdir. pep_do_rcv() farklıdır: gelen skb mevcut bir PEP borusunu hedeflediğinde, skb'yi sk_receive_skb() aracılığıyla farklı bir *çocuk* sokete iletir. Bu yardımcı fonksiyon, çocuk slock'u bh_lock_sock_nested() ile alır; bu sadece spin_lock_nested()'dir ve BH'nin zaten kapalı olduğunu varsayar. Bu nedenle aynı çocuk slock hem BH açıkken (işlem yolu) hem de BH kapalıyken (softirq yolu) edinilmiş olur: işlem bağlamı softirq bağlamı --------------- --------------- release_sock(listener) __netif_receive_skb() __release_sock() phonet_rcv() spin_unlock_bh() __sk_receive_skb(listener) [BH şu an ETKİN] [BH zaten devre dışı] sk_backlog_rcv: sk_backlog_rcv: pep_do_rcv() pep_do_rcv() sk_receive_skb(child) sk_receive_skb(child) bh_lock_sock_nested(child) bh_lock_sock_nested(child) => SOFTIRQ-ON-W => IN-SOFTIRQ-W Lockdep bunu tutarsız kilit durumu olarak işaretler ve eğer aynı CPU üzerindeki bir softirq, slock BH-etkin yolda tutulurken aynı çocuk sokete veri almaya çalışırsa gerçek bir kendi kendine kilitlenme (self-deadlock) oluşabilir: WARNING: inconsistent lock state inconsistent {SOFTIRQ-ON-W} -> {IN-SOFTIRQ-W} usage. (slock-AF_PHONET/1){+.?.}-{3:3}, at: __sk_receive_skb+0x1cf/0x900 __sk_receive_skb net/core/sock.c:563 sk_receive_skb include/net/sock.h:2022 [inline] pep_do_rcv net/phonet/pep.c:675 sk_backlog_rcv include/net/sock.h:1190 __release_sock net/core/sock.c:3216 release_sock net/core/sock.c:3815 pep_sock_accept net/phonet/pep.c:879 Çocuk slock her zaman BH kapalıyken alınsın diye iletilen sk_receive_skb() fonksiyonu local_bh_disable() / local_bh_enable() içine alınmıştır. local_bh_disable() softirq yolunda güvenli bir şekilde iç içe geçer. Kurum içi syzkaller fuzzing ile keşfedilmiştir; aynı kök neden linux-6.1.y syzbot panelinde extid 44f0626dd6284f02663c olarak da yer almaktadır. KASAN + LOCKDEP + PROVE_LOCKING altında yeniden üretilmiştir, reprodüksiyon örneği: https://pastebin.com/A3t8xzCR
Nasıl düzeltilir
- linux linux_kernel5.10.258, 5.15.209, 6.1.175, 6.6.142, 6.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 | 2.6.28 ≤ v < 5.10.258, 5.11 ≤ v < 5.15.209, 5.16 ≤ v < 6.1.175, 6.2 ≤ v < 6.6.142, 6.7 ≤ v < 6.12.92, 6.13 ≤ v < 6.18.34, 6.19 ≤ v < 7.0.11, 7.1 | 5.10.258, 5.15.209, 6.1.175, 6.6.142, 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.