🇰🇷 한글 설명
Linux 커널의 nvmet-tcp 구성 요소에서 원격 제어가 가능한 과도하게 큰 SGL 할당 시 커널 경고(Warning)가 발생하는 취약점입니다. 원격 공격자가 비정상적으로 큰 SGL을 요청할 경우 커널 페이지 할당기가 한계를 초과하여 경고를 발생시킬 수 있습니다.
💡 쉬운 설명
해커가 네트워크를 통해 컴퓨터에 너무 큰 데이터를 요청하면, 컴퓨터의 핵심 시스템(커널)이 당황하여 경고 메시지를 띄우거나 멈출 수 있는 문제입니다. 이 문제는 시스템이 비정상적인 요청을 받았을 때 경고를 띄우는 대신 조용히 처리하도록 수정되었습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
nvmet-tcp: Do not WARN on remotely-controlled oversized SGL allocations
When fuzzing the nvme target code, I tripped a kernel warning in
nvmet_tcp_map_data() because the length passed into the allocator is
controlled by the remote initiator.
A remote initiator that sends a command with an SGL claiming a huge
number, can create a scatterlist and iovec allocation of over 1 million
entries, which causes the backing kmalloc call to exceed MAX_PAGE_ORDER
and then the page allocator will trip on a WARN_ON_ONCE_GFP() message:
WARNING: mm/page_alloc.c:5280 __alloc_frozen_pages_noprof
Workqueue: nvmet_tcp_wq nvmet_tcp_io_work
...
sgl_alloc_order
nvmet_tcp_map_data
nvmet_tcp_try_recv_pdu
As it's never good to trip a kernel warning remotely due to many systems
having panic-on-warn enabled, let's silence it by just add GFP_NOWARN to
the allocation flags.
📍 영향받는 시스템
Linux kernel (nvmet-tcp module 사용 환경)
⚔️ 공격 벡터
네트워크를 통해 조작된 대규모 SGL(Scatterlist)을 포함한 명령을 전송하는 원격 공격
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 nvmet_tcp_map_data()의 할당 플래그를 수정해야 합니다.
🔧 검증 코드
출력된 커널 버전을 확인하여 해당 취약점이 해결된 최신 패치 버전인지 확인합니다.