🇰🇷 한글 설명
Linux 커널의 xprtrdma 구성 요소에서 frwr_wp_create() 함수의 반환 값을 제대로 확인하지 않아 발생하는 취약점입니다. 메모리 영역(MR) 생성에 실패하더라도 연결이 성공한 것으로 간주되어, 이후 RDMA 읽기 작업 시 NULL 포인터를 참조하게 되어 시스템 충돌이 발생할 수 있습니다.
💡 쉬운 설명
네트워크 연결 설정 중 메모리 준비에 실패했는데도 연결이 된 것처럼 착각하여 발생하는 오류입니다. 이 상태에서 데이터를 읽으려고 하면 컴퓨터가 갑자기 멈추거나 꺼질 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
xprtrdma: Check frwr_wp_create() during connect
frwr_wp_create() creates the singleton Memory Region used to encode
padding for Write chunks whose payload length is not XDR-aligned. Its
failure paths return a negative errno and leave ep->re_write_pad_mr set
to NULL.
rpcrdma_xprt_connect() currently ignores that return value. If
frwr_wp_create() fails after the rest of the connection setup succeeds,
xprt_rdma_connect_worker() treats the connection attempt as successful
and sets XPRT_CONNECTED. A later NFS/RDMA read with a non-4-byte-aligned
receive page length reaches rpcrdma_encode_write_list(), passes the NULL
write-pad MR to encode_rdma_segment(), and dereferences it.
This is locally triggerable on an NFS/RDMA client after a connect or
reconnect hits a local MR allocation, DMA-map, MR-map, or post-send
failure; a remote peer alone cannot force the local MR setup failure.
Check the return value and fail the connect as -ENOTCONN, matching the
adjacent setup failures. This keeps XPRT_CONNECTED clear and lets the
normal reconnect path retry.
📍 영향받는 시스템
Linux kernel (xprtrdma 모듈을 사용하는 NFS/RDMA 클라이언트)
⚔️ 공격 벡터
로컬에서 RDMA 메모리 할당 또는 매핑 실패를 유도하여 트리거 (원격 공격자는 직접 유도 불가)
🛡️ 대응 방법
frwr_wp_create()의 반환 값을 확인하여 실패 시 연결을 차단하도록 커널을 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 패치된 최신 보안 업데이트 버전인지 확인하십시오.