🇰🇷 한글 설명
리눅스 커널의 블루투스 hci_core 구성 요소에서 작업 큐가 비워지는 동안 전송 작업(tx_work)이 무조건적으로 큐에 추가되는 취약점이 발견되었습니다. 이로 인해 블루투스 장치 종료 과정과 소켓 쓰기 작업이 충돌하여 커널 경고가 발생하고 전송 작업이 유실될 수 있습니다.
💡 쉬운 설명
블루투스 장치를 끌 때 데이터 전송 요청이 동시에 들어오면 시스템이 혼란을 겪어 데이터 전송이 실패할 수 있는 문제입니다. 이는 장치 연결 해제 과정에서 발생하는 일시적인 충돌 현상입니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
Bluetooth: hci_core: Fix queuing tx_work after workqueue is drained
hci_send_acl(), hci_send_sco() and hci_send_iso() queue hdev->tx_work
unconditionally. They can run from the L2CAP/SCO/ISO socket send path
while hci_dev_close_sync() is draining hdev->workqueue (HCIDEVDOWN
racing with a socket write). Since that queue_work() is not chained
work from the tx_work worker itself, __queue_work() sees the queue
marked __WQ_DRAINING, warns "cannot queue %ps on wq %s", and drops
the work:
WARNING: CPU: 1 PID: 5985 at kernel/workqueue.c:2352 __queue_work
Call Trace:
queue_work_on
l2cap_chan_send
l2cap_sock_sendmsg
...
hci_dev_close_sync() already sets HCI_CMD_DRAIN_WORKQUEUE before
draining, but only hci_cmd_work() and handle_cmd_cnt_and_timer()
check it before queuing. Route the tx_work producers through the
same guard via a shared hci_sched_tx() helper.
📍 영향받는 시스템
Linux Kernel (Bluetooth hci_core 관련 버전)
⚔️ 공격 벡터
로컬 시스템에서 블루투스 소켓 쓰기 작업과 장치 종료 작업을 동시에 수행하여 발생 (Race Condition)
🛡️ 대응 방법
리눅스 커널을 최신 보안 패치가 적용된 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전을 확인하여 해당 취약점이 수정된 최신 패치 버전인지 확인하십시오.