🇰🇷 한글 설명
Linux 커널의 svc_rdma 모듈에서 생성 실패 시 리스너를 해제하는 과정 중 메모리 관리 오류가 발생합니다. kfree()가 svc_xprt_free()를 우회하여 네트워크 네임스페이스 참조를 제대로 해제하지 못하거나, 모듈 참조 횟수를 잘못 계산하여 시스템 불안정을 초래할 수 있습니다.
💡 쉬운 설명
컴퓨터의 핵심 운영체제인 리눅스에서 특정 기능을 만들다가 실패했을 때, 사용하던 메모리를 제대로 정리하지 못하는 버그입니다. 이로 인해 시스템의 자원이 낭비되거나 시스템이 예기치 않게 멈출 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
svcrdma: Use svc_xprt_put to free listener on create failure
svc_rdma_create() calls kfree(cma_xprt) when
svc_rdma_create_listen_id() fails. svc_xprt_init() has already
acquired a net namespace reference via get_net_track(); kfree
bypasses svc_xprt_free() which releases it.
Replace the kfree() with svc_xprt_put() so the kref_init birth
reference drops to zero and svc_xprt_free() dispatches
svc_rdma_free() to clean up properly. sc_cm_id is still NULL
at that point; the preceding patch added the necessary NULL
guard in svc_rdma_free().
svc_xprt_free() also drops the module reference via
module_put(), but the caller _svc_xprt_create() does the same
on xpo_create failure, double-putting the single
try_module_get() it acquired. Take a compensating
__module_get() before the svc_xprt_put() to keep the count
balanced, matching the convention in svc_rdma_accept()'s error
path.
📍 영향받는 시스템
Linux Kernel (svc_rdma 모듈을 사용하는 버전)
⚔️ 공격 벡터
로컬 공격자가 특정 RDMA 관련 시스템 호출을 반복하여 메모리 누수 또는 커널 패닉 유도
🛡️ 대응 방법
커널 패치를 적용하여 kfree() 대신 svc_xprt_put()를 사용하고 모듈 참조 횟수를 올바르게 조정해야 함
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 최신 패치 버전인지 확인하십시오.