🔍 CVE-2026-89688

9.8
CVSS Score
CRITICAL
2026-09-11
2026-10-19 09:18
✅ 완료

🇰🇷 한글 설명

Linux 커널의 nfsd 구성 요소에서 seqid_op 재시도 시 stateowner가 아닌 stateid를 해제해야 하는 오류가 발견되었습니다. 이로 인해 참조 횟수(refcount) 언더플로우가 발생하여 Use-After-Free 취약점이 유발되거나, 반대로 stid 참조가 누수되어 시스템 자원이 고갈될 수 있습니다.

💡 쉬운 설명

리눅스 서버의 파일 공유 기능(NFS)에서 메모리를 관리하는 규칙이 잘못 적용되어 시스템이 불안정해질 수 있습니다. 이 오류를 이용하면 해커가 시스템의 메모리를 조작하거나 서버를 멈추게 할 위험이 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: nfsd: drop the stateid, not the stateowner, on seqid_op replay retry In nfs4_preprocess_seqid_op() the stateid is obtained from nfsd4_lookup_stateid(), which holds a reference on the nfs4_stid (sc_count) but takes no reference on the stateowner. openlockstateid() merely casts that stid and likewise takes no reference. When nfsd4_cstate_assign_replay() returns -EAGAIN (the replay owner is being torn down, RP_UNHASHED) it has not taken a stateowner reference on that path. The error handling nevertheless called nfs4_put_stateowner(stp->st_stateowner), dropping an so_count reference the function never acquired -- risking a stateowner refcount underflow and use-after-free -- while leaking the sc_count reference held on the stid. The leaked stid reference can also stall a concurrent nfsd4_close_open_stateid() waiting for sc_count to drop. Drop the reference actually held -- the stid -- before retrying. The stateowner stays alive through the reference held by the stid. This mirrors the open path in nfsd4_process_open1(), where the put balances a reference that path explicitly holds on the stateowner.

📍 영향받는 시스템

Linux Kernel (nfsd 모듈을 사용하는 버전)

⚔️ 공격 벡터

조작된 NFSv4 요청을 통해 특정 상태 ID 재시도 경로를 유도하여 메모리 참조 오류 유발

🛡️ 대응 방법

Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트

🔧 검증 코드

현재 실행 중인 커널 버전을 확인하여 해당 취약점이 해결된 패치 버전인지 확인

Shell / Script
uname -r

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

💻 영향받는 소프트웨어

Linux Kernel