🇰🇷 한글 설명
Linux 커널의 RDMA/mlx5 드라이버에서 사용자 제공 값의 정수 오버플로 취약점이 발견되었습니다. 공격자가 조작된 값을 입력할 경우 버퍼 크기가 실제보다 작게 계산되어 메모리 손상이 발생할 수 있습니다.
💡 쉬운 설명
컴퓨터가 계산을 할 때 숫자가 너무 커져서 엉뚱한 작은 숫자로 인식되는 오류가 있습니다. 이로 인해 실제 데이터보다 작은 공간에 데이터를 쓰게 되어 시스템이 망가질 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
RDMA/mlx5: Fix integer overflow of user QP buffer size
set_user_buf_size() computes the QP buffer size by left-shifting the
user-supplied rq.wqe_cnt and rq.wqe_shift values as signed integers.
A sufficiently large rq.wqe_cnt causes signed integer overflow, which
is undefined behavior, and yields a small or negative buf_size, causing
ib_umem_get() to map a buffer smaller than the hardware will actually
write into.
Replace the shifts and addition with check_shl_overflow() and
check_add_overflow(), rejecting invalid user inputs.
Moreover, guard the identical shift computing qp->sq.offset in
_create_user_qp() before set_user_buf_size() is reached.
📍 영향받는 시스템
Linux kernel (RDMA/mlx5 driver components)
⚔️ 공격 벡터
사용자가 조작된 rq.wqe_cnt 및 rq.wqe_shift 값을 RDMA 설정 시 전달하여 정수 오버플로 유도
🛡️ 대응 방법
커널 업데이트를 통해 check_shl_overflow() 및 check_add_overflow()가 적용된 최신 패치 버전 설치
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 패치된 최신 보안 업데이트 버전인지 확인