🇰🇷 한글 설명
Linux 커널의 Bluetooth HIDP 프로토콜 구현 중 hidp_session_thread에서 레이스 컨디션(경쟁 상태) 취약점이 발견되었습니다. 이로 인해 타이머가 작동 중인 상태에서 세션이 해제되어 Use-After-Free가 발생하며, 결과적으로 커널 패닉을 유발할 수 있습니다.
💡 쉬운 설명
블루투스 연결을 관리하는 과정에서 데이터가 처리되는 순서가 꼬여 시스템이 충돌할 수 있는 문제입니다. 이 문제가 발생하면 컴퓨터의 운영체제가 갑자기 멈추거나 재부팅될 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
Bluetooth: Fix race condition in hidp_session_thread
There is a potential race condition in hidp_session_thread that may
lead to use-after-free. For instance, the timer is active while
hidp_del_timer is called in hidp_session_thread(). After hidp_session_put,
then 'session' will be freed, causing kernel panic when hidp_idle_timeout
is running.
The solution is to use del_timer_sync instead of del_timer.
Here is the call trace:
? hidp_session_probe+0x780/0x780
call_timer_fn+0x2d/0x1e0
__run_timers.part.0+0x569/0x940
hidp_session_probe+0x780/0x780
call_timer_fn+0x1e0/0x1e0
ktime_get+0x5c/0xf0
lapic_next_deadline+0x2c/0x40
clockevents_program_event+0x205/0x320
run_timer_softirq+0xa9/0x1b0
__do_softirq+0x1b9/0x641
__irq_exit_rcu+0xdc/0x190
irq_exit_rcu+0xe/0x20
sysvec_apic_timer_interrupt+0xa1/0xc0
📍 영향받는 시스템
Linux Kernel (Bluetooth HIDP 관련 모듈 사용 시스템)
⚔️ 공격 벡터
블루투스 HIDP 프로토콜을 통해 특수하게 조작된 패킷을 전송하여 레이스 컨디션 유도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트 (del_timer 대신 del_timer_sync 사용 적용 버전)
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인하십시오.