🔍 CVE-2026-99015

0.0
CVSS Score
UNKNOWN
2026-10-23
2026-10-23 13:17
✅ 완료

🇰🇷 한글 설명

Linux 커널의 Bluetooth HCI 소켓 바인딩 과정에서 발생하는 경쟁 조건(race condition) 취약점입니다. 컨트롤러 등록 해제 후 소켓을 재바인딩할 때 모니터 제어 재생과 동시에 실행되어 NULL 포인터 역참조 또는 해제 후 사용(use-after-free)이 발생할 수 있습니다. 수정은 hci_sk_list.lock을 쓰기 잠금으로 보호하여 직렬화하는 방식으로 이루어졌습니다.

💡 쉬운 설명

블루투스 장치를 연결 해제한 직후 소켓을 다시 연결하면 두 작업이 동시에 실행되어 시스템이 충돌할 수 있습니다. 이 문제는 잠금 장치를 추가하여 두 작업이 순서대로 진행되도록 해결되었습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: Bluetooth: hci_sock: Serialize dead-device detachment Rebinding an HCI socket after its controller is unregistered can race monitor control replay and crash the kernel. hci_sock_bind() clears hci_pi(sk)->hdev and drops the device reference under only the socket lock, whereas send_monitor_control_replay() holds hci_sk_list.lock for reading. Replay can observe a non-NULL hdev, then bind can clear it and drop the last reference before create_monitor_ctrl_open() reads hdev->id. This can cause a NULL pointer dereference if the pointer is reloaded, or a use-after-free if the old pointer is retained. The kernel reported: KASAN: null-ptr-deref in range [0x0000000000000068-0x000000000000006f] RIP: 0010:create_monitor_ctrl_open+0x579/0x800 Call Trace: hci_sock_bind+0xd96/0x1190 __sys_bind+0x166/0x200 __x64_sys_bind+0x6d/0xb0 do_syscall_64+0xdd/0x4a0 entry_SYSCALL_64_after_hwframe+0x77/0x7f The same missing serialization lets hci_send_to_sock() select a socket for the old device and queue its frame after bind has detached the socket or installed a new binding. Take hci_sk_list.lock for writing when clearing the device pointer and resetting the socket state. This waits for existing replay and delivery readers to finish before detachment and prevents later readers from using the old binding. Keep hci_dev_put() outside the critical section because the final device release can sleep.

📍 영향받는 시스템

패치 이전의 Linux 커널 (Bluetooth HCI 소켓 기능이 활성화된 시스템)

⚔️ 공격 벡터

로컬 사용자가 HCI 소켓을 생성한 뒤 컨트롤러 등록 해제와 bind 호출을 경쟁적으로 반복하여 커널 충돌 또는 메모리 손상을 유발

🛡️ 대응 방법

커널을 해당 취약점이 수정된 최신 안정 버전으로 업데이트하거나 배포판 보안 패치를 적용

🔧 검증 코드

출력된 커널 버전을 배포판 보안 공지 또는 Linux 커널 git 로그에서 해당 수정 커밋이 포함된 버전과 비교하여 패치 적용 여부를 확인합니다.

Shell / Script
uname -r

💻 영향받는 소프트웨어

Linux Kernel