🇰🇷 한글 설명
Linux 커널의 svcrdma 구성 요소에서 RPC/RDMA Read 청크 위치 검증 미흡으로 인해 발생하는 취약점입니다. 공격자가 조작된 청크 위치를 전송할 경우 메모리 언더플로우가 발생하여 인접한 슬랩 메모리가 노출되거나 데이터가 유출될 수 있습니다.
💡 쉬운 설명
원격 컴퓨터가 데이터를 요청할 때 위치 정보를 조작하여 서버의 허용된 범위를 벗어난 메모리 영역을 읽어갈 수 있는 보안 결함입니다. 이를 통해 공격자는 시스템의 민감한 정보를 훔쳐볼 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
svcrdma: Validate Read chunk positions before reconstruction
The RPC/RDMA Read chunk position field is supplied by the remote
client and stored verbatim in the parsed chunk list.
xdr_count_read_segments() checks only 4-byte alignment; it never
compares the position against the received inline body length.
In the single-chunk path, svc_rdma_read_complete_one() splits the
head and tail kvecs at ch_position. A position past the inline
body underflows the tail length, exposing adjacent slab memory to
the upper XDR decoder.
In the multi-chunk path, svc_rdma_read_multiple_chunks() computes
gap lengths between chunks as unsigned subtractions from
ch_position. Overlapping Read chunks cause these subtractions to
underflow. A final position past the inline body likewise
underflows the trailing gap length. svc_rdma_copy_inline_range()
then copies past the receive buffer into request pages that are
returned to the client through the Reply channel.
Bound inline-range copies in svc_rdma_copy_inline_range() against
the decoded inline RPC body saved in rc_saved_arg. Reject a
single Read chunk positioned beyond that body, and reject
multi-chunk lists where accumulated read bytes exceed the next
chunk's position. Apply the same position and overlap checks in
the call-chunk interleaving path.
📍 영향받는 시스템
Linux Kernel (svcrdma 모듈을 사용하는 시스템)
⚔️ 공격 벡터
조작된 RPC/RDMA Read 청크 위치 값을 포함한 악의적인 네트워크 패킷 전송
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 svcrdma의 위치 및 중첩 검증 로직을 적용해야 합니다.
🔧 검증 코드
출력된 커널 버전이 취약점이 해결된 최신 패치 버전인지 배포판 보안 공지를 통해 확인하십시오.