CVE-2026-89784 in Linux정보

요약

\~에 의해 VulDB • 2026. 09. 16.

리눅스 커널에서 다음 취약점이 해결되었습니다:

SUNRPC: rpcb_register_inet4/6에서 rpc_sockaddr2uaddr()의 반환값 확인

rpcb_register_inet4() 및 rpcb_register_inet6()는 NULL인지 여부를 확인하지 않고 `rpc_sockaddr2uaddr()`의 결과를 `map->r_addr`에 저장합니다. `rpc_sockaddr2uaddr()`은 최종적인 `kstrdup()` 호출이 실패할 경우 NULL을 반환하며, 이 검증되지 않은 NULL 값이 동기식 RPCBPROC_SET 인코딩 경로인 rpcb_register_call() -> rpc_call_sync() -> rpcb_enc_getaddr() -> encode_rpcb_string()로 전달됩니다. 여기서 첫 번째 문장은 `strlen(string)`이며, 이는 NULL 포인터를 역참조하여 커널oops(비정상 종료)를 유발합니다.

이 크래시는 v6.12에서 failslab 사용 시 재현되며, KASAN을 사용할 경우 NULL 역참조는 주소 0의 쉐도우 메모리 상에서 다음과 같은 결함으로 나타납니다:

Oops: general protection fault, probably for non-canonical address 0xdffffc0000000000 [#1] PREEMPT SMP KASAN
RIP: 0010:strlen (lib/string.c:409) Call Trace: encode_rpcb_string (net/sunrpc/rpcb_clnt.c:890) rpcb_enc_getaddr (net/sunrpc/rpcb_clnt.c:910) rpcauth_wrap_req_encode (net/sunrpc/auth.c:745) call_encode (net/sunrpc/clnt.c:1966) __rpc_execute (net/sunrpc/sched.c:952) rpc_run_task (net/sunrpc/clnt.c:1243) rpc_call_sync (net/sunrpc/clnt.c:1272) rpcb_v4_register (net/sunrpc/rpcb_clnt.c:500) svc_generic_rpcbind_set nfsd_rpcbind_set svc_register svc_setup_socket svc_addsock write_ports nfsctl_transaction_write vfs_write

이 크래시는 커널 내부 RPC 서비스(nfsd, lockd, nfs-callback)가 로컬 rpcbind에 등록할 때 발생하며, `rpc_sockaddr2uaddr()` 내의 작은 GFP_KERNEL `kstrdup()` 호출이 실패하기에 충분한 메모리 압박 조건 하에서 접근 가능합니다. 비동기식 getport 경로는 이미 이 정확한 실패 모드를 -ENOMEM 반환으로 처리하고 있습니다. 다만 두 가지 등록 헬퍼 함수(rpcb_register_inet4/6)만 검사를 생략했습니다.

해당 처리 방식을 반영하여, 주소가 인코더에 전달되기 전에 `rpc_sockaddr2uaddr()`이 NULL을 반환할 경우 -ENOMEM과 함께 중단되도록 수정합니다.

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

책임이 있는

Linux

예약하다

2026. 09. 11.

모더레이션

수락

항목

VDB-405570

EPSS

0.00210

출처

Do you want to use VulDB in your project?

Use the official API to access entries easily!