🇰🇷 한글 설명
Linux 커널의 Bluetooth RFCOMM 모듈에서 발생하는 데드락 취약점입니다. rfcomm_sk_state_change 함수가 이미 잠금 상태인 sock_lock을 다시 획득하려고 시도하여 순환 잠금 의존성이 발생합니다. 이로 인해 Bluetooth 연결 중 시스템이 응답 불가능한 상태에 빠질 수 있습니다.
💡 쉬운 설명
Bluetooth 연결 시 커널의 특정 부분이 자신을 기다리는 현상으로 인해 시스템이 멈출 수 있습니다. 주로 로컬 사용자가 Bluetooth 소켓 조작을 통해 유발할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
Bluetooth: RFCOMM: FIX possible deadlock in rfcomm_sk_state_change
rfcomm_sk_state_change attempts to use sock_lock so it must never be
called with it locked but rfcomm_sock_ioctl always attempt to lock it
causing the following trace:
======================================================
WARNING: possible circular locking dependency detected
6.8.0-syzkaller-08951-gfe46a7dd189e #0 Not tainted
------------------------------------------------------
syz-executor386/5093 is trying to acquire lock:
ffff88807c396258 (sk_lock-AF_BLUETOOTH-BTPROTO_RFCOMM){+.+.}-{0:0}, at: lock_sock include/net/sock.h:1671 [inline]
ffff88807c396258 (sk_lock-AF_BLUETOOTH-BTPROTO_RFCOMM){+.+.}-{0:0}, at: rfcomm_sk_state_change+0x5b/0x310 net/bluetooth/rfcomm/sock.c:73
but task is already holding lock:
ffff88807badfd28 (&d->lock){+.+.}-{3:3}, at: __rfcomm_dlc_close+0x226/0x6a0 net/bluetooth/rfcomm/core.c:491
📍 영향받는 시스템
Linux 커널 6.8.0 및 이전 버전에서 Bluetooth RFCOMM 모듈이 활성화된 경우
⚔️ 공격 벡터
로컬 공격자가 rfcomm_sock_ioctl 호출을 통해 의도적으로 데드락 상황을 유발하여 서비스 거부 공격 수행
🛡️ 대응 방법
Linux 커널을 6.8.0 이후 버전으로 업데이트하거나 불필요한 경우 Bluetooth RFCOMM 모듈 비활성화
🔧 검증 코드
커널 버전이 6.8.0 미만이면 'vulnerable', 6.8.0 이상이면 'patched' 출력됩니다.
uname -r | grep -oP '^\d+\.\d+' | awk '{if ($1 < 6.8) print "vulnerable"; else print "patched"}'