CVE-2026-99012 in Linux정보

요약

\~에 의해 VulDB • 2026. 10. 23.

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

블루투스: ISO: 동시 연결 호출 직렬화

iso_sock_connect()는 소켓 잠금을 획득하기 전에 소켓 상태를 확인하고, 연결을 설정하기 전에 다시 잠금을 해제합니다. 두 개의 호출자가 소켓이 열려 있거나 바인딩된 상태에서 모두 허용 검사를 통과할 수 있습니다.

호출자 A가 라우팅 선택을 위해 자신의 목적지를 복사한 후, 호출자 B는 A가 CIS를 바인딩하거나 연결하기 전에 소켓의 목적지를 대체할 수 있습니다. 그 결과 A는 자신만의 요청에 대해 선택된 라우트를 사용하여 B의 목적지를 사용합니다. 또한 A가 연결을 첨부하고 BT_CONNECT 상태를 설정한 이후에도 B는 계속 진행할 수 있습니다. 지연된 BIS 설정의 경우, B는 두 번째 BIS를 바인딩하여 iso_pi(sk)->conn을 덮어쓰고, 첫 번째 연결의 참조와 conn->sk 역방향 포인터를 고립시킬 수 있습니다. 동시 CIS 연결 역시 소켓의 연결 상태를 대체할 수 있습니다. 이후 정리 과정에서는 현재 연결만 분리되므로, 이전 연결에 대한 콜백이 소켓 해제와 경쟁하여 해지된 소켓에 접근하게 됩니다.

KASAN에서 다음을 보고했습니다:

BUG: KASAN: slab-use-after-free in iso_sock_hold+0xf7/0x1b0 Call Trace: iso_sock_hold+0xf7/0x1b0 iso_conn_del+0x7b/0x1d0 iso_connect_cfm+0x186/0x16a0 hci_conn_failed+0x154/0x280 hci_abort_conn_sync+0x3dc/0x7d0 hci_cmd_sync_work+0x173/0x300

작업자 121에 의해 할당됨: sk_alloc+0x2b/0x6d0 bt_sock_alloc+0x29/0x370 iso_sock_alloc.constprop.0+0x19/0x300 iso_sock_create+0x94/0x100

작업자 121에 의해 해제됨: kfree+0x121/0x3c0 __sk_destruct+0x42b/0x540 iso_sock_release+0x29d/0x340 __sock_release+0xa1/0x260

소켓 잠금 하에서 허용 검사를 수행하고, 목적지를 게시하기 전에 연결 작업이 진행 중임을 표시합니다. 라우팅 조회 및 연결 설정 동안 해당 플래그를 유지하여 다른 연결 시도가 목적지를 변경하거나 연결을 첨부하기 전에 -EBADFD로 거부되도록 합니다. 실패한 경우를 포함하여 두 헬퍼 함수가 반환된 후 플래그를 지워야 하므로, 실행된 설치를 재시도할 수 있습니다.

소켓 잠금은 HCI 장치 잠금을 획득하기 전에 해제해야 하며, BT_CONNECT는 첨부된 연결이 필요하므로 별도의 플래그가 필요합니다. 기존 상태 전이를 유지하고 iso_sock_recvmsg()를 통해 지연된 CIS 완료를 처리합니다.

__iso_chan_add()에서 새 참조를 확보하거나 포인터 중 하나를 게시하기 전에 기존 소켓_ATTACHMENT(연결)를 거부하여 모든 호출자가 연결 연관성을 보존하도록 합니다. 지연된 BIS 설정을 위한 동일한 소켓, 동일 연결 성공 사례도 유지합니다. 첨부 거부가 이루어지기 전에 재사용 가능한 BIS가 선점되지 않도록 BIS 설정 전 첨부된 소켓을 거부합니다.

CIS 설정 시 iso_conn_add() 이전에 다른 HCI 연결을 거부하고 시도별 HCI 잠금을 직접 해제합니다. 소유권이 없는 iso_conn은 분리 후에도 다른 참조를 포함할 수 있으므로, 해당 잠금 해제를 위해 파괴에 의존해서는 안 됩니다.

iso_listen_bis()는 장치 잠금 하에서 새로운 PA HCI/ISO 쌍을 생성하므로, 임시 iso_conn_put() 거부 시 ISO 후보를 해제하고 HCI 잠금을 해제합니다. iso_conn_ready()는 연결이 없는 새로 할당되고 게시되지 않은 자식을 사용하므로 소켓 측 거부는 도달 불가능한 상태가 됩니다.

If you want to get best quality of vulnerability data, you may have to visit VulDB.

출처

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!