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.

출처

Do you want to use VulDB in your project?

Use the official API to access entries easily!