🇰🇷 한글 설명
Linux 커널의 NFC HCI HCP 헤더 파싱 과정에서 경계 외 읽기(Out-of-bounds read) 취약점이 발견되었습니다. 악의적인 NFC 피어가 0바이트 크기의 HCP 프레임을 전송할 경우, 메모리 범위를 벗어난 읽기가 발생하거나 재조립 루프에서 언더플로우가 발생하여 시스템 패닉을 유발할 수 있습니다.
💡 쉬운 설명
나쁜 의도를 가진 NFC 장치가 아주 작은 데이터를 보내면, 컴퓨터가 데이터를 읽는 과정에서 실수로 허용되지 않은 메모리 영역을 건드려 시스템이 멈출 수 있는 문제입니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
nfc: hci: fix out-of-bounds read in HCP header parsing
Both nfc_hci_recv_from_llc() and nci_hci_data_received_cb() read
packet->header from skb->data at function entry without first checking
that the buffer holds at least one byte. A malicious NFC peer can send
a 0-byte HCP frame that passes through the SHDLC layer and reaches
these functions, causing an out-of-bounds heap read of packet->header.
The same 0-byte frame, if queued as a non-final fragment, also causes
the reassembly loop to underflow msg_len to UINT_MAX, triggering
skb_over_panic() when the reassembled skb is written.
Fix this by adding a pskb_may_pull() check at the entry of each
function before packet->header is first accessed. The existing
pskb_may_pull() checks before the reassembled hcp_skb is cast to
struct hcp_packet remain in place to guard the 2-byte HCP message
header.
📍 영향받는 시스템
NFC 기능을 사용하는 Linux 커널 기반 시스템
⚔️ 공격 벡터
악의적인 NFC 피어가 0바이트 크기의 HCP 프레임을 전송하여 공격
🛡️ 대응 방법
pskb_may_pull() 체크 로직이 포함된 최신 Linux 커널로 업데이트
🔧 검증 코드
현재 실행 중인 커널 버전을 확인하여 취약점이 수정된 최신 패치 버전인지 확인합니다.