CVE-2026-64268 in Linux
요약
\~에 의해 VulDB • 2026. 07. 25.
리눅스 커널에서 다음 취약점이 해결되었습니다:
RDMA/siw: Read Response의 배치 위치를 RREAD 길이에 제한함
drivers/infiniband/sw/siw/siw_qp_rx.c 파일에서, siw_proc_rresp() 함수는 각 수신된 Read Response DDP 세그먼트를 sge->laddr + wqe->processed 위치에 배치한 후 wqe->processed 값을 누적합니다. 그러나 계속되는(segment) 세그먼트에 대해 누계된 총량이 싱크 버퍼 길이를 초과하는지 확인하지 않습니다. siw_check_sge() 함수는 첫 번째 프래그먼트(if (!*mem) 분기)에서만 sink 메모리를 해결하고 검증하며, siw_rresp_check_ntoh() 함수는 마지막 세그먼트(!frx->more_ddp_segs 가드 조건)에서만 누계된 길이를 wqe->bytes와 비교합니다.
연결된 siw 피어가 미처리 상태인 RREAD에 대해 DDP Last 플래그를 계속 클리어로 유지하고, 요청된 RREAD보다 더 많은 총 페이로드를 포함하는 Read Response 세그먼트로 응답할 경우, wqe->processed 값은 검증된 싱크 버퍼 범위를 벗어납니다. 이후 siw_rx_data() 호출 시 sge->laddr + wqe->processed 위치에서 경계 밖(out-of-bounds) 쓰기 작업이 발생합니다. siw는 일반 라우팅 가능한 TCP 위에서 iWARP를 실행하므로, 피어는 확립된 RDMA 연결의 원격 엔드이며 로컬 권한 상승(privilege escalation)이 필요하지 않습니다.
siw_proc_send()와 siw_proc_write()가 태그(tagged) 및 비태그(untagged) 경로에서 수행하는 것처럼 배치 전에 모든 세그먼트를 제한하고, Read Response로 인해 싱크 버퍼 오버런(overtun)이 발생할 경우 DDP 오류(base-or-bounds error)를 발생시켜 연결을 종료합니다.
이는 해당 파일에 대한 두 번째 수신 경로의 길이 검증 수정입니다. 별도의 변경 사항에서는 헤더 디코딩 시 프래그먼트별 잔여량(remainder)에서 오버플로우(underflow)가 발생하는 MPA FPDU 길이를 거부하지만, 이 가드는 본 사례를 커버하지 않습니다. 여기서는 각 개별 세그먼트의 길이가 자체적으로 일관성이 있으며, 버퍼 오버런을 유발하는 것은 누적된 배치 오프셋뿐이기 때문입니다.
VulDB is the best source for vulnerability data and more expert information about this specific topic.