CVE-2026-89530 in Linux
요약
\~에 의해 VulDB • 2026. 09. 12.
Linux 커널에서 다음 취약점이 해결되었습니다:
svcrdma: pull-up 버퍼를 초과하는 인라인 응답 거부하기
RPC-over-RDMA 클라이언트는 Write 목록이나 Reply chunk(응답을 운반할 수 있는 청크)를 제공하지 않고도 NFS READ 페이로드와 같은 응답을 요청할 수 있습니다. 이러한 응답에 장치의 Send Queue가 지원하는 것보다 많은 scatter/gather 엔트리가 필요한 경우, svc_rdma_pull_up_needed()는 pull-up 방식을 선택하고 svc_rdma_pull_up_reply_msg()는 전체 응답을 sctxt->sc_xprt_buf로 선형화(linearizes)합니다. 해당 버퍼의 크기는 sc_max_req_size 바이트에 불과하지만, 이 경로의 응답은 클라이언트의 요청에만 의해 제한되므로 svc_rdma_xb_linearize()가 버퍼 끝을 넘어 복사하여 인접한 slab 메모리를 손상시킵니다. 이후 과다한 길이가 sc_sges[0].length에 저장되어 게시(posted)되므로, 장치도 매핑된 영역 밖을 읽게 됩니다.
SGE 소진(SGE-exhaustion) 분기만이 pull-up 경로에서 버퍼를 초과할 수 있습니다: 임계값(threshold) 분기는 RPCRDMA_PULLUP_THRESH보다 작은 응답만 pull-up하며, 장치의 SGE 예산에 맞는 응답은 선형화 없이 직접 전송됩니다. svc_rdma_pull_up_needed()가 pull-up하려는 응답이 sc_max_req_size에 맞지 않을 때 -E2BIG를 보고하고, RFC 8166 섹션 4.5.3에서 지시하는 대로 연결을 종료(drop)하지 않고 ERR_CHUNK로 요청을 실패(fail)하도록 수정합니다.
도움말 함수는 더 이상 단순한 예/아니오(yes/no) 질문에 답하지 않습니다: 이제 응답이 선형화하기에 너무 클 경우 pull-up, no pull-up 또는 -E2BIG를 보고합니다. svc_rdma_pull_up_needed()의 이름을 svc_rdma_check_pull_up()로 변경하여 이름이 boolean 술어(boolean predicate)를 암시하지 않도록 합니다.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.