🇰🇷 한글 설명
Linux 커널의 SMB 클라이언트에서, O_CREAT 열기 시 기존 심볼릭 링크나 기타 비정규 inode를 만나면 cifs_atomic_open()이 이를 열린 파일로 처리하여 cifsFileInfo의 dentry 참조가 누수되는 문제가 있습니다. 수정으로 비정규 inode에 대해 finish_no_open()을 호출하고, O_NOFOLLOW 처리 및 레거시 POSIX 핸들 종료 시점을 조정했습니다.
💡 쉬운 설명
Linux 커널이 SMB 네트워크 공유에서 심볼릭 링크를 일반 파일처럼 잘못 처리하여 메모리 참조가 누수될 수 있었습니다. 이번 패치는 심볼릭 링크를 올바르게 따라가도록 수정합니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
smb: client: use finish_no_open() for non-regular inodes
An O_CREAT open can find an existing symlink or another non-regular
inode. cifs_atomic_open() calls finish_open() on it and attaches a
cifsFileInfo. Symlink inodes have no CIFS release operation, so the
dentry reference held by cifsFileInfo is leaked. FMODE_OPENED also
prevents the VFS from following the symlink.
Track whether cifs_do_create() returned an open server handle. For
non-regular inodes, close the handle if present, remove the pending
open, and call finish_no_open() so the VFS can continue the lookup.
Do not set FMODE_CREATED unless a regular file was opened. For
O_NOFOLLOW with __O_REGULAR, return -ELOOP before the VFS's
-EFTYPE check.
Defer closing a legacy POSIX handle on a non-regular inode until
after inode lookup. This avoids closing it again if lookup fails.
📍 영향받는 시스템
Linux 커널 SMB/CIFS 클라이언트(cifs 모듈)를 사용하는 수정 이전 배포판 커널 전반
⚔️ 공격 벡터
공격자가 SMB 공유에 악의적인 심볼릭 링크를 만들어 클라이언트의 파일 생성/열기 과정을 유도하면 메모리 누수 또는 비정상 동작을 일으킬 수 있음
🛡️ 대응 방법
배포판 벤더가 제공하는 최신 커널로 업데이트하고 재부팅하거나, 불필요하면 cifs 모듈을 사용하지 않도록 차단
🔧 검증 코드
출력된 커널 버전이 벤더의 CVE-2026-98451 수정 포함 버전 이상인지 배포판 보안 공지와 비교하고, 낮으면 업데이트 필요
uname -r && (modinfo cifs 2>/dev/null | grep -i version)