🔍 CVE-2026-98982

7.8
CVSS Score
HIGH
2026-10-23
2026-10-24 14:16
✅ 완료

🇰🇷 한글 설명

Linux 커널에서 파이프, 소켓 등에 쓰이는 의사(pseudo) dentry가 마운트의 루트가 될 수 있어 발생하는 문제가 수정되었습니다. 해당 dentry가 bpf 토큰 파일에서 바인드 마운트될 경우, 경쟁 상태로 인해 이미 해제된 dentry에 접근하여 use-after-free가 발생할 수 있습니다. 수정은 DCACHE_NORCU dentry를 루트로 가진 마운트의 복제를 거부하도록 합니다.

💡 쉬운 설명

커널이 이미 사용이 끝난 내부 파일 정보를 잘못 참조할 수 있는 결함입니다. 이를 악용하면 시스템 메모리가 손상되어 권한 상승이나 시스템 불안정으로 이어질 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: namespace: don't let a pseudo dentry become the root of a mount d_alloc_pseudo() hands out dentries for pipes, sockets and other files that are never anyone's child or parent. They carry DCACHE_NORCU and dentry_free() frees them right away because no lockless path walk can ever reach them. That holds as long as such a dentry isn't the root of a mount. But bind mounting /proc/self/fd/<fd> of such a file does exactly that. Most callers of alloc_file_pseudo() put their files on kernel-internal mounts and may_copy_tree() refuses those. bpf_token_create() doesn't. It places the token file on the bpffs mount the caller handed it and that mount is in the caller's mount namespace so the clone goes through: mount --bind /proc/self/fd/<token> <file> open_tree(tokfd, "", AT_EMPTY_PATH | OPEN_TREE_CLONE) + move_mount() __follow_mount_rcu() then loads ->mnt_root of that mount, reads d_seq and d_flags of the dentry and only then checks mount_lock. The dentry can be gone by then. The final mntput() of an unmounted parent unhooks a child that stayed attached to it under mount_lock alone. When the child's holder does the final put right after that the root is dput() and freed immediately while a walker that found the mount hashed still looks at it. Refuse to clone a mount with a DCACHE_NORCU dentry as its root. Nothing sensible can be done with a bind mount of a bpf token anyway.

📍 영향받는 시스템

수정 이전의 Linux 커널 (bpf 토큰 및 마운트 네임스페이스 기능을 사용하는 버전)

⚔️ 공격 벡터

일반 사용자가 bpf 토큰 파일을 /proc/self/fd 경로로 바인드 마운트한 뒤 경쟁 상태를 유발하여 해제된 dentry를 참조하게 만듦

🛡️ 대응 방법

Linux 커널을 CVE-2026-98982 수정이 포함된 최신 안정 버전으로 업데이트하고 재부팅

🔧 검증 코드

출력된 커널 버전이 배포판의 CVE-2026-98982 패치가 포함된 버전 이상인지 보안 공지나 패키지 변경 로그와 대조하여 확인

Shell / Script
uname -r

📊 CVSS Vector String

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

💻 영향받는 소프트웨어

Linux Kernel