🇰🇷 한글 설명
Linux 커널의 ext4 파일시스템에서 writeback 코드 경로가 파일시스템 reclaim으로 재귀 진입할 수 있어 데드락이 발생할 수 있는 문제입니다. 저널링 플래그 변경 중 s_writepages_rwsem 락을 기다리며 영구적으로 블록될 수 있어 수정이 적용되었습니다.
💡 쉬운 설명
리눅스 커널이 파일을 디스크에 쓰는 도중 메모리를 확보하려고 하다가, 같은 자원을 기다리며 서로 멈춰버리는 교착 상태가 생길 수 있습니다. 이로 인해 시스템 일부 또는 전체가 응답하지 않게 될 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
ext4: avoid deadlock in fs reclaim with page writeback
Ext4 has a filesystem wide lock protecting ext4_writepages() calls to
avoid races with switching of journalled data flag or inode format. This
lock can however cause a deadlock like:
CPU0 CPU1
ext4_writepages()
percpu_down_read(sbi->s_writepages_rwsem);
ext4_change_inode_journal_flag()
percpu_down_write(sbi->s_writepages_rwsem);
- blocks, all readers block from now on
ext4_do_writepages()
ext4_init_io_end()
kmem_cache_zalloc(io_end_cachep, GFP_KERNEL)
fs_reclaim frees dentry...
dentry_unlink_inode()
iput() - last ref =>
iput_final() - inode dirty =>
write_inode_now()...
ext4_writepages() tries to acquire sbi->s_writepages_rwsem
and blocks forever
Make sure we cannot recurse into filesystem reclaim from writeback code
to avoid the deadlock.
📍 영향받는 시스템
패치 이전의 Linux 커널 (ext4 파일시스템을 사용하는 시스템)
⚔️ 공격 벡터
로컬 사용자가 저널링 플래그 변경 등 파일시스템 작업을 유발해 교착 상태를 일으키는 서비스 거부(DoS) 방식이 가능
🛡️ 대응 방법
배포판이 제공하는 최신 Linux 커널 보안 업데이트를 설치하고 재부팅
🔧 검증 코드
출력된 커널 버전을 배포판의 보안 권고에 명시된 수정된 커널 버전과 비교하여, 같거나 높으면 패치된 것입니다.