CVE-2026-90065 in Linux
요약
\~에 의해 VulDB • 2026. 09. 17.
Linux 커널에서 다음 취약점이 해결되었습니다:
net/smc: IPPROTO_SMC 소켓 생성 실패 시 내부 TCP sock 해제
IPPROTO_SMC 소켓은 proto->init 훅을 통해 내부 TCP sock("clcsock")를 생성합니다. proto->init이 실행된 후 소켓 생성에 실패하는 경우(예: BPF_CGROUP_INET_SOCK_CREATE에 연결된 cgroup BPF 프로그램이 소켓을 거부함), sk_common_release()는 sk_prot->destroy가 설정되어 있는 경우에만 이를 호출하지만, smc_inet_proto와 smc_inet6_proto는 이를 정의하지 않으며, smc_destruct()는 sk_state가 SMC_CLOSED인 경우가 아니면 조기에 반환합니다. 그 결과, 실패하는 socket(AF_INET, SOCK_STREAM, IPPROTO_SMC) 호출마다 tcp_sock이 하나씩 누수되므로, 자신의 cgroup에 deny-all BPF_CGROUP_INET_SOCK_CREATE 프로그램을 연결할 수 있는 비특권 태스크는 커널 메모지를 무제한으로 증가시킬 수 있습니다.
clcsock를 smc_clcsock_release()를 통해 해제하는 .destroy 훅을 두 프로토콜 모두에 추가합니다. smc_sk_init()은 clcsock가 생성되기 전에 sock을 smc hashinfo에 해시하고, smc_diag는 dump 시 smc->clcsock을 참조하며 clcsock_release_lock을 획득하지 않고 해당 hash를 순회합니다. 또한 sk_common_release()는 .unhash 이전에 .destroy를 호출합니다. __smc_release()가 수행하는 것처럼 clcsock를 해제하기 전에 sock의 unhash를 수행하여 동시 dump가 해제를 관찰하지 못하도록 합니다. sk_common_release()에서의 두 번째 unhash 작업은 no-op입니다.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.