🇰🇷 한글 설명
Linux 커널의 NFS 데몬(nfsd) 초기화 순서 문제로 인한 NULL 포인터 참조 취약점입니다. nfs4_state_start_net() 함수에서 laundromat_work가 nfsd_ssc를 초기화되기 전에 접근하려 할 때 발생하며, 커널이 사용자 공간 응답 대기에 오래 걸리면 문제가 더 쉽게 발생합니다.
💡 쉬운 설명
Linux 서버의 NFS(네트워크 파일 공유) 기능이 시작될 때 필요한 것들이 준비되지 않은 상태에서 사용되려고 시도하는 문제입니다. 이로 인해 서버가 갑자기 멈추거나 충돌할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
nfsd: Initialize ssc before laundromat_work to prevent NULL dereference
In nfs4_state_start_net(), laundromat_work may access nfsd_ssc through
nfs4_laundromat -> nfsd4_ssc_expire_umount. If nfsd_ssc isn't initialized,
this can cause NULL pointer dereference.
Normally the delayed start of laundromat_work allows sufficient time for
nfsd_ssc initialization to complete. However, when the kernel waits too
long for userspace responses (e.g. in nfs4_state_start_net ->
nfsd4_end_grace -> nfsd4_record_grace_done -> nfsd4_cld_grace_done ->
cld_pipe_upcall -> __cld_pipe_upcall -> wait_for_completion path), the
delayed work may start before nfsd_ssc initialization finishes.
Fix this by moving nfsd_ssc initialization before starting laundromat_work.
📍 영향받는 시스템
Linux kernel (nfs4_state_start_net에서 NFS 데몬이 활성화된 모든 버전)
⚔️ 공격 벡터
로컬 또는 원격 NFS 요청을 통해 NFS 데몬 초기화 과정을 트리거하여 NULL 포인터 참조 유발
🛡️ 대응 방법
Linux 커널을 패치하여 nfsd_ssc를 laundromat_work 시작 전에 초기화
🔧 검증 코드
커널 버전과 NFS 서버 상태를 확인합니다. 패치된 버전이 설치되었고 NFS 서비스가 정상 작동하면 취약점이 해결된 것입니다.
uname -r | grep -E '^[0-9]+\.[0-9]+' && systemctl status nfs-server 2>/dev/null || echo 'NFS not active'