🔍 CVE-2026-89684

7.5
CVSS Score
HIGH
2026-09-11
2026-10-19 09:18
✅ 완료

🇰🇷 한글 설명

Linux 커널의 nfsd 구성 요소에서 nfs4_init_cp_state 함수 호출 시 발생하는 레이스 컨디션 취약점입니다. 새로운 cpntf 항목이 IDR에 등록된 후 리스트에 추가되기 전의 짧은 간극을 이용해 OFFLOAD_CANCEL 요청을 보내면, 초기화되지 않은 리스트를 참조하여 서버가 충돌(Oops)을 일으킬 수 있습니다.

💡 쉬운 설명

NFS 서버가 데이터를 처리하는 과정에서 순서가 어긋나 발생하는 오류로, 공격자가 특정 요청을 보내 서버를 강제로 중단시킬 수 있습니다. 이는 서버의 안정성을 해치고 서비스 거부(DoS) 상태를 유발할 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: nfsd: fix cpntf publish race in nfs4_init_cp_state nfs4_alloc_init_cpntf_state() published the new cpntf entry into the s2s_cp_stateids IDR (with cs_type set) in one s2s_cp_lock section, then took the lock again to list_add() it onto p_stid->sc_cp_list. In the gap the entry is reachable by so_id but cp_list is still {NULL,NULL} from kzalloc. A racing OFFLOAD_CANCEL (so_id is echoed to the client as cnr_stateid, so any NFSv4.2 client can drive it) reaches manage_cpntf_state() -> _free_cpntf_state_locked() and does list_del() on the zeroed list_head, oopsing the server. Fold the cs_type assignment and the list_add() into the same critical section as idr_alloc_cyclic(), so a concurrent lookup either misses the entry or sees a fully linked cp_list. INIT_LIST_HEAD() the entry after allocation and switch _free_cpntf_state_locked() to list_del_init() so a stale unlink is a no-op. nfs4_init_copy_state() passes NULL p_stid and skips the list_add, preserving NFS4_COPY_STID semantics.

📍 영향받는 시스템

NFSv4.2를 사용하는 Linux 커널 기반 시스템

⚔️ 공격 벡터

NFSv4.2 클라이언트가 조작된 OFFLOAD_CANCEL 요청을 전송하여 레이스 컨디션 유도

🛡️ 대응 방법

해당 취약점이 수정된 최신 Linux 커널 버전으로 업데이트

🔧 검증 코드

출력된 커널 버전이 해당 취약점이 패치된 보안 업데이트 버전인지 확인

Shell / Script
uname -r

📊 CVSS Vector String

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

💻 영향받는 소프트웨어

Linux Kernel