🇰🇷 한글 설명
Linux 커널의 NFC NCI 서브시스템에서, 장치를 닫을 때 진행 중이던 데이터 교환이 완료되지 않아 데이터 교환 콜백이 보유한 소켓 참조가 해제되지 않는 메모리 누수 문제가 해결되었습니다. 이로 인해 rawsock 소켓 객체가 해제되지 않고 누적될 수 있었습니다.
💡 쉬운 설명
NFC 장치를 끌 때 진행 중이던 통신이 정리되지 않아, 사용되지 않는 메모리가 계속 쌓이는 문제입니다. 이는 시스템 메모리를 점차 소모시켜 성능 저하나 시스템 불안정을 일으킬 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
nfc: nci: complete pending data exchange on device close
In nci_close_device(), complete any pending data exchange before
closing. The data exchange callback (e.g.
rawsock_data_exchange_complete) holds a socket reference.
NIPA occasionally hits this leak:
unreferenced object 0xff1100000f435000 (size 2048):
comm "nci_dev", pid 3954, jiffies 4295441245
hex dump (first 32 bytes):
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
27 00 01 40 00 00 00 00 00 00 00 00 00 00 00 00 '..@............
backtrace (crc ec2b3c5):
__kmalloc_noprof+0x4db/0x730
sk_prot_alloc.isra.0+0xe4/0x1d0
sk_alloc+0x36/0x760
rawsock_create+0xd1/0x540
nfc_sock_create+0x11f/0x280
__sock_create+0x22d/0x630
__sys_socket+0x115/0x1d0
__x64_sys_socket+0x72/0xd0
do_syscall_64+0x117/0xfc0
entry_SYSCALL_64_after_hwframe+0x4b/0x53
📍 영향받는 시스템
NFC NCI 드라이버를 포함하는 Linux 커널 (수정 이전의 안정 버전 및 LTS 배포판)
⚔️ 공격 벡터
로컬 사용자가 NFC 소켓을 반복적으로 생성하고 장치 종료 과정을 유발하여 커널 메모리를 고갈시키는 방식으로 서비스 거부를 일으킬 수 있습니다.
🛡️ 대응 방법
배포판 벤더가 제공하는 최신 커널 보안 업데이트를 적용하거나, 해당 수정이 포함된 Linux 커널 버전으로 업그레이드하십시오.
🔧 검증 코드
커널 버전을 확인하여 해당 패치가 포함된 버전인지 대조하고, NFC/NCI 모듈이 로드되지 않았다면 이 취약점의 영향을 받지 않습니다.
uname -r && (lsmod | grep -E '^nfc|nci' || echo 'NFC/NCI 모듈 미로드')