🇰🇷 한글 설명
Linux 커널의 SUNRPC auth_gss 구성 요소에서 XDR 디코딩 오류 발생 시 메모리 누수가 발생하는 취약점입니다. gssx_dec_ctx() 등의 함수가 메모리를 할당한 후 디코딩 과정에서 오류가 발생하면, 이미 할당된 버퍼를 해제하지 않고 즉시 반환하여 메모리 누수를 유발합니다.
💡 쉬운 설명
프로그램이 데이터를 읽는 과정에서 오류가 났을 때, 사용하던 메모리를 제대로 정리하지 않고 버려버리는 문제입니다. 이 문제가 반복되면 시스템의 메모리가 점점 부족해져 성능 저하나 시스템 중단이 발생할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
SUNRPC: auth_gss: fix memory leaks in XDR decoding error paths
The gssx_dec_ctx(), gssx_dec_status(), and gssx_dec_name()
functions allocate memory via gssx_dec_buffer(), which calls
kmemdup(). When a subsequent decode operation fails, these
functions return immediately without freeing previously
allocated buffers, causing memory leaks.
The leak in gssx_dec_ctx() is particularly relevant because
the caller (gssp_accept_sec_context_upcall) initializes several
buffer length fields to non-zero values, resulting in memory
allocation:
struct gssx_ctx rctxh = {
.exported_context_token.len = GSSX_max_output_handle_sz,
.mech.len = GSS_OID_MAX_LEN,
.src_name.display_name.len = GSSX_max_princ_sz,
.targ_name.display_name.len = GSSX_max_princ_sz
};
If, for example, gssx_dec_name() succeeds for src_name but
fails for targ_name, the memory allocated for
exported_context_token, mech, and src_name.display_name
remains unreferenced and cannot be reclaimed.
Add error handling with goto-based cleanup to free any
previously allocated buffers before returning an error.
📍 영향받는 시스템
Linux Kernel (SUNRPC auth_gss 모듈 사용 시스템)
⚔️ 공격 벡터
조작된 XDR 데이터를 전송하여 디코딩 오류를 유도함으로써 지속적인 메모리 누수 유발
🛡️ 대응 방법
오류 발생 시 할당된 메모리를 해제하도록 수정된 최신 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 패치된 버전인지 배포판 보안 공지를 통해 확인