🇰🇷 한글 설명
Linux 커널의 SUNRPC 구성 요소에서 RPC 요청이 두 번 지연될 때 rq_xprt_ctxt 포인터가 적절히 초기화되지 않아 발생하는 Double Free 취약점입니다. 이로 인해 이미 해제된 메모리 객체에 다시 접근하여 시스템 오류(Oops)를 유발하거나 보안 위협을 초래할 수 있습니다.
💡 쉬운 설명
컴퓨터가 이미 사용이 끝나서 버린 메모리 주소를 실수로 또 버리려고 시도하면서 시스템이 혼란에 빠지는 문제입니다. 이 과정에서 시스템이 갑자기 멈추거나 해킹 공격에 이용될 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
SUNRPC: double free xprt_ctxt while still in use
When an RPC request is deferred, the rq_xprt_ctxt pointer is moved out
of the svc_rqst into the svc_deferred_req.
When the deferred request is revisited, the pointer is copied into
the new svc_rqst - and also remains in the svc_deferred_req.
In the (rare?) case that the request is deferred a second time, the old
svc_deferred_req is reused - it still has all the correct content.
However in that case the rq_xprt_ctxt pointer is NOT cleared so that
when xpo_release_xprt is called, the ctxt is freed (UDP) or possible
added to a free list (RDMA).
When the deferred request is revisited for a second time, it will
reference this ctxt which may be invalid, and the free the object a
second time which is likely to oops.
So change svc_defer() to *always* clear rq_xprt_ctxt, and assert that
the value is now stored in the svc_deferred_req.
📍 영향받는 시스템
SUNRPC를 사용하는 Linux 커널 (패치 전 버전)
⚔️ 공격 벡터
조작된 RPC 요청을 반복적으로 지연시켜 메모리 해제 오류를 유도하는 방식
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전을 확인하여 해당 취약점이 해결된 최신 패치 버전인지 확인합니다.