🇰🇷 한글 설명
리눅스 커널의 NFC NCI 서브시스템에서 입력 데이터 검증 미흡으로 인해 초기화되지 않은 메모리 값을 사용하는 취약점이 발견되었습니다. 특정 패킷의 크기 검증이 불충분하여 잘못된 메모리 주소에 접근하게 되며, 이는 시스템 불안정성을 초래할 수 있습니다.
💡 쉬운 설명
컴퓨터가 NFC 통신을 처리할 때 들어오는 데이터가 올바른지 제대로 확인하지 않아 발생하는 문제입니다. 잘못된 데이터가 들어오면 컴퓨터가 엉뚱한 메모리 영역을 읽으려다가 오류가 발생할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net: nfc: nci: Add parameter validation for packet data
Syzbot reported an uninitialized value bug in nci_init_req, which was
introduced by commit 5aca7966d2a7 ("Merge tag
'perf-tools-fixes-for-v6.17-2025-09-16' of
git://git.kernel.org/pub/scm/linux/kernel/git/perf/perf-tools").
This bug arises due to very limited and poor input validation
that was done at nic_valid_size(). This validation only
validates the skb->len (directly reflects size provided at the
userspace interface) with the length provided in the buffer
itself (interpreted as NCI_HEADER). This leads to the processing
of memory content at the address assuming the correct layout
per what opcode requires there. This leads to the accesses to
buffer of `skb_buff->data` which is not assigned anything yet.
Following the same silent drop of packets of invalid sizes at
`nic_valid_size()`, add validation of the data in the respective
handlers and return error values in case of failure. Release
the skb if error values are returned from handlers in
`nci_nft_packet` and effectively do a silent drop
Possible TODO: because we silently drop the packets, the
call to `nci_request` will be waiting for completion of request
and will face timeouts. These timeouts can get excessively logged
in the dmesg. A proper handling of them may require to export
`nci_request_cancel` (or propagate error handling from the
nft packets handlers).
📍 영향받는 시스템
Linux kernel (NFC NCI 서브시스템을 사용하는 버전)
⚔️ 공격 벡터
조작된 NCI 패킷을 전송하여 커널 내 초기화되지 않은 메모리 영역에 접근 유도
🛡️ 대응 방법
NFC NCI 관련 패킷 데이터 검증 로직이 포함된 최신 리눅스 커널로 업데이트
🔧 검증 코드
현재 실행 중인 커널 버전을 확인하여 취약점이 해결된 최신 패치 버전인지 확인합니다.