🇰🇷 한글 설명
Linux 커널의 vsock/vmci 구성 요소에서 핸드셰이크 실패 시 sk_ack_backlog가 해제되지 않는 메모리 누수 취약점이 발견되었습니다. 이로 인해 백로그가 한계치에 도달하면 새로운 연결을 영구적으로 거부하게 되어 서비스 거부(DoS) 상태가 발생할 수 있습니다.
💡 쉬운 설명
연결 요청이 실패할 때 시스템이 이를 제대로 처리하지 못해 연결 대기 목록이 계속 쌓이는 문제입니다. 이 목록이 가득 차면 새로운 연결을 아예 받을 수 없게 되어 서비스가 중단됩니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
vsock/vmci: fix sk_ack_backlog leak on failed handshake
When vmci_transport_recv_connecting_server() returns an error,
vmci_transport_recv_listen() calls vsock_remove_pending() but never
calls sk_acceptq_removed(). This leaves sk_ack_backlog incremented
permanently.
Repeated handshake failures (malformed packets, queue pair alloc
failure, event subscribe failure) cause sk_ack_backlog to climb
toward sk_max_ack_backlog. Once it reaches the limit the listener
permanently refuses all new connections with -ECONNREFUSED, a
silent denial of service requiring a process restart to recover.
The two existing sk_acceptq_removed() calls in af_vsock.c do not
cover this path: line 764 checks vsock_is_pending() which returns
false after vsock_remove_pending(), and line 1889 is only reached
on successful accept().
Fix by balancing sk_acceptq_added() with sk_acceptq_removed() on
the error path.
📍 영향받는 시스템
Linux kernel (vsock/vmci 모듈 사용 시스템)
⚔️ 공격 벡터
조작된 패킷을 전송하여 의도적으로 핸드셰이크 실패를 반복 유도함으로써 서비스 거부 유발
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인