🇰🇷 한글 설명
Linux 커널의 fs 계층에서 forget_cached_acl() 함수가 ACL_DONT_CACHE 상태를 보존하지 못하는 취약점이 발견되었습니다. 이로 인해 FUSE 파일 시스템에서 ACL 캐시 무효화가 제대로 이루어지지 않아 오래된(stale) ACL 값이 반환될 수 있는 기능적 결함이 존재합니다.
💡 쉬운 설명
파일의 권한 정보(ACL)를 저장하는 방식에 오류가 있어, 권한이 변경되었음에도 시스템이 옛날 권한 정보를 그대로 사용하는 문제가 있습니다. 이로 인해 보안 설정이 의도대로 적용되지 않을 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
fs: preserve ACL_DONT_CACHE state in forget_cached_acl()
The ACL_DONT_CACHE state is meant to be a constant state for the inode
for filesystems that want to opt out of posix acl caching.
Commit facd61053cff1 ("fuse: fixes after adapting to new posix acl api")
used this facility to opt out of posix acl caching for fuse inodes with
fuse server that does not negotiate FUSE_POSIX_ACL (fc->posix_acl).
The commit also takes care to gate the forget_all_cached_acls() call in
fuse_set_acl() on fc->posix_acl because there is no need for it, but
there are other placed in fuse code which call forget_all_cached_acls()
unconditional to fc->posix_acl and those cause the loss of the
ACL_DONT_CACHE state.
This is not only a functional bug. Properly timed, a get_acl() from this
fuse filesystem can return a stale cached value, as was observed in tests,
because set_acl() does not invalidate the unintentional acl cache.
We could fix this in fuse, but it actually makes no sense for the vfs
helper forget_cached_acl() to invalidate the ACL_DONT_CACHE state, so
let it not do that to fix fuse and future users of ACL_DONT_CACHE.
📍 영향받는 시스템
ACL_DONT_CACHE 기능을 사용하는 Linux 커널 (특히 FUSE 파일 시스템 사용 환경)
⚔️ 공격 벡터
직접적인 원격 공격보다는 권한 변경 시 캐시가 갱신되지 않는 점을 이용한 권한 우회 가능성
🛡️ 대응 방법
해당 수정 사항(commit facd61053cff1 관련 패치)이 포함된 최신 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인
📊 CVSS Vector String
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:N
💻 영향받는 소프트웨어
NVIDIA vGPU Guest Driver for Linux