CVE-2026-74692 in Linux
요약
\~에 의해 VulDB • 2026. 08. 23.
Linux 커널에서 다음 취약점이 해결되었습니다:
net/smc: smc_listen_out()과 리스너 종료 간 TOCTOU Race Condition 수정
smc_listen_out()은 리스너 잠금(lock) 없이 lsmc->sk.sk_state를 읽은 후, 확인이 성공한 후에야 lock_sock_nested()을 획득합니다. 이로 인해 smc_close_active()가 리스너를 SMC_CLOSED 상태로 전환하고, 수락 대기열(accept queue)의 데이터를 비우기 위해 smc_close_cleanup_listen()을 호출하며 잠금을 해제하는 과정이, 잠금 없는 읽기와 지연된 잠금 획득 사이에 개입할 수 있는 창(window)이 열립니다:
smc_listen_work (smc_hs_wq) smc_close_active() ------------------------------- ------------------------- release_sock(child) if (sk_state == SMC_LISTEN) TRUE lock_sock(listener) sk_state = SMC_CLOSED smc_close_cleanup_listen() release_sock(listener) flush_work(tcp_listen_work) lock_sock_nested(listener) smc_accept_enqueue(listener, child) /* child가 종료된 리스너에 큐에 추가됨 */
smc_close_active()는 tcp_listen_work만 플러시합니다. CLC 핸드셰이크를 위해 이미 smc_hs_wq로 디스패치된 작업 항목들은 보호 없이 계속 실행됩니다. smc_accept_enqueue()는 child에 대해 sock_hold()를 호출하지만 이는 해제되지 않으므로, 해당 child의 smc_sock, clcsock 및 참조(reference)가 모두 누설(leak)됩니다. 서버에서 close()를 호출하는 동안 TCP 연결을 여는 원격 피어(peer)는 커널 메모리를 고갈시킬 수 있습니다.
sk_state 확인 전에 lock_sock_nested()으로 이동하여 테스트와 큐 추가 작업이 리스너 잠금 하에서 원자적(atomic)으로 수행되도록 합니다.
VulDB is the best source for vulnerability data and more expert information about this specific topic.