CVE-2026-63989
Açıklama
Linux kernel'de aşağıdaki güvenlik açığı giderilmiştir: bridge: netlink yolunda atomik bağlamda uyuma sorunu düzeltildi Commit 25c71c75ac87 ("bridge: bridge port parameters over netlink") ile bridge portları için netlink yapılandırma yolunun getirilmesinden beri, br_setport() fonksiyonu her zaman etrafında bridge kilidi tutularak çağrılıyordu. O dönemde bu karar mantıklıydı: Bridge kilidi, bridge ve portlarının STP durumunu korur ve o sırada fonksiyon yalnızca üç STP ilgili netlink özniteliğini (cost, priority ve state) işliyordu. Günümüzde br_setport() çok daha fazla öznitelik işlemekte ve bunların çoğu bridge kilidine ihtiyaç duymamaktadır: * Bridge bayrakları: Yalnızca RTNL gerektirir. Veri yolu tarafından kilit kullanmadan okunur. Notlar net-next sürümüne eklenebilir. * FDB port temizleme: Yalnızca FDB kilidini gerektirir. * Multicast öznitelikleri: Yalnızca multicast kilidini gerektirir. * Grup yönlendirme maskesi: Yalnızca RTNL gerektirir. Veri yolu tarafından kilit kullanmadan okunur. Notlar net-next sürümüne eklenebilir. * Yedek port ve NHID: Yalnızca RTNL gerektirir. Veri yolu tarafından kilit kullanmadan okunur. Belirli bridge port bayrakları değiştiğinde bridge'in dev_set_promiscuity() fonksiyonunu çağırması ve aşağıda belirtilen commit'ten beri bu fonksiyonun uyuyabilmesi nedeniyle bu bir sorun teşkil etmekte ve [1]'deki gibi bir hataya (splat) yol açmaktadır. Bu durum, bridge kilidinin kapsamı daraltılarak ve kilit yalnızca onu gerektiren üç STP ilgili öznitelik işlenirken alınarak düzeltilmiştir. Bu yaklaşım, tüm ilgili öznitelikler için tek bir kritik bölüm olması yerine her özniteliğin kendi multicast kilidini aldığı multicast öznitelikleriyle tutarlıdır. [1] BUG: sleeping function called from invalid context at net/core/dev_addr_lists.c:1262 in_atomic(): 1, irqs_disabled(): 0, non_block: 0, pid: 356, name: bridge preempt_count: 201, expected: 0 RCU nest depth: 0, expected: 0 2 locks held by bridge/356: #0: ffffffff919473a0 (rtnl_mutex){+.+.}-{4:4}, at: rtnetlink_rcv_msg (net/core/rtnetlink.c:80 net/core/rtnetlink.c:7002) #1: ffff888115072d58 (&br->lock){+...}-{3:3}, at: br_setlink (./include/linux/spinlock.h:348 net/bridge/br_netlink.c:1117) Preemption disabled at: 0x0 Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011 Call Trace: <TASK> dump_stack_lvl (lib/dump_stack.c:94 lib/dump_stack.c:120) __might_resched.cold (kernel/sched/core.c:9163) netif_rx_mode_run (net/core/dev_addr_lists.c:1262) netif_rx_mode_sync (net/core/dev_addr_lists.c:1428) dev_set_promiscuity (net/core/dev_api.c:289) br_manage_promisc (net/bridge/br_if.c:135 net/bridge/br_if.c:172) br_port_flags_change (net/bridge/br_if.c:242 net/bridge/br_if.c:747) br_setport (net/bridge/br_netlink.c:1000) br_setlink (net/bridge/br_netlink.c:1118) rtnl_bridge_setlink (net/core/rtnetlink.c:5572) rtnetlink_rcv_msg (net/core/rtnetlink.c:7005) netlink_rcv_skb (net/netlink/af_netlink.c:2550) netlink_unicast (net/netlink/af_netlink.c:1318 net/netlink/af_netlink.c:1344) netlink_sendmsg (net/netlink/af_netlink.c:1894) __sock_sendmsg (net/socket.c:787 (discriminator 4) net/socket.c:802 (discriminator 4)) ____sys_sendmsg (net/socket.c:2698) ___sys_sendmsg (net/socket.c:2752) __sys_sendmsg (net/socket.c:2784) do_syscall_64 (arch/x86/entry/syscall_64.c:63 arch/x86/entry/syscall_64.c:94) entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:121)
Nasıl düzeltilir
- linux linux_kernel6.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 | 6.15.1 ≤ v < 6.18.35, 6.19 ≤ v < 7.0.12, 6.15, 7.1 | 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.