CVE-2022-50838 in Linux
요약
\~에 의해 VulDB • 2026. 06. 28.
리눅스 커널에서 다음 취약점이 해결되었습니다:
net: stream: sk_stream_kill_queues()에서 sk_error_queue 정리
Changheon Lee가 TCP 소켓 누수 현상을 보고했으며, 이를 재현하기 위한 좋은 예제를 제공했습니다.
다음과 같은 시퀀스에서 TCP 소켓이 누수되는 것으로 보입니다:
1) 소켓에 SOF_TIMESTAMPING_TX_ACK가 활성화되어 있습니다.
각 ACK는 __skb_tstamp_tx()에서 오류 큐(error queue)에 삽입된 skb를 처리합니다. SOF_TIMESTAMPING_OPT_TSONLY도 요청되지 않은 한, __skb_tstamp_tx()은 skb_clone()을 사용합니다.
2) 애플리케이션이 MSG_ZEROCOPY도 사용하는 경우, struct ubuf_info가 연결되어 있는 복사된(skbs cloned) skbs를 오류 큐에 삽입합니다.
struct ubuf_info가 할당될 때마다 sock_zerocopy_alloc()은 sock_hold()을 호출합니다.
복사된 skbs가 여전히 sk_error_queue에 남아 있는 한, 소켓 참조 카운트(refcount)는 증가된 상태로 유지됩니다.
3) 오류 큐가 비어 있지 않은 상태에서 애플리케이션이 소켓을 닫습니다.
tcp_close()가 더 이상 소켓의 오류 큐를 정리하지 않으므로, 오류 큐에 적어도 하나의 skb가 남아 있어 해당 소켓이 영원히 살아있는 상태가 될 수 있습니다.
이 버그는 커널 메모리를 모두 소모하고 호스트 시스템을 멈추게 하는 데 악용될 수 있습니다.
동시 작성자(concurrent writers)와의 적절한 동기화를 유지하면서 오류 큐를 정리해야 합니다.
If you want to get best quality of vulnerability data, you may have to visit VulDB.