🇰🇷 한글 설명
Linux 커널의 NFC NCI 프로토콜 처리 과정에서 CORE_INIT_RSP 패킷을 파싱할 때 데이터 길이를 검증하지 않아 발생하는 취약점입니다. 악의적으로 조작된 응답을 통해 초기화되지 않은 슬랩 메모리를 읽게 되어 시스템 정보 유출이나 불안정성을 초래할 수 있습니다.
💡 쉬운 설명
NFC 통신을 시작할 때 들어오는 데이터가 충분한지 확인하지 않아 발생하는 문제입니다. 가짜 데이터를 보내면 컴퓨터 메모리의 민감한 정보가 읽힐 위험이 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
nfc: nci: fix use of uninitialized memory in CORE_INIT_RSP parsing
nci_core_init_rsp_packet_v1() and nci_core_init_rsp_packet_v2() parse
the CORE_INIT_RSP packet without validating that the skb contains
enough data. A malformed response (e.g. injected via virtual_ncidev)
can declare a large num_supported_rf_interfaces while providing
insufficient data, causing reads of uninitialized slab memory. This
is later used in nci_init_complete_req(), triggering a KMSAN
uninit-value warning.
Add skb length checks before accessing packet fields:
- Validate the skb has at least 1 byte for the status field.
- Validate the skb can hold the fixed-size header before parsing.
- In v2, bounds-check each variable-length rf_interface entry and its
extension parameters within the parsing loop.
- In v1, verify the skb is large enough for both the variable-length
rf_interfaces array and the trailing rsp_2 structure.
📍 영향받는 시스템
NFC NCI 기능을 사용하는 Linux 커널 버전
⚔️ 공격 벡터
가상 NFC 장치(virtual_ncidev) 등을 통해 조작된 CORE_INIT_RSP 패킷 주입
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인