CVE-2023-53382

Kritik

Təsvir

Linux kernel-də aşağıdakı zəiflik aradan qaldırılmışdır: net/smc: SMCRv2 istifadəsi cəhdi uğursuz olduqda bağlantının sıfırlanması. İki ədəd Mellanox ConnectX-4 ilə SMCRv2 istifadə edərkən sistem çökməsi aşkar edilmişdir. Bu, aşağıdakılarla təkrar yaradıla bilər: - smc_run nginx - smc_run wrk -t 32 -c 500 -d 30 http://<ip>:<port> BUG: kernel NULL pointer dereference, address: 0000000000000014 #PF: supervisor read access in kernel mode #PF: error_code(0x0000) - not-present page PGD 8000000108713067 P4D 8000000108713067 PUD 151127067 PMD 0 Oops: 0000 [#1] PREEMPT SMP PTI CPU: 4 PID: 2441 Comm: kworker/4:249 Kdump: loaded Tainted: G W E 6.4.0-rc1+ #42 Workqueue: smc_hs_wq smc_listen_work [smc] RIP: 0010:smc_clc_send_confirm_accept+0x284/0x580 [smc] RSP: 0018:ffffb8294b2d7c78 EFLAGS: 00010a06 RAX: ffff8f1873238880 RBX: ffffb8294b2d7dc8 RCX: 0000000000000000 RDX: 00000000000000b4 RSI: 0000000000000001 RDI: 0000000000b40c00 RBP: ffffb8294b2d7db8 R08: ffff8f1815c5860c R09: 0000000000000000 R10: 0000000000000400 R11: 0000000000000000 R12: ffff8f1846f56180 R13: ffff8f1815c5860c R14: 0000000000000001 R15: 0000000000000001 FS: 0000000000000000(0000) GS:ffff8f1aefd00000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 0000000000000014 CR3: 00000001027a0001 CR4: 00000000003706e0 DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 Call Trace: <TASK> ? mlx5_ib_map_mr_sg+0xa1/0xd0 [mlx5_ib] ? smcr_buf_map_link+0x24b/0x290 [smc] ? __smc_buf_create+0x4ee/0x9b0 [smc] smc_clc_send_accept+0x4c/0xb0 [smc] smc_listen_work+0x346/0x650 [smc] ? __schedule+0x279/0x820 process_one_work+0x1e5/0x3f0 worker_thread+0x4d/0x2f0 ? __pfx_worker_thread+0x10/0x10 kthread+0xe5/0x120 ? __pfx_kthread+0x10/0x10 ret_from_fork+0x2c/0x50 </TASK> CLC əl sıxma prosesi zamanı server smc_listen_work() funksiyasında mövcud olan SMCRv2 və SMCRv1 cihazlarını ardıcıl olaraq yoxlayır. Əgər SMCRv2 cihazı tapılarsa, bağlantıya SMCv2 əsaslı link qrupu və link təyin edilir. Daha sonra CLC əl sıxma prosesində bəzi bufer təyinat xətaları baş verdiyi fərz edilərsə (məsələn, RMB qeydiyyatının uğursuz olması), server SMCRv2-dən imtina edir və bunun əvəzinə SMCRv1 cihazını yoxlayır. Lakin bağlantıya təyin edilmiş resurslar sıfırlanmır. Server SMCRv1 cihazını yoxladıqda, bağlantının yaradılması prosesi yenidən icra olunur. SMCRv2 yoxlanarkən conn->lnk artıq təyin edildiyi üçün, o, smcr_lgr_conn_assign_link() funksiyasında düzgün SMCRv1 linki ilə əvəz edilmir. Belə vəziyyətdə conn->lgr düzgün SMCRv1 link qrupuna işarə etsə də, conn->lnk səhvən SMCRv2 linkinə işarə edir. Sonra smc_clc_send_confirm_accept() funksiyasında conn->rmb_desc->mr[link->link_idx] elementinə müraciət edilir. link->link_idx düzgün olmadığı üçün müvafiq MR başladılmamış ola bilər və bu da sistemin çökməsinə səbəb olur. | İlk öncə SMCRv2 cihazı yoxlanılır | |-> conn->lgr: mövcud SMCRv2 link qrupu təyin edilir; | |-> conn->link: mövcud SMCRv2 linki təyin edilir (SMC_LGR_SYMMETRIC halında link_idx 1 ola bilər); | |-> sndbuf və RMB yaradılması uğursuz olur, çıxış; | | Sonra SMCRv1 cihazı yoxlanılır | |-> conn->lgr: SMCRv1 link qrupu yaradılır və təyin edilir; | |-> conn->link: səhvən SMCRv2 linkini saxlayır; | |-> sndbuf və RMB yaradılması uğurlu olur, yalnız RMB->mr[link_idx = 0] | başladılır. | | Sonra smc_clc_send_confirm_accept() funksiyası | conn->rmb_desc->mr[conn->link->link_idx, hansı ki 1-dir] elementinə müraciət edir və çöküş baş verir. v Bu yamama link təyin edilməzdən əvvəl conn->lnk elementinin təmizlənməsi ilə problemi həll etməyə çalışır. Əlavə olaraq, buferin yaradılması və ya qeydiyyatı zamanı SMCRv2 cəhdi uğursuz olduqda, bağlantının sıfırlanması və təyin edilmiş resursların təmizlənməsi daha məqsədəuyğundur.

CiddilikKritik
CVSS9.8
İstismar ehtimalı—
MəhsulLinux Kernel
Dərc18 sen 2025
İlk görülmə18 sen 2025

Necə düzəltmək olar

Yeniləyin
  • linux linux_kernel6.1.31, 6.3.5 və ya daha yeni versiya

Təsirlənən məhsullar

MəhsulTəsirlənən versiyalarDüzəldildiyi versiya
linux linux_kernel5.16 ≤ v < 6.1.31, 6.2 ≤ v < 6.3.5, 6.46.1.31, 6.3.5

Versiyanızı yoxlayın

Məhsulu seçin və istifadə etdiyiniz versiyanı yazın; versiyanın təsirlənən aralıqda olub-olmadığını görün.

Intelligence 360 paketində

Attack Surface Management

Domenlərinizə bağlı aktivləri, onlarda işləyən texnologiyaları və məlum zəiflikləri bir siyahıda görün.