🇰🇷 한글 설명
Linux 커널의 NFC NCI 드라이버에서 nci_transceive() 함수가 특정 오류 경로(-EPROTO, -EINVAL, -EBUSY)를 만날 때 전달받은 skb(소켓 버퍼)를 해제하지 않는 메모리 누수 취약점이 발견되었습니다. 이로 인해 NCI 데이터 교환 과정에서 메모리가 지속적으로 소모될 수 있습니다.
💡 쉬운 설명
NFC 통신 중에 오류가 발생하면 사용했던 메모리를 시스템에 돌려주지 않고 그대로 두는 문제가 있습니다. 이 문제가 반복되면 컴퓨터의 메모리가 점점 부족해질 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
nfc: nci: free skb on nci_transceive early error paths
nci_transceive() takes ownership of the skb passed by the caller,
but the -EPROTO, -EINVAL, and -EBUSY error paths return without
freeing it.
Due to issues clearing NCI_DATA_EXCHANGE fixed by subsequent changes
the nci/nci_dev selftest hits the error path occasionally in NIPA,
and kmemleak detects leaks:
unreferenced object 0xff11000015ce6a40 (size 640):
comm "nci_dev", pid 3954, jiffies 4295441246
hex dump (first 32 bytes):
6b 6b 6b 6b 00 a4 00 0c 02 e1 03 6b 6b 6b 6b 6b kkkk.......kkkkk
6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
backtrace (crc 7c40cc2a):
kmem_cache_alloc_node_noprof+0x492/0x630
__alloc_skb+0x11e/0x5f0
alloc_skb_with_frags+0xc6/0x8f0
sock_alloc_send_pskb+0x326/0x3f0
nfc_alloc_send_skb+0x94/0x1d0
rawsock_sendmsg+0x162/0x4c0
do_syscall_64+0x117/0xfc0
📍 영향받는 시스템
Linux kernel (NFC NCI driver component)
⚔️ 공격 벡터
로컬 공격자가 NFC 통신 과정에서 의도적으로 오류를 유발하여 메모리 누수를 일으킴
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인