🇰🇷 한글 설명
Linux 커널의 Bluetooth hci_uart 드라이버에서 write_work가 취소될 때 HCI_UART_SENDING 비트가 해제되지 않는 취약점이 발견되었습니다. 이로 인해 장치를 재연결했을 때 향후 쓰기 작업이 차단되는 문제가 발생할 수 있습니다. 패치를 통해 작업 취소 시 해당 비트를 명확히 해제하고 작업 동기화를 안전하게 처리하도록 수정되었습니다.
💡 쉬운 설명
블루투스 장치를 사용하다가 연결을 끊고 다시 연결할 때, 블루투스 기능이 제대로 작동하지 않고 멈춰버릴 수 있는 문제입니다. 시스템이 블루투스 전송 작업이 아직 진행 중이라고 잘못 판단하기 때문에 발생합니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
Bluetooth: hci_uart: clear HCI_UART_SENDING when write_work is canceled
HCI_UART_SENDING bit in tx_state means write_work is pending and blocks
queueing it again. Currently this bit is not cleared when canceling the
work in hci_uart_close(), which blocks future writes when device is
reopened later if write_work was pending.
Fix by clearing HCI_UART_SENDING when canceling the work.
Also make clearing of tx_skb safe by using disable_work_sync +
enable_work instead of just cancel_work_sync. hci_uart_flush() purges
the proto tx queue so we can cancel the pending write_work there,
instead of doing it just in hci_uart_close(). Re-enable and possibly
requeue the work after queue flush.
📍 영향받는 시스템
Linux kernel (Bluetooth hci_uart driver component)
⚔️ 공격 벡터
로컬 시스템에서 블루투스 장치의 연결 및 해제를 반복하여 서비스 거부(DoS) 상태 유도
🛡️ 대응 방법
최신 보안 패치가 적용된 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이상인지 확인