🇰🇷 한글 설명
Linux 커널에서 BPF LSM 프로그램이 path_unlink 및 path_rmdir 훅에 연결된 경우, 해당 훅이 대상 inode의 i_rwsem 잠금을 획득하기 전에 실행되어 잠금 없이 xattr이 수정될 수 있는 문제입니다. 이를 해결하기 위해 두 훅을 d_inode_locked_hooks 목록에서 제거하여 잠금을 직접 수행하는 bpf_[set|remove]_dentry_xattr 변형이 사용되도록 했습니다.
💡 쉬운 설명
보안 검사 프로그램이 파일을 삭제하는 순간 잠금 없이 파일 속성을 바꿀 수 있는 결함입니다. 이 결함은 파일 속성이 동시에 충돌하거나 잘못 변경될 수 있는 위험을 만듭니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
bpf: fs/xattr: don't assume the inode is locked in path_unlink/path_rmdir
bpf_lsm_has_d_inode_locked() makes the verifier rewrite
bpf_[set|remove]_dentry_xattr() to the _locked variants, which assume
that the caller already holds the inode's i_rwsem. The path_unlink and
path_rmdir hooks are listed, but security_path_unlink() and
security_path_rmdir() run before vfs_unlink()/vfs_rmdir() take the
victim inode's i_rwsem, so a sleepable BPF LSM program attached to
either hook mutates the victim's xattrs without the lock held.
Drop the two path hooks from d_inode_locked_hooks so that the verifier
keeps the locking bpf_[set|remove]_dentry_xattr() variants, which take
the lock themselves.
📍 영향받는 시스템
BPF LSM을 사용하는 Linux 커널 (패치 이전 버전, 정확한 영향 버전은 커널 메인라인 및 배포판 패치 노트 확인 필요)
⚔️ 공격 벡터
권한이 있는 로컬 사용자가 path_unlink/path_rmdir 훅에 연결된 sleepable BPF LSM 프로그램을 통해 잠금 없이 대상 inode의 xattr을 변경
🛡️ 대응 방법
배포판 제공 최신 Linux 커널 보안 업데이트를 적용하고 재부팅
🔧 검증 코드
출력된 커널 버전을 배포판 보안 공지 또는 커널 패치 노트와 대조하여, 해당 수정이 포함된 빌드인지 확인합니다.