CVE-2024-44935
Açıklama
Linux çekirdeğinde aşağıdaki güvenlik açığı giderilmiştir: sctp: reuseport_add_sock() fonksiyonundaki null-ptr-deref hatası düzeltildi. syzbot, reuseport_add_sock() içerisinde sk2->sk_reuseport_cb erişimi sırasında bir null-ptr-deref raporlamıştır. [0] Yeniden üretim senaryosu önce SO_REUSEPORT ile bir dinleyici oluşturur. Ardından aynı port üzerinde başka bir dinleyici oluştururken eş zamanlı olarak ilk dinleyiciyi kapatır. İkinci listen() çağrısı, birinci dinleyiciyi sk2 olarak kullanarak reuseport_add_sock() fonksiyonunu çağırır; burada sk2->sk_reuseport_cb değerinin eş zamanlı olarak temizlenmesi beklenmez ancak close() işlemi bunu reuseport_detach_sock() aracılığıyla temizler. Sorun, SCTP'nin reuseport_alloc(), reuseport_add_sock() ve reuseport_detach_sock() fonksiyonlarını uygun şekilde senkronize etmemesidir. reuseport_alloc() ve reuseport_{add,detach}_sock() çağıran taraf, aynı reuseport grubuna sınıflandırılan soketler için senkronizasyon sağlamalıdır. Aksi takdirde, bu soketler birden fazla özdeş reuseport grubu oluşturur ve biri hariç tüm gruplar sessizce işlevsiz kalır. 1. İki soket eş zamanlı olarak listen() çağrısı yapar. 2. sctp_ep_hashtable[] içinde aynı gruptan hiçbir soket bulunamaz. 3. İki soket reuseport_alloc() çağrısı yaparak iki ayrı reuseport grubu oluşturur. 4. Sadece __sctp_rcv_lookup_endpoint() tarafından ilk bulunan grup gelen paketleri alır. Ayrıca, bildirilen null-ptr-deref durumu meydana gelebilir. TCP/UDP, hash bucket kilidini tutarak bunun gerçekleşmeyeceğini garanti eder. Bu kilitleme stratejisi __sctp_hash_endpoint() ve __sctp_unhash_endpoint() fonksiyonlarına uygulanmıştır. [0]: Oops: general protection fault, probably for non-canonical address 0xdffffc0000000002: 0000 [#1] PREEMPT SMP KASAN PTI KASAN: null-ptr-deref in range [0x0000000000000010-0x0000000000000017] CPU: 1 UID: 0 PID: 10230 Comm: syz-executor119 Not tainted 6.10.0-syzkaller-12585-g301927d2d2eb #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 06/27/2024 RIP: 0010:reuseport_add_sock+0x27e/0x5e0 net/core/sock_reuseport.c:350 Code: 00 0f b7 5d 00 bf 01 00 00 00 89 de e8 1b a4 ff f7 83 fb 01 0f 85 a3 01 00 00 e8 6d a0 ff f7 49 8d 7e 12 48 89 f8 48 c1 e8 03 <42> 0f b6 04 28 84 c0 0f 85 4b 02 00 00 41 0f b7 5e 12 49 8d 7e 14 RSP: 0018:ffffc9000b947c98 EFLAGS: 00010202 RAX: 0000000000000002 RBX: ffff8880252ddf98 RCX: ffff888079478000 RDX: 0000000000000000 RSI: 0000000000000001 RDI: 0000000000000012 RBP: 0000000000000001 R08: ffffffff8993e18d R09: 1ffffffff1fef385 R10: dffffc0000000000 R11: fffffbfff1fef386 R12: ffff8880252ddac0 R13: dffffc0000000000 R14: 0000000000000000 R15: 0000000000000000 FS: 00007f24e45b96c0(0000) GS:ffff8880b9300000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 00007ffcced5f7b8 CR3: 00000000241be000 CR4: 00000000003506f0 DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 Call Trace: <TASK> __sctp_hash_endpoint net/sctp/input.c:762 [inline] sctp_hash_endpoint+0x52a/0x600 net/sctp/input.c:790 sctp_listen_start net/sctp/socket.c:8570 [inline] sctp_inet_listen+0x767/0xa20 net/sctp/socket.c:8625 __sys_listen_socket net/socket.c:1883 [inline] __sys_listen+0x1b7/0x230 net/socket.c:1894 __do_sys_listen net/socket.c:1902 [inline] __se_sys_listen net/socket.c:1900 [inline] __x64_sys_listen+0x5a/0x70 net/socket.c:1900 do_syscall_x64 arch/x86/entry/common.c:52 [inline] do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83 entry_SYSCALL_64_after_hwframe+0x77/0x7f RIP: 0033:0x7f24e46039b9 Code: 28 00 00 00 75 05 48 83 c4 28 c3 e8 91 1a 00 00 90 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 b0 ff ff ff f7 d8 64 89 01 48 RSP: 002b:00007f24e45b9228 EFLAGS: 00000246 ORIG_RAX: 0000000000000032 RAX: ffffffffffffffda RBX: 00007f24e468e428 RCX: 00007f24e46039b9 RDX: 00007f24e46039b9 RSI: 0000000000000003 RDI: 0000000000000004 RBP: 00007f24e468e420 R08: 00007f24e45b96c0 R09: 00007f24e45b96c0 R10: 00007f24e45b96c0 R11: 0000000000000246 R12: 00007f24e468e42c R13: ---truncated---
Nasıl düzeltilir
- linux linux_kernel5.4.282, 5.10.224, 5.15.165, 6.1.105, 6.6.46, 6.10.5 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 | 5.0 ≤ v < 5.4.282, 5.5 ≤ v < 5.10.224, 5.11 ≤ v < 5.15.165, 5.16 ≤ v < 6.1.105, 6.2 ≤ v < 6.6.46, 6.7 ≤ v < 6.10.5, 6.11 | 5.4.282, 5.10.224, 5.15.165, 6.1.105, 6.6.46, 6.10.5 |
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.