🇰🇷 한글 설명
Linux 커널의 RDMA/rxe 구성 요소에서 패킷 크기 검증 미흡으로 인한 정수 언더플로우 취약점이 발견되었습니다. 공격자가 조작된 BTH 패드 값을 포함한 짧은 패킷을 전송할 경우, payload_size() 계산 과정에서 음수 값이 발생하여 시스템 오류나 보안 위협을 초래할 수 있습니다.
💡 쉬운 설명
데이터를 주고받는 과정에서 패킷의 길이를 확인하는 규칙이 허술하여 발생한 문제입니다. 나쁜 의도를 가진 데이터가 들어왔을 때 계산 결과가 마이너스로 뒤집히면서 시스템이 혼란에 빠질 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
RDMA/rxe: Validate pad and ICRC before payload_size() in rxe_rcv
rxe_rcv() currently checks only that the incoming packet is at least
header_size(pkt) bytes long before payload_size() is used.
However, payload_size() subtracts both the attacker-controlled BTH pad
field and RXE_ICRC_SIZE from pkt->paylen:
payload_size = pkt->paylen - offset[RXE_PAYLOAD] - bth_pad(pkt)
- RXE_ICRC_SIZE
This means a short packet can still make payload_size() underflow even
if it includes enough bytes for the fixed headers. Simply requiring
header_size(pkt) + RXE_ICRC_SIZE is not sufficient either, because a
packet with a forged non-zero BTH pad can still leave payload_size()
negative and pass an underflowed value to later receive-path users.
Fix this by validating pkt->paylen against the full minimum length
required by payload_size(): header_size(pkt) + bth_pad(pkt) +
RXE_ICRC_SIZE.
📍 영향받는 시스템
RDMA/rxe 모듈을 사용하는 Linux 커널 버전
⚔️ 공격 벡터
조작된 BTH 패드 필드와 짧은 길이를 가진 RDMA 패킷 전송
🛡️ 대응 방법
패킷 수신 시 payload_size() 계산에 필요한 최소 길이를 검증하도록 커널 패치 적용
🔧 검증 코드
현재 실행 중인 커널 버전을 확인하여 해당 취약점이 수정된 최신 보안 패치 버전인지 확인합니다.