🇰🇷 한글 설명
리눅스 커널의 Bluetooth btnxpuart 드라이버에서 펌웨어 덤프 헤더의 길이를 검증하지 않아 발생하는 취약점입니다. 공격자가 조작된 짧은 ACL 프레임을 전송할 경우, 데이터 범위를 벗어난 메모리 읽기가 발생하거나 펌웨어 덤프 프로세스가 비정상적으로 종료될 수 있습니다.
💡 쉬운 설명
블루투스 장치가 데이터를 받을 때 데이터의 길이를 제대로 확인하지 않아 발생하는 문제입니다. 잘못된 데이터를 보내면 시스템이 엉뚱한 메모리를 읽거나 블루투스 기능이 갑자기 꺼질 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
Bluetooth: btnxpuart: Validate the FW dump header length
nxp_process_fw_dump() pulls the ACL header off the frame and then reads
seq_num and buf_len from a struct nxp_fw_dump_hdr placed at skb->data,
without checking that the ACL payload is long enough to contain it.
h4_recv_buf() collects HCI_ACL_HDR_SIZE bytes of header followed by the
number of payload bytes named in that header, so skb->len is 4 + dlen
with dlen supplied by the controller and possibly smaller than the 8
byte dump header, or zero. A short frame with connection handle 0xfff
therefore reads both fields from beyond the received data.
Beyond the read itself, buf_len is what terminates a dump: a value of
zero makes the driver call hci_devcd_complete() and reset the
controller, so a truncated frame can end a dump early.
Use skb_pull_data() to validate and pull the FW dump header before
accessing its fields. Warn and reject the chunk if the header is
truncated.
📍 영향받는 시스템
Linux kernel (Bluetooth btnxpuart driver component)
⚔️ 공격 벡터
조작된 짧은 길이의 HCI_ACL 프레임을 블루투스 컨트롤러를 통해 전송
🛡️ 대응 방법
리눅스 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 skb_pull_data() 검증 로직 적용
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 패치된 이후의 버전인지 확인하십시오.