🇰🇷 한글 설명
Linux 커널의 SUNRPC 구성 요소에서 gss_unwrap_resp_priv() 함수가 RPCSEC_GSS opaque 길이를 검증할 때 정수 오버플로 취약점이 존재합니다. 공격자가 조작된 RPCSEC_GSS 응답을 보내면 경계 검사를 우회하여 gss_krb5_unwrap_v2() 함수 내에서 범위를 벗어난 읽기(Out-of-bounds read)를 유발할 수 있습니다.
💡 쉬운 설명
리눅스 시스템이 네트워크를 통해 받은 데이터를 검사할 때, 숫자가 너무 커서 계산 오류가 발생하는 허점을 이용한 공격입니다. 이를 통해 공격자는 시스템의 메모리 정보를 몰래 읽어낼 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
SUNRPC: harden gss_unwrap_resp_priv length checks
gss_unwrap_resp_priv() validates the RPCSEC_GSS opaque length with
offset = (u8 *)(p) - (u8 *)head->iov_base;
if (offset + opaque_len > rcv_buf->len)
goto unwrap_failed;
maj_stat = gss_unwrap(ctx->gc_gss_ctx, offset,
offset + opaque_len, rcv_buf);
Both operands are u32 and the sum is computed in u32. A reply with
opaque_len near 0xffffffff makes offset + opaque_len wrap to a small
value that is below rcv_buf->len, so the bound check passes and
gss_unwrap() is called with end < begin. The check also lacks a
lower bound, so any opaque_len in [0, GSS_KRB5_TOK_HDR_LEN) is
accepted and forwarded to gss_krb5_unwrap_v2(), whose pre-decrypt
header reads at ptr+4 and ptr+6 then run past the token.
A krb5p NFS server returning a crafted RPCSEC_GSS reply can drive
the client into out-of-bounds reads in gss_krb5_unwrap_v2() and the
rotate_left() loop that follows.
Fix by replacing the single combined check with three guards that
are safe in u32 arithmetic and that enforce the RFC 4121 minimum
outer token length:
if (offset > rcv_buf->len)
goto unwrap_failed;
if (opaque_len > rcv_buf->len - offset)
goto unwrap_failed;
if (opaque_len < GSS_KRB5_TOK_HDR_LEN)
goto unwrap_failed;
The first guard makes the subtraction in the second guard
unconditionally safe; offset is derived from a successful
xdr_inline_decode() in the head kvec, so in practice it already
satisfies the bound. The floor mirrors the server-side check added
in commit 5b757c2e57a5 ("SUNRPC: svcauth_gss: enforce krb5 token
minimum length").
📍 영향받는 시스템
Linux kernel (SUNRPC/RPCSEC_GSS 관련 모듈 사용 시스템)
⚔️ 공격 벡터
조작된 RPCSEC_GSS 응답을 전송하는 krb5p NFS 서버를 통한 클라이언트 공격
🛡️ 대응 방법
정수 오버플로를 방지하도록 개선된 최신 Linux 커널 패치 적용
🔧 검증 코드
출력된 커널 버전이 취약점이 수정된 최신 보안 패치 버전인지 확인하십시오.