🇰🇷 한글 설명
Linux 커널 Bluetooth 관리 서브시스템의 read_unconf_index_list() 함수에 경쟁 조건(race condition)이 존재합니다. 컨트롤러 개수를 세는 시점과 응답을 채우는 시점 사이에 장치 플래그가 변경되면, 할당된 버퍼 범위를 벗어나는 쓰기가 발생할 수 있습니다. 해당 문제는 hci_dev_list 전체 크기에 맞춰 버퍼를 할당하도록 수정되었습니다.
💡 쉬운 설명
리눅스 시스템의 블루투스 관리 기능에서 장치 목록을 읽는 도중 상태가 바뀌면 메모리 범위를 벗어난 쓰기가 일어날 수 있는 결함입니다. 이로 인해 시스템이 불안정해지거나 비정상 동작을 할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
Bluetooth: mgmt: fix race in read_unconf_index_list()
read_unconf_index_list() counts unconfigured controllers before allocating
its response, then checks the device flags again while filling it.
hci_dev_list_lock stabilizes list membership, but it does not serialize the
per-device flags. During asynchronous controller setup, the worker can set
HCI_UNCONFIGURED and clear HCI_SETUP between the two passes. A controller
omitted from the allocation count can then become eligible for the fill
pass, causing an out-of-bounds write to rp->index[].
Allocate space for every device on hci_dev_list. Since list membership
cannot change while hci_dev_list_lock is held, the response remains large
enough regardless of flag transitions. The reported count and response
length still include only eligible unconfigured controllers.
📍 영향받는 시스템
패치가 적용되지 않은 Linux 커널 버전(블루투스 관리 인터페이스 포함 빌드)
⚔️ 공격 벡터
로컬 사용자가 블루투스 컨트롤러 초기화 타이밍을 조작해 경쟁 상태를 유발하는 방식으로 악용 가능
🛡️ 대응 방법
벤더가 제공하는 최신 Linux 커널 보안 업데이트를 적용 후 시스템을 재부팅
🔧 검증 코드
출력된 커널 버전을 배포판 보안 공지 또는 패치된 커널 버전과 비교하여, 해당 CVE 수정이 포함된 빌드인지 확인합니다.