🔍 CVE-2024-58238

7.1
CVSS Score
HIGH
2025-08-09
2026-10-15 22:18
✅ 완료

🇰🇷 한글 설명

리눅스 커널의 Bluetooth btnxpuart 드라이버에서 전력 절약 모드 스트레스 테스트 중 TX 타임아웃 오류가 발생하는 취약점입니다. 전력 절약 메커니즘이 UART break를 활성화하는 시점과 데이터 전송 작업이 동시에 예약될 때 상태 관리 오류로 인해 발생합니다. 뮤텍스(mutex)를 사용하여 UART break 제어 및 상태 읽기/쓰기 과정을 동기화함으로써 해결되었습니다.

💡 쉬운 설명

블루투스 기기가 절전 모드로 들어갈 때 데이터 전송 명령이 겹치면 통신이 끊기는 현상입니다. 시스템이 절전 상태인지 깨어있는 상태인지 제대로 구분하지 못해 발생하는 오류입니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: Bluetooth: btnxpuart: Resolve TX timeout error in power save stress test This fixes the tx timeout issue seen while running a stress test on btnxpuart for couple of hours, such that the interval between two HCI commands coincide with the power save timeout value of 2 seconds. Test procedure using bash script: <load btnxpuart.ko> hciconfig hci0 up //Enable Power Save feature hcitool -i hci0 cmd 3f 23 02 00 00 while (true) do hciconfig hci0 leadv sleep 2 hciconfig hci0 noleadv sleep 2 done Error log, after adding few more debug prints: Bluetooth: btnxpuart_queue_skb(): 01 0A 20 01 00 Bluetooth: hci0: Set UART break: on, status=0 Bluetooth: hci0: btnxpuart_tx_wakeup() tx_work scheduled Bluetooth: hci0: btnxpuart_tx_work() dequeue: 01 0A 20 01 00 Can't set advertise mode on hci0: Connection timed out (110) Bluetooth: hci0: command 0x200a tx timeout When the power save mechanism turns on UART break, and btnxpuart_tx_work() is scheduled simultaneously, psdata->ps_state is read as PS_STATE_AWAKE, which prevents the psdata->work from being scheduled, which is responsible to turn OFF UART break. This issue is fixed by adding a ps_lock mutex around UART break on/off as well as around ps_state read/write. btnxpuart_tx_wakeup() will now read updated ps_state value. If ps_state is PS_STATE_SLEEP, it will first schedule psdata->work, and then it will reschedule itself once UART break has been turned off and ps_state is PS_STATE_AWAKE. Tested above script for 50,000 iterations and TX timeout error was not observed anymore.

📍 영향받는 시스템

Linux kernel (Bluetooth btnxpuart driver)

⚔️ 공격 벡터

로컬 시스템에서 특정 타이밍에 블루투스 명령을 반복 실행하여 통신 장애 유도 (DoS)

🛡️ 대응 방법

리눅스 커널을 최신 보안 패치가 적용된 버전으로 업데이트

🔧 검증 코드

출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인

Shell / Script
uname -r

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H

💻 영향받는 소프트웨어

Linux Kernel