🇰🇷 한글 설명
Linux 커널의 nvme-tcp 구성 요소에서 page_frag_cache 사용 시 스레드 안전성(Thread-safety)이 보장되지 않는 취약점이 발견되었습니다. 병렬로 블록 장치가 생성될 때 참조 횟수 계산 오류가 발생하여 페이지가 조기에 해제될 수 있으며, 이는 시스템 패닉을 유발할 수 있습니다.
💡 쉬운 설명
여러 작업이 동시에 처리될 때 메모리를 관리하는 방식에 오류가 있어, 컴퓨터가 사용 중인 메모리를 실수로 지워버릴 수 있는 문제입니다. 이로 인해 시스템이 갑자기 멈추거나 재부팅되는 현상이 발생할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
nvme-tcp: fix usage of page_frag_cache
nvme uses page_frag_cache to preallocate PDU for each preallocated request
of block device. Block devices are created in parallel threads,
consequently page_frag_cache is used in not thread-safe manner.
That leads to incorrect refcounting of backstore pages and premature free.
That can be catched by !sendpage_ok inside network stack:
WARNING: CPU: 7 PID: 467 at ../net/core/skbuff.c:6931 skb_splice_from_iter+0xfa/0x310.
tcp_sendmsg_locked+0x782/0xce0
tcp_sendmsg+0x27/0x40
sock_sendmsg+0x8b/0xa0
nvme_tcp_try_send_cmd_pdu+0x149/0x2a0
Then random panic may occur.
Fix that by serializing the usage of page_frag_cache.
📍 영향받는 시스템
Linux kernel (nvme-tcp module 사용 환경)
⚔️ 공격 벡터
병렬로 블록 장치를 생성하는 특정 네트워크 환경을 통한 시스템 불안정 유도
🛡️ 대응 방법
page_frag_cache 사용 시 직렬화(Serialization)가 적용된 최신 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전을 확인하여 해당 취약점이 패치된 최신 버전인지 확인합니다.