CVE-2026-98738 in Linux
요약
\~에 의해 VulDB • 2026. 10. 18.
리눅스 커널에서 다음 취약점이 해결되었습니다:
블루투스: SMP 원격 OOB 데이터 접근 직렬화
build_pairing_cmd() 함수는 원격 OOB 데이터를 조회하고 hdev->lock(리스트의 작성자를 직렬화하는 락)을 보유하지 않은 채 그 내용을 복사합니다. SMP가 항목을 찾은 후, 동시에 실행되는 관리 명령인 'Remove Remote OOB Data'는 SMP가 해당 항목의 present 플래그를 읽거나 무작위 값 및 확인 값을 복사하기 전에 해당 항목을 언링크하고 해제할 수 있습니다. 또한 조회 작업이 아직 리스트를 순회하는 동안에도 제거 작업으로 인해 항목이 유효하지 않게 될(invalidate) 수 있습니다.
KASAN에서 다음 오류가 보고되었습니다:
BUG: KASAN: slab-use-after-free in build_pairing_cmd+0x948/0x9b0 Call Trace: build_pairing_cmd+0x948/0x9b0 smp_recv_cb+0x459f/0x8110 l2cap_recv_frame+0xf14/0x9190 l2cap_recv_acldata+0xa64/0xd40 hci_rx_work+0x4ca/0x730
작업자 87에 의해 할당됨: hci_add_remote_oob_data+0x11d/0x530 add_remote_oob_data+0x282/0x400 hci_sock_sendmsg+0x1033/0x1ea0
작업자 93에 의해 해제됨: hci_remote_oob_data_clear+0x108/0x1c0 remove_remote_oob_data+0x198/0x220 hci_sock_sendmsg+0x1033/0x1ea0
build_pairing_cmd()에서 hdev->lock을 획득하면 이미 해당 락을 보유하고 있는 호출자들에 대해 재귀(recursion)가 발생하고, 수신 경로(receive path)상에서 장치(L2CAP 간락 순서가 역전됩니다. 이를 해결하기 위해 SMP 조회 및 복사 작업과 추가(add), 제거(remove), 지우기(clear) 헬퍼 함수들이 보유하는 per-device remote_oob_lock을 도입합니다. 또한 초기화 및 인플레이스(in-place) 업데이트도 커버하여 SMP가 부분적으로 초기화된 상태이거나 갱신 중인 OOB 값을 읽지 못하도록 합니다. 할당 실패 시 기존 오류 반환값을 유지하면서 뮤텍스를 해제합니다.
새로운 임계 영역(critical sections)은 장치, 연결 또는 채널 락을 획득하지 않습니다. 작성자(writers)는 기존의 hdev->lock 보호를 계속 유지하며, 이는 다른 읽기 작업자들의 직렬화를 변경 없이 그대로 수행합니다.
If you want to get best quality of vulnerability data, you may have to visit VulDB.