🇰🇷 한글 설명
Linux 커널의 Bluetooth HIDP 프로토콜에서 hidp_input_report() 함수가 skb 데이터의 길이를 충분히 검증하지 않아 발생하는 취약점입니다. 페어링된 장치가 잘린 패킷을 보낼 경우, 핸들러가 유효한 범위를 벗어난 데이터를 읽게 되어 OOB(Out-of-Bounds) Read가 발생할 수 있습니다.
💡 쉬운 설명
블루투스 키보드나 마우스가 연결된 상태에서 특수하게 조작된 데이터를 보내면, 컴퓨터가 잘못된 데이터를 읽어 들여 가짜 키 입력이나 마우스 움직임이 발생할 수 있는 문제입니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
Bluetooth: HIDP: fix missing length checks in hidp_input_report()
hidp_input_report() reads keyboard and mouse payload data from an skb
without first verifying that skb->len contains enough data.
hidp_recv_intr_frame() pulls the 1-byte HIDP header before dispatching
to hidp_input_report(). If a paired device sends a truncated packet,
the handler reads beyond the valid skb data, resulting in an
out-of-bounds read of skb data. The OOB bytes may be interpreted as
phantom key presses or spurious mouse movement.
Replace the open-coded length tracking and pointer arithmetic with
skb_pull_data() calls. skb_pull_data() returns NULL if the requested
bytes are not present, eliminating the need for a manual size variable
and the separate skb->len guard.
📍 영향받는 시스템
Linux Kernel (Bluetooth HIDP 구성 요소 포함 버전)
⚔️ 공격 벡터
페어링된 블루투스 장치를 통해 길이가 조작된(truncated) HIDP 패킷을 전송
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인