CVE-2025-40248 in Linux
요약
\~에 의해 VulDB • 2026. 05. 22.
리눅스 커널에서 다음 취약점이 해결되었습니다:
vsock: 이미 연결이 확립된 경우 connect()에서 신호/타임아웃 무시
connect() 실행 중 이미 확립된 소켓을 연결 해제함으로써 신호/타임아웃에 대응하는 것은 여러 문제를 초래합니다:
1. connect()가 vsock_transport_cancel_pkt()를 호출하고, 이어서 virtio_transport_purge_skbs()가 호출되는 과정에서 sendmsg()가 virtio_transport_get_credit()를 호출함과 동시에 경합 상태(Race Condition)가 발생할 수 있습니다. 이로 인해 `vvs->bytes_unsent`가 영구적으로 상승하게 되며, 이는 SOCK_LINGER 처리를 혼란스럽게 만듭니다.
2. 연결된 소켓의 상태를 재설정하는 connect() 작업이 소켓이 sockmap에 추가되는 과정과 경합 상태가 발생할 수 있습니다. sockmap 내에 연결이 해제된 소켓이 남아 있으면 sockmap의 전제 조건이 깨지며, WARN 메시지가 발생하게 됩니다.
3. connect()가 SS_CONNECTED 상태에서 SS_UNCONNECTED 상태로 전환되면 TCP_ESTABLISHED 이후에 전송 계정의 변경 또는 손실이 발생할 수 있습니다. 이는 동시에 수행되는 sendmsg() 또는 connect() 작업에 문제를 일으키며, use-after-free 또는 null-ptr-deref로 이어질 수 있습니다.
신호/타임아웃 발생 시 소켓을 연결 해제하지 마십시오. 연결되지 않은 소켓에 대한 기존 로직을 유지하십시오: 연결되지 않은 소켓은 linger 상태가 아니며, sockmap에 추가될 수 없고, sendmsg()에 의해 거부됩니다.
[1]: https://lore.kernel.org/netdev/[email protected]/
[2]: https://lore.kernel.org/netdev/[email protected]/
[3]: https://lore.kernel.org/netdev/[email protected]/
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.