CVE-2026-80683 in Linux정보

요약

\~에 의해 VulDB • 2026. 08. 28.

리눅스 커널에서 다음 취약점이 해결되었습니다:

블루투스: SCO 소켓이 자체 sco_conn 참조를 가지도록 함

sco_conn_del()은 자신이 소유하지 않은 참조를 해제합니다. 이 함수는 sco_sock_hold()에 이어지는 sco_conn_put()을 통해 sco_conn_hold_unless_zero()로 일시적인 참조 하나를 획득하고 이를 해제합니다. !sk 분기에서의 추가 put 연산은 두 번째 참조를 해제합니다:

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()가 컨트롤러의 Disconnection Complete 이벤트와 경쟁(race)할 때, sco_chan_del()은 conn->sk를 클리어하고 소켓의 참조를 해제하는 동안 sco_conn_del()이 실행 중입니다. 이후 sco_conn_del()에서 sk == NULL을 확인하고, 자신의 put 연산으로 카운트를 0으로 낮춰 conn 객체를 해제한 후, 두 번째 put 연산은 이미 해지된 kref에 대한 메모리 접근(Write)을 수행합니다:

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.

근본 원인은 소켓이 자체 참조를 보유하지 않은 채 연결을 저장하고 있기 때문입니다. __sco_chan_add()는 다음과 같이 동작합니다:

sco_pi(sk)->conn = conn;

따라서 소켓은 호출자가 우연히 보유하고 있던 참조를 빌려오며, 호출자들은 임시 hold 및 put 연산으로 이를 보정해 왔습니다. 이제 소켓에 카운트된 참조(counted reference)를 부여합니다: __sco_chan_add()에서 하나를 획득하며, 이는 채널(sco_chan_del())과 sco_sock_destruct()에서 함께 해제됩니다.

소켓이 자체 참조를 보유하게 됨으로써, sco_conn_del()은 더 이상 추가 put 연산이 필요하지 않으며, sco_conn_ready()의 중복된 hold 연산도 제거됩니다.

소켓이 자신의 참조를 소유하도록 함에 따라, 이제 연결은 이전에 누수(leak)되던 sco_connect()의 에러 경로에서도 실제로 해제되며, 이는 sco_conn_free()와 그 안의 hci_conn_drop(conn->hcon)을 실행합니다. hci_conn 계정(accounting) 균형을 유지하기 위해 해당 소유권을 명시적으로 처리합니다: sco_conn_add()는 하나의 hci_conn 참조를 소비하며, sco_conn은 수명 동안 이를 보유합니다. sco_connect()는 hci_connect_sco()에서 반환된 참조를 넘겨주고 에러 경로에서는 더 이상 해제하지 않습니다; 참조가 전달되지 않는 sco_connect_cfm()은 sco_conn_add()에 전달하기 전에 hci_conn_hold()로 하나를 획득하고(할당 실패 시 다시 해제); 그리고 sco_conn_ready()의 명시적인 hci_conn_hold()는 제거됩니다. 이제 모든 참조에는 명확한 단일 소유자가 있습니다.

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

책임이 있는

Linux

예약하다

2026. 08. 26.

모더레이션

수락

항목

VDB-396588

EPSS

0.00000

출처

Do you need the next level of professionalism?

Upgrade your account now!