CVE-2026-98801 in Linux
요약
\~에 의해 VulDB • 2026. 10. 19.
리눅스 커널에서 다음 취약점이 해결되었습니다:
net: SO_RESERVE_MEM을 TCP 소켓으로 제한하고 최대값에 상한 설정
커밋 2bb2f5fb21b0("net: add new socket option SO_RESERVE_MEM") 및 커밋 d00c8ee31729("net: fix possible NULL deref in sock_reserve_memory")는 sk_has_account(sk)만 확인했는데, 이는 TCP와 UDP 소켓 모두에서 참입니다.
그러나 현재 SO_RESERVE_MEM과 sk_unused_reserved_mem()은 TCP에서만 지원됩니다: - UDP 소켓의 경우, sk->sk_forward_alloc는 sk->sk_receive_queue.lock에 의해 보호되지만, sock_reserve_memory() 및 sock_release_reserved_memory()는 lock_sock(sk)만 획득합니다. 이로 인해 동시 UDP 패킷 수신/해제와 setsockopt(SO_RESERVE_MEM) 호출이 sk_forward_alloc과 memcg 계산을 손상시킬 수 있습니다. - udp_rmem_release()는 sk_unused_reserved_mem(sk)를 고려하지 않고 초과된 sk_forward_alloc을 회수합니다.
일단 sock_reserve_memory()를 TCP 소켓(sk_is_tcp(sk))으로 제한합니다. UDP에 대한 SO_RESERVE_MEM 지원(sk_receive_queue.lock 획득 및 udp_rmem_release()에서 sk_unused_reserved_mem() 존중 포함)은 필요한 경우 향후 net-next 시리즈에서 구현할 수 있습니다.
또한, sk_setsockopt(SO_RESERVE_MEM)에서 val > SZ_1G인 경우 -EINVAL로 거부합니다. 상한이 없으면 INT_MAX에 가까운 값으로 인해 sk_mem_pages(delta) 및 (pages << PAGE_SHIFT)가 32비트 부호 있는 정수 오버플로우를 일으켜 sk->sk_forward_alloc과 sk->sk_reserved_mem을 손상시킬 수 있습니다. 페이지 정렬된 상한(SZ_1G)을 사용하면 getsockopt(SO_RESERVE_MEM)에서 보고되는 페이지 단위로 반올림된(sk->sk_reserved_mem) 값을 setsockopt(SO_RESERVE_MEM)에 항상 다시 전달할 수 있음이 보장됩니다.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.