🔍 CVE-2026-80856

0.0
CVSS Score
UNKNOWN
2026-09-04
2026-10-19 09:17
✅ 완료

🇰🇷 한글 설명

Linux 커널의 FUSE 파일 시스템에서 setattr 작업 중 writeback 실패 시 invalidate lock이 해제되지 않고 누수되는 취약점입니다. 이로 인해 해당 파일에 대한 이후의 fault 또는 truncate 작업이 stale rwsem으로 인해 중단(stall)될 수 있습니다.

💡 쉬운 설명

파일의 속성을 변경하는 과정에서 오류가 발생했을 때, 시스템이 사용하던 잠금 장치를 제대로 풀어주지 않는 문제입니다. 이로 인해 해당 파일에 접근하려고 하면 시스템이 응답하지 않고 멈춰버릴 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: fuse: fix invalidate lock leak on setattr writeback failure fuse_do_setattr() takes filemap_invalidate_lock() for a DAX truncate (fault_blocked = true) and releases it at the out:/error: labels. But when a writeback flush is also needed, a write_inode_now() failure returns directly and leaks the lock, so any later fault or truncate on the file stalls on the stale rwsem. For example, truncate(2) on a setuid file reaches fuse_do_setattr() with both ATTR_SIZE and ATTR_MODE set: truncate(2) └─ do_truncate() ├─ dentry_needs_remove_privs() # S_ISUID └─ notify_change() # KILL_SUID -> ATTR_MODE └─ fuse_setattr() # no killpriv: │ # ia_valid |= ATTR_MODE └─ fuse_do_setattr() ├─ filemap_invalidate_lock() # IS_DAX && is_truncate └─ write_inode_now() # is_wb && ATTR_MODE └─ if (err) # e.g. daemon -> -EIO return err # <- lock leaked Fix this by adding an unlock label that releases the lock before returning the error, and use it for the fuse_dax_break_layouts() failure path as well.

📍 영향받는 시스템

Linux kernel (FUSE module 사용 시스템)

⚔️ 공격 벡터

FUSE 파일 시스템을 사용하는 환경에서 특정 조건(DAX truncate 및 writeback 실패)을 유도하여 시스템 교착 상태 유발

🛡️ 대응 방법

Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 invalidate lock 누수 수정 사항 반영

🔧 검증 코드

출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인

Shell / Script
uname -r

💻 영향받는 소프트웨어

Linux Kernel