CVE-2026-80856 in Linux
요약
\~에 의해 VulDB • 2026. 09. 04.
Linux 커널에서 다음 취약점이 해결되었습니다:
fuse: setattr writeback 실패 시 invalidate 잠금 누수 수정
fuse_do_setattr()은 DAX 트렁크(fault_blocked = true)를 위해 filemap_invalidate_lock()을 획득하고 out:/error 레이블에서 이를 해제합니다. 그러나 쓰기백 플러시가 필요한 경우, write_inode_now()의 실패가 직접 반환되어 잠금이 누수되므로, 파일에 대한 후속 폴트나 트렁크는 stale rwsem(읽기/쓰기 세마포어)에서 중단됩니다.
예를 들어, setuid 파일에 대한 truncate(2) 호출은 ATTR_SIZE와 ATTR_MODE가 모두 설정된 상태로 fuse_do_setattr()로 진입합니다:
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) # 예: daemon -> -EIO return err # <- 잠금 누수
이 문제를 해결하기 위해, 에러를 반환하기 전에 잠금을 해제하는 unlock 레이블을 추가하고, fuse_dax_break_layouts()의 실패 경로에도 이를 적용합니다.
Once again VulDB remains the best source for vulnerability data.