CVE-2023-54164

Yüksək

Təsvir

Linux nüvəsində aşağıdakı zəiflik aradan qaldırılıb: Bluetooth: ISO: iso_conn ilə bağlı kilidləmə və etibarlılıq problemləri düzəldildi sk->sk_state göstəricisi iso_pi(sk)->conn-un etibarlı olub-olmadığını bildirir. sk_state-i yoxlayan/yeniləyən və conn-a müraciət edən əməliyyatlar lock_sock kilidini saxlamalıdır, əks halda onlar arasında yarış (race condition) baş verə bilər. Kilidlərin götürülmə ardıcıllığı belədir: hci_dev_lock > lock_sock > iso_conn_lock; bu ardıcıllıq connect/disconnect_cfm -> iso_conn_del -> iso_chan_del proseslərində tətbiq olunur. sk_state və conn yeniləmələri zamanı lock_sock kilidinin istifadə edilməsi üçün iso_connect_cis/bis və sendmsg/recvmsg funksiyalarında kilidləmə mexanizmi düzəldilib. iso_conn_del funksiyası iso_connect_cis/bis zamanı baş verməməlidir, çünki o, iso_conn obyektini azad edir. Bunun qarşısını almaq üçün hdev->lock daha uzun müddət saxlanılır. Kilidlər ardıcıl şəkildə əldə edildiyi üçün bu dəyişiklik 241f51931c35 ("Bluetooth: ISO: Avoid circular locking dependency") commit-də həll edilmiş problemi yenidən ortaya çıxarmamalıdır. iso_connect_* funksiyası hdev->lock kilidini əldə etməzdən əvvəl lock_sock kilidinin azad edilməsi üçün iso_sock_connect-dəki düzəliş qorunub saxlanılıb. Eyni qayda 6a5ad251b7cd ("Bluetooth: ISO: Fix possible circular locking dependency") commit-i üçün də keçərlidir. lock_sock-dan əvvəl iso_conn_lock kilidinin əldə edilməməsi üçün iso_conn_ready-dəki düzəliş qorunub saxlanılıb. iso_conn_add funksiyası etibarlı hcon olan iso_conn qaytarmalıdır. Bağlantının kəsilmə vaxtını gözləyən köhnə CIS bağlantısından yenidən istifadə edildikdə də bunun təmin edilməsi lazımdır (baxın __iso_sock_close, burada conn->hcon NULL olaraq təyin edilir). iso_connect_cis daxilində iso_chan_add-dən sonra iso_conn_del ilə izləmə: =============================================================== iso_sock_create:771: sock 00000000be9b69b7 iso_sock_init:693: sk 000000004dff667e iso_sock_bind:827: sk 000000004dff667e 70:1a:b8:98:ff:a2 type 1 iso_sock_setsockopt:1289: sk 000000004dff667e iso_sock_setsockopt:1289: sk 000000004dff667e iso_sock_setsockopt:1289: sk 000000004dff667e iso_sock_connect:875: sk 000000004dff667e iso_connect_cis:353: 70:1a:b8:98:ff:a2 -> 28:3d:c2:4a:7e:da hci_get_route:1199: 70:1a:b8:98:ff:a2 -> 28:3d:c2:4a:7e:da hci_conn_add:1005: hci0 dst 28:3d:c2:4a:7e:da iso_conn_add:140: hcon 000000007b65d182 conn 00000000daf8625e __iso_chan_add:214: conn 00000000daf8625e iso_connect_cfm:1700: hcon 000000007b65d182 bdaddr 28:3d:c2:4a:7e:da status 12 iso_conn_del:187: hcon 000000007b65d182 conn 00000000daf8625e, err 16 iso_sock_clear_timer:117: sock 000000004dff667e state 3 <Qeyd: sk_state BT_BOUND (3)-dur, buna görə də iso_connect_cis hələ də işləyir> iso_chan_del:153: sk 000000004dff667e, conn 00000000daf8625e, err 16 hci_conn_del:1151: hci0 hcon 000000007b65d182 handle 65535 hci_conn_unlink:1102: hci0: hcon 000000007b65d182 hci_chan_list_flush:2780: hcon 000000007b65d182 iso_sock_getsockopt:1376: sk 000000004dff667e iso_sock_getname:1070: sock 00000000be9b69b7, sk 000000004dff667e iso_sock_getname:1070: sock 00000000be9b69b7, sk 000000004dff667e iso_sock_getsockopt:1376: sk 000000004dff667e iso_sock_getname:1070: sock 00000000be9b69b7, sk 000000004dff667e iso_sock_getname:1070: sock 00000000be9b69b7, sk 000000004dff667e iso_sock_shutdown:1434: sock 00000000be9b69b7, sk 000000004dff667e, how 1 __iso_sock_close:632: sk 000000004dff667e state 5 socket 00000000be9b69b7 <Qeyd: iso_chan_del BT_CLOSED (6) təyin etsə də, sk_state BT_CONNECT (5)-dur. Yalnız iso_connect_cis onu BT_CONNECT kimi təyin edir, deməli iso_chan_del iso_chan_add ilə iso_connect_cis-in sonu arasında baş vermişdir.> BUG: kernel NULL pointer dereference, address: 0000000000000000 PGD 8000000006467067 P4D 8000000006467067 PUD 3f5f067 PMD 0 Oops: 0000 [#1] PREEMPT SMP PTI Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.2-1.fc38 04/01/2014 RIP: 0010:__iso_sock_close (net/bluetooth/iso.c:664) bluetooth =============================================================== iso_connect_cis daxilində iso_chan_add-dən əvvəl iso_conn_del ilə izləmə: =============================================================== iso_connect_cis:356: 70:1a:b8:98:ff:a2 -> 28:3d:c2:4a:7e:da ... iso_conn_add:140: hcon 0000000093bc551f conn 00000000768ae504 hci_dev_put:1487: hci0 orig refcnt 21 hci_event_packet:7607: hci0: e ---kəsilmiş---

CiddilikYüksək
CVSS8.0
İstismar ehtimalı—
MəhsulLinux
Dərc30 dek 2025
İlk görülmə30 dek 2025

Necə düzəltmək olar

Yeniləyin
  • Linux Linuxe969bfed84c1f88dc722a678ee08488e86f0ec1a, 88ad50f2b843a510bd7c922c0a4e2484aff9d645, d40ae85ee62e3666f45bc61864b22121346f88ef, 6.1.42 və ya daha yeni versiya

Təsirlənən məhsullar

MəhsulTəsirlənən versiyalarDüzəldildiyi versiya
Linux Linuxc524f9561c657b8af26dd4f67092b8928261aa62 ≤ v < e969bfed84c1f88dc722a678ee08488e86f0ec1a, 241f51931c35085449502c10f64fb3ecd6e02171 ≤ v < 88ad50f2b843a510bd7c922c0a4e2484aff9d645, 241f51931c35085449502c10f64fb3ecd6e02171 ≤ v < d40ae85ee62e3666f45bc61864b22121346f88ef, 2539cbc625c560d5432e2f0fc04bfe4a889cf737, 6.1.9 ≤ v < 6.1.42, 6.2e969bfed84c1f88dc722a678ee08488e86f0ec1a, 88ad50f2b843a510bd7c922c0a4e2484aff9d645, d40ae85ee62e3666f45bc61864b22121346f88ef, 6.1.42

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.