CVE-2026-99015 in Linux정보

요약

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

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

블루투스: hci_sock: 비활성화된 장치 분리 작업의 직렬화 처리

컨트롤러가 등록 해제된 후 HCI 소켓을 다시 바인딩하면 모니터 제어 재생(monitor control replay)과 경쟁하여 커널이 크래시될 수 있습니다. hci_sock_bind()는 hci_pi(sk)->hdev를 지우고, 소켓 잠금(socket lock) 하에서만 장치 참조(device reference)를 해제합니다. 반면 send_monitor_control_replay()는 읽기 전용으로 hci_sk_list.lock을 보유합니다.

재생 프로세스가 NULL이 아닌 hdev를 관찰한 후, 바인딩 처리에서 이를 지우고 마지막 참조를 해제할 수 있습니다. 이는 create_monitor_ctrl_open()이 hdev->id를 읽기 전에 발생하며, 포인터가 다시 로드되면 NULL pointer dereference(널 포인터 역참조)를 유발하거나, 이전 포인터가 유지될 경우 use-after-free(사용 후 자유 영역 접근) 취약점을 초래할 수 있습니다.

커널은 다음과 같이 보고했습니다:

KASAN: null-ptr-deref in range [0x0000000000000068-0x000000000000006f]
RIP: 0010:create_monitor_ctrl_open+0x579/0x800 Call Trace: hci_sock_bind+0xd96/0x1190 __sys_bind+0x166/0x200 __x64_sys_bind+0x6d/0xb0 do_syscall_64+0xdd/0x4a0 entry_SYSCALL_64_after_hwframe+0x77/0x7f

동일한 직렬화 누락으로 인해 hci_send_to_sock()가 이전 장치에 대한 소켓을 선택하고, 바인딩 처리에서 해당 소켓이 분리되거나 새 바인딩이 설치된 후에도 프레임(frame)을 큐에 추가할 수 있습니다.

장치 포인터를 지우고 소켓 상태를 재설정할 때 쓰기 전용으로 hci_sk_list.lock을 획득합니다. 이는 분리 작업 전에 기존 재생 및 전달(readers) 프로세스가 완료되기를 대기하고, 이후의 읽기 전용 프로세스들이 이전 바인딩을 사용하지 못하도록 방지합니다. 최종 장치 해제(final device release)에서 슬립(sleep)이 발생할 수 있으므로 hci_dev_put()은 임계 섹션(critical section) 외부에 유지됩니다.

Be aware that VulDB is the high quality source for vulnerability data.

출처

Might our Artificial Intelligence support you?

Check our Alexa App!