🇰🇷 한글 설명
Linux 커널의 Bluetooth bcsp 프로토콜 구현에서 BCSP 프로토콜이 등록되지 않은 상태에서도 bcsp_recv() 함수가 호출될 수 있는 취약점이 발견되었습니다. 이로 인해 NULL 포인터 역참조가 발생하여 시스템 충돌이나 커널 패닉이 유발될 수 있습니다.
💡 쉬운 설명
블루투스 통신을 준비하는 과정이 완료되지 않았는데 데이터를 받으려고 시도하여 컴퓨터 시스템이 멈추거나 오류가 발생하는 문제입니다. 프로토콜이 제대로 등록되었는지 확인하는 절차가 누락되어 발생했습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
Bluetooth: bcsp: receive data only if registered
Currently, bcsp_recv() can be called even when the BCSP protocol has not
been registered. This leads to a NULL pointer dereference, as shown in
the following stack trace:
KASAN: null-ptr-deref in range [0x0000000000000108-0x000000000000010f]
RIP: 0010:bcsp_recv+0x13d/0x1740 drivers/bluetooth/hci_bcsp.c:590
Call Trace:
<TASK>
hci_uart_tty_receive+0x194/0x220 drivers/bluetooth/hci_ldisc.c:627
tiocsti+0x23c/0x2c0 drivers/tty/tty_io.c:2290
tty_ioctl+0x626/0xde0 drivers/tty/tty_io.c:2706
vfs_ioctl fs/ioctl.c:51 [inline]
__do_sys_ioctl fs/ioctl.c:907 [inline]
__se_sys_ioctl+0xfc/0x170 fs/ioctl.c:893
do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
do_syscall_64+0xfa/0x3b0 arch/x86/entry/syscall_64.c:94
entry_SYSCALL_64_after_hwframe+0x77/0x7f
To prevent this, ensure that the HCI_UART_REGISTERED flag is set before
processing received data. If the protocol is not registered, return
-EUNATCH.
📍 영향받는 시스템
Linux kernel (Bluetooth bcsp driver 포함 버전)
⚔️ 공격 벡터
등록되지 않은 BCSP 프로토콜 상태에서 특정 UART 입력을 통해 NULL 포인터 역참조 유도
🛡️ 대응 방법
데이터 수신 전 HCI_UART_REGISTERED 플래그를 확인하도록 커널 패치를 적용하거나 최신 커널로 업데이트
🔧 검증 코드
현재 실행 중인 커널 버전을 확인하여 해당 취약점이 해결된 최신 보안 패치 버전인지 확인합니다.