CVE-2026-89698 in Linux
요약
\~에 의해 VulDB • 2026. 09. 11.
Linux 커널에서 다음 취약점이 해결되었습니다:
nfsd: nfsd_genl_rqstp 주소 필드를 sockaddr_storage로 확장
struct nfsd_genl_rqstp는 rq_daddr 및 rq_s_addr를 평범한 "struct sockaddr"(16바이트)로 선언합니다. IPv6 NFS 클라이언트가 연결되면, nfsd_genl_rpc_status_compose_msg() 함수에서 이러한 필드가 "struct sockaddr_in6 *" (28바이트)로 캐스팅되고 sin6_addr가 오프셋 8..24에서 읽히는데, 이는 16바이트의 sockaddr 필드 끝을 넘어 인접한 rq_flags 멤버까지 8바이트를 넘어서게 됩니다. 그 후 16바이트의 nla_put_in6_addr는 NFSD_A_RPC_STATUS_SADDR6/DADDR6 netlink 속성을 통해 사용자 공간으로 잘린 IPv6 주소 8바이트와 rq_flags 8바이트를 전송합니다.
이 취약점은 NFSD_CMD_RPC_STATUS_GET가 GENL_ADMIN_PERM 없이 GENL_CMD_CAP_DUMP을 사용하기 때문에, 네트워크 네임스페이스 내의 모든 비특권 프로세스에서 접근 가능합니다.
해결책은 rq_daddr 및 rq_s_addr를 struct sockaddr_storage로 확장하여 IPv6 캐스팅이 범위 내에서 작동하도록 하고, memcpy 호출 시 sizeof(struct sockaddr_storage) 바이트를 복사하여 전체 주소를 캡처하며, netlink를 통해 초기화되지 않은 꼬리 부분의 바이트가 유출되는 것을 방지하기 위해 genl_rqstp 스택 변수를 0으로 초기화하는 것입니다.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.