CVE-2026-80683

Yüksək

Təsvir

Linux kernel-də aşağıdakı zəiflik aradan qaldırılmışdır: Bluetooth: SCO: soketə öz sco_conn istinadını vermək sco_conn_del() funksiyası ona məxsus olmayan istinadı silir. O, sco_conn_hold_unless_zero() vasitəsilə bir müvəqqəti istinad götürür və onu sco_sock_hold()-dən sonrakı sco_conn_put() ilə azad edir; !sk budağındakı əlavə put isə ikincini azad edir: conn = sco_conn_hold_unless_zero(conn); ... sk = sco_sock_hold(conn); sco_conn_unlock(conn); sco_conn_put(conn); if (!sk) { sco_conn_put(conn); return; } close() funksiyası kontrollerin Disconnection Complete hadisəsi ilə yarışdıqda, sco_conn_del() işləyərkən sco_chan_del() conn->sk dəyişənini təmizləyir və soketin istinadını silir. Sonra sco_conn_del() sk == NULL olduğunu görür, onun öz put əməliyyatı sayğacı sıfıra endirib conn obyektini azad edir və ikinci put əməliyyatı azad edilmiş kref-ə yazı yazır: BUG: KASAN: slab-use-after-free in sco_conn_put.part.0+0x1a/0x190 Write of size 4 at addr ffff8881099dec74 by task kworker/u17:3/413 Workqueue: hci1 hci_rx_work Call Trace: sco_conn_put.part.0+0x1a/0x190 hci_disconn_complete_evt+0x1ee/0x3e0 hci_event_packet+0x54a/0x650 hci_rx_work+0x321/0x3d0 Allocated by task 413: sco_conn_add+0x72/0x1a0 sco_connect_cfm+0x88/0x670 Freed by task 413: sco_conn_del.isra.0+0x3f/0xf0 hci_disconn_complete_evt+0x1ee/0x3e0 refcount_t: underflow; use-after-free. Kök səbəb odur ki, soket özünə məxsus istinadı saxlamadan bağlantını yaddaşda tutur. __sco_chan_add() bunu edir: sco_pi(sk)->conn = conn; beləliklə, soket çağıranın saxladığı hər hansı istinadı borc alır və çağıranlar bunu ad-hoc hold və put əməliyyatları ilə ört-basdır edirlər. Bunun əvəzinə soketə sayılan istinad verilsin: __sco_chan_add() bir istinad götürür və o, kanal (sco_chan_del()) və sco_sock_destruct() ilə birlikdə azad edilir. Soket öz istinadını saxladıqda, sco_conn_del() artıq əlavə put əməliyyatına ehtiyac duymur və sco_conn_ready()-dəki artıq hold əməliyyatı ləğv edilir. Soketin öz istinadına sahib olması o deməkdir ki, bağlantı indi sco_connect()-in sızma baş verdiyi xəta yollarında faktiki olaraq azad edilir, bu isə öz növbəsində sco_conn_free() və onun hci_conn_drop(conn->hcon) funksiyasını işə salır. hci_conn uçotunu balanslaşdırmaq üçün həmin mülkiyyət hüququnu da aşkar edin: sco_conn_add() bir hci_conn istinadını istehlak edir və sco_conn ömrü boyu ona sahib olur. sco_connect() hci_connect_sco() tərəfindən qaytarılan istinadı ötürür və artıq xəta yollarında onu silmir; istinad verilməyən sco_connect_cfm() isə onu sco_conn_add()-ə təslim etməzdən əvvəl hci_conn_hold() ilə bir istinad götürür (və allokasiya uğursuz olduqda onu yenidən silir); sco_conn_ready()-dəki aşkar hci_conn_hold() isə silinmişdir. Beləliklə, hər bir istinadın tək və aydın sahibi olur.

CiddilikYüksək
CVSS8.8
İstismar ehtimalı—
MəhsulLinux
Dərc28 avq 2026
İlk görülmə28 avq 2026

Necə düzəltmək olar

Yeniləyin
  • Linux Linuxa33bc07b4730b6cd5681ac77d18ae0de3e739690, 8fe627192fa5da7157f9a48608f13c04b6373e43, abd93c85c8667add738ee82aeab95dd9fc8265a2 və ya daha yeni versiya

Təsirlənən məhsullar

MəhsulTəsirlənən versiyalarDüzəldildiyi versiya
Linux Linuxe6720779ae612a14ac4ba7fe4fd5b27d900d932c ≤ v < a33bc07b4730b6cd5681ac77d18ae0de3e739690, e6720779ae612a14ac4ba7fe4fd5b27d900d932c ≤ v < 8fe627192fa5da7157f9a48608f13c04b6373e43, e6720779ae612a14ac4ba7fe4fd5b27d900d932c ≤ v < abd93c85c8667add738ee82aeab95dd9fc8265a2, 6.13a33bc07b4730b6cd5681ac77d18ae0de3e739690, 8fe627192fa5da7157f9a48608f13c04b6373e43, abd93c85c8667add738ee82aeab95dd9fc8265a2

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.