CVE-2026-64378 in Linux정보

요약

\~에 의해 VulDB • 2026. 07. 26.

리눅스 커널에서 다음 취약점이 해결되었습니다:

writeback: cgroup_writeback_umount()와 inode_switch_wbs() 간의 Race Condition 수정

컨테이너가 종료될 때, 다음과 같은 BUG_ON()이 가끔 트리거됩니다:

================================================================== VFS: sdb(ext4) 언마운트 후 사용 중인 Inode 존재 ------------[ cut here ]------------
kernel BUG at fs/super.c:695! CPU: 3 PID: 6 Comm: containerd-shim Tainted: G OE K 6.6 #1 pstate: 63400009 (nZCv daif +PAN -UAO +TCO +DIT -SSBS BTYPE=--) pc : generic_shutdown_super+0xf0/0x100 lr : generic_shutdown_super+0xf0/0x100 Call trace: generic_shutdown_super+0xf0/0x100 kill_block_super+0x20/0x48 ext4_kill_sb+0x28/0x60 deactivate_locked_super+0x54/0x130 deactivate_super+0x84/0xa0 cleanup_mnt+0xa4/0x140 __cleanup_mnt+0x18/0x28 task_work_run+0x78/0xe0 do_notify_resume+0x204/0x240 ==================================================================

근본 원인은 cgroup_writeback_umount()와 inode_switch_wbs()/cleanup_offline_cgwb() 간의 Race Condition입니다. inode_prepare_wbs_switch()가 true를 반환한 후 wb_queue_isw() 호출 사이에 시간적 간격(window)이 존재합니다. 이 문제를 트리거하는 프로세스는 다음과 같습니다:

CPU A (umount) | CPU B (writeback) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ inode_switch_wbs/cleanup_offline_cgwb atomic_inc(&isw_nr_in_flight) inode_prepare_wbs_switch -> SB_ACTIVE 체크 통과 __iget(inode) generic_shutdown_super sb->s_flags &= ~SB_ACTIVE cgroup_writeback_umount(sb) smp_mb() atomic_read(&isw_nr_in_flight) rcu_barrier() -> 대기 중인 RCU 콜백 없음 flush_workqueue(isw_wq) -> 큐에 작업 없음, 반환 evict_inodes(sb) -> isw가 여전히 참조를 유지하고 있어 Inode 건너뜀. sop->put_super(sb) /* percpu 카운터 파괴 */ -> VFS: 언마운트 후 사용 중인 Inode 존재! wb_queue_isw() queue_work(isw_wq, ...) /* 작업 함수 내 이후 단계 */ inode_switch_wbs_work_fn process_inode_switch_wbs iput() -> evict percpu_counter_dec() // UAF 발생!

inode_prepare_wbs_switch()부터 wb_queue_isw()까지를 커버하도록 inode_switch_wbs()와 cleanup_offline_cgwb()의 RCU 읽기 측 임계 섹션(critical section)을 확장하여 이를 수정합니다. 이 시간적 간격에는 슬립이 없으므로 rcu_read_lock()을 사용할 수 있습니다. 그런 다음 기존 rcu_barrier() 전에 cgroup_writeback_umount()에 synchronize_rcu()를 추가하여, SB_ACTIVE 체크를 통과한 모든 진행 중인 전환 작업(in-flight switchers)이 flush_workqueue() 호출 전에 queue_work()를 완료하도록 합니다.

기존 rcu_barrier()은 의도적으로 유지됩니다. 이는 이 수정 사항이 여전히 queue_rcu_work()를 통해 전환을 큐에 넣는 안정화 커널(5.10.y, 6.6.y 등)로 변경 없이 백포트될 수 있도록 하기 위함입니다. 현재 메인라인에서는(no-op) 이미 commit e1b84

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

책임이 있는

Linux

예약하다

2026. 07. 19.

모더레이션

수락

항목

VDB-383171

EPSS

0.00173

출처

Interested in the pricing of exploits?

See the underground prices here!