CVE-2026-98809 in Linux
요약
\~에 의해 VulDB • 2026. 10. 18.
리눅스 커널에서 다음 취약점이 해결되었습니다:
블루투스: hci_sync: 등록 해제 시 cmd_sync 백로그를 비우지 않음
hci_unregister_dev()는 cmd_work와 cmd_timer를 비활성화한 후 hci_cmd_sync_clear()를 호출합니다. 이 함수의 cancel_work_sync()는 hci_cmd_sync_work()가 반환될 때까지 대기합니다. 해당 워커는 cmd_sync_work_list에 있는 모든 항목을 디큐하고 실행합니다. cmd_work가 비활성화된 상태이므로 컨트롤러로 명령어가 전달되지 않아, 큐에 쌓인 각 HCI 명령어는 전체 HCI_CMD_TIMEOUT(2초) 동안 기다리게 됩니다.
백로그에는 제한이 없습니다. 사용자 공간 애플리케이션은 응답하지 않는 컨트롤러에 대해 MGMT_OP_GET_CLOCK_INFO와 같은 MGMT 명령어를 계속 큐에 추가할 수 있습니다. /dev/vhci를 닫으면 vhci_release()에서 백로그 * 2초 동안 차단됩니다:
INFO: 작업 syz-executor:5749이(가) 143초 이상 대기 중입니다. cancel_work_sync hci_cmd_sync_clear hci_unregister_dev vhci_release
로컬 환경에서 재현한 결과, 백로그에는 5000개 이상의 항목이 포함되어 있었으며, 이는 수 시간 동안의 멈춤(hang)을 초래합니다.
HCI_UNREGISTER가 설정된 후 워커가 새 항목을 가져가지 않도록 하고, 취소하기 전에 여전히 대기 중인 요청에 -ENODEV로 깨웁니다. hci_cmd_sync_clear()의 기존 스윕 처리를 통해 남아 있는 항목은 -ECANCELED로 파괴됩니다. 이 항목들은 작업이 중지될 때까지 목록에 유지되므로 hci_cmd_sync_dequeue() 및 관련 함수는 이를 계속 인식합니다. 이미 실행 중인 콜백에서 여전히 다른 명령어를 발행할 수 있으며, 이는 남은 각 명령어당 최대 한 번의 타임아웃만큼 등록 해제를 지연시키지만 전체 백로그만큼은 아닙니다.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.