🇰🇷 한글 설명
Linux 커널의 nfsd 구성 요소에서 nfsv4.0의 닫힌 파일에 대해 nfs4_show_open 함수가 NULL 포인터를 역참조하여 커널 패닉(Kernel Oops)을 유발하는 취약점입니다. 과거 커밋에서 상태 ID의 유효성 검사 방식이 변경되면서, 이미 닫힌 파일의 상태를 조회할 때 발생하던 문제가 해결되었습니다.
💡 쉬운 설명
리눅스 서버에서 NFS 서비스를 사용할 때, 이미 닫힌 파일을 조회하려고 하면 서버 시스템이 갑자기 멈추거나 오류가 발생할 수 있는 문제입니다. 이는 공격자가 시스템을 강제로 중단시키는 서비스 거부(DoS) 공격에 이용될 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
nfsd: prevent panic for nfsv4.0 closed files in nfs4_show_open
Prior to commit 3f29cc82a84c ("nfsd: split sc_status out of
sc_type") states_show() relied on sc_type field to be of valid
type before calling into a subfunction to show content of a
particular stateid. From that commit, we split the validity of
the stateid into sc_status and no longer changed sc_type to 0
while unhashing the stateid. This resulted in kernel oopsing
for nfsv4.0 opens that stay around and in nfs4_show_open()
would derefence sc_file which was NULL.
Instead, for closed open stateids forgo displaying information
that relies of having a valid sc_file.
To reproduce: mount the server with 4.0, read and close
a file and then on the server cat /proc/fs/nfsd/clients/2/states
[ 513.590804] Call trace:
[ 513.590925] _raw_spin_lock+0xcc/0x160
[ 513.591119] nfs4_show_open+0x78/0x2c0 [nfsd]
[ 513.591412] states_show+0x44c/0x488 [nfsd]
[ 513.591681] seq_read_iter+0x5d8/0x760
[ 513.591896] seq_read+0x188/0x208
[ 513.592075] vfs_read+0x148/0x470
[ 513.592241] ksys_read+0xcc/0x178
📍 영향받는 시스템
Linux kernel (nfsd module 사용 환경)
⚔️ 공격 벡터
NFSv4.0 클라이언트로 파일을 읽고 닫은 후, 서버에서 관련 상태 정보를 조회하는 행위를 통해 유도 가능
🛡️ 대응 방법
해당 취약점이 수정된 최신 버전의 Linux 커널로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전을 확인하여 해당 취약점이 패치된 최신 보안 업데이트 버전인지 확인하십시오.