🇰🇷 한글 설명
Linux 커널의 NFSD에서 서버 간 복사(inter-server copy) 수행 시 Use-After-Free 취약점이 발견되었습니다. CLOSE 요청이 FREE_STATEID 요청보다 먼저 도착할 경우, 이미 해제된 메모리 영역에 접근하여 오류가 발생할 수 있습니다.
💡 쉬운 설명
데이터를 복사하는 과정에서 컴퓨터가 이미 사용이 끝난 메모리 공간을 다시 사용하려고 시도할 때 발생하는 문제입니다. 이로 인해 시스템이 충돌하거나 보안 문제가 생길 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
NFSD: fix use-after-free on source server when doing inter-server copy
Use-after-free occurred when the laundromat tried to free expired
cpntf_state entry on the s2s_cp_stateids list after inter-server
copy completed. The sc_cp_list that the expired copy state was
inserted on was already freed.
When COPY completes, the Linux client normally sends LOCKU(lock_state x),
FREE_STATEID(lock_state x) and CLOSE(open_state y) to the source server.
The nfs4_put_stid call from nfsd4_free_stateid cleans up the copy state
from the s2s_cp_stateids list before freeing the lock state's stid.
However, sometimes the CLOSE was sent before the FREE_STATEID request.
When this happens, the nfsd4_close_open_stateid call from nfsd4_close
frees all lock states on its st_locks list without cleaning up the copy
state on the sc_cp_list list. When the time the FREE_STATEID arrives the
server returns BAD_STATEID since the lock state was freed. This causes
the use-after-free error to occur when the laundromat tries to free
the expired cpntf_state.
This patch adds a call to nfs4_free_cpntf_statelist in
nfsd4_close_open_stateid to clean up the copy state before calling
free_ol_stateid_reaplist to free the lock state's stid on the reaplist.
📍 영향받는 시스템
Linux Kernel (NFSD 관련 모듈 포함 버전)
⚔️ 공격 벡터
조작된 NFS4 프로토콜 요청(CLOSE를 FREE_STATEID보다 먼저 전송)을 통한 원격 공격 가능
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인하십시오.