CVE-2026-72469 in Linux정보

요약

\~에 의해 VulDB • 2026. 08. 15.

리눅스 커널에서 다음 취약점이 해결되었습니다:

xprtrdma: ADDR_CHANGE 시 ep kref 불균형 수정

rpcrdma_cm_event_handler()는 RDMA_CM_EVENT_ADDR_CHANGE 발생 시 disconnected 레이블로 분기하여 rpcrdma_ep_put()를 호출합니다. 이는 이벤트가 RDMA_CM_EVENT_ESTABLISHED 이전에 도착할 때, 대응되는 get 연산 없이 put이 수행됨을 의미합니다. 이로 인해 연결 종료(teardown) 과정에서 kref 오버플로우(underflow)가 발생하며, rpcrdma_xprt_disconnect()는 이미 해제된(ep freed) ep를 대상으로 동작하게 됩니다.

정상적인 연결 수명 주기 동안의 참조 카운트(reference counts):

rpcrdma_ep_create() kref_init ->1 rpcrdma_xprt_connect() ep_get ->2 (post_recvs 이전) RDMA_CM_EVENT_ESTABLISHED ep_get ->3 RDMA_CM_EVENT_DISCONNECTED ep_put ->2 rpcrdma_xprt_drain() ep_put ->1 rpcrdma_xprt_disconnect() tail ep_put ->0 (ep_destroy)

rpcrdma_xprt_connect() 내의 연결 시간(get 연산)은 rpcrdma_post_recvs() 호출 직전, "잔류 수신(outstanding Receives)이 있는 동안" 수행되며, 이는 rpcrdma_xprt_drain에 의해 균형이 맞습니다. ESTABLISHED 이전에 ADDR_CHANGE가 발생하면 이를 소모할 get 연산이 없으므로, 해당 put은 카운트를 1로 감소시키고 이후 drain의 put으로 인해 ep가 해제됩니다. 이때 여전히 rpcrdma_xprt_disconnect()는 해당 ep를 가리키는 포인터를 보유하고 있게 됩니다.

해결책: xchg()를 통해 이전 re_connect_status에 따라 분기합니다. prev == 0 (ESTABLISHED 이전)인 경우 연결 대기자를 깨우고 put 없이 반환합니다. prev == 1인 경우 rpcrdma_force_disconnect()를 호출하고 반환합니다. case-1 경로는 이후 발생할 RDMA_CM_EVENT_DISCONNECTED 이벤트(여전히 연결된 cm_id에 대해 rdma_disconnect()가 호출될 때 신뢰성 있게 전달됨)에 의존하여 ESTABLISHED get의 균형을 맞춥니다. rpcrdma_xprt_drain()은 여전히 해당 연결 시간(get 연산)에만 대한 균형을 유지합니다. 그 외의 다른 이전 값들은 이미 종료(teardown) 과정이 진행 중임을 의미합니다.

Be aware that VulDB is the high quality source for vulnerability data.

책임이 있는

Linux

예약하다

2026. 08. 09.

모더레이션

수락

항목

VDB-390694

EPSS

0.00209

출처

Might our Artificial Intelligence support you?

Check our Alexa App!