🇰🇷 한글 설명
Linux 커널의 Btrfs 파일 시스템에서 zoned 영역의 데이터 제로화 과정 중 메모리 상의 익스텐트 버퍼를 초기화하여 발생하는 취약점입니다. 이로 인해 버퍼가 참조 중인 상태에서 헤더 정보가 삭제되어 익스텐트 트리가 손상되거나 시스템이 중단될 수 있습니다.
💡 쉬운 설명
파일 시스템이 데이터를 지우는 과정에서 실수로 메모리에 남아있는 중요한 정보를 함께 지워버리는 문제입니다. 이로 인해 컴퓨터의 파일 관리 체계가 망가지거나 시스템이 갑자기 멈출 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
btrfs: zoned: don't clobber the extent buffer when zeroing it out
On a zoned filesystem a freed-but-still-dirty tree block is written out
as zeros (EXTENT_BUFFER_ZONED_ZEROOUT) only to keep the zone write
pointer advancing. btree_csum_one_bio() implemented this by memzeroing
the extent buffer's own folios before submission.
That destroys the in-memory buffer while it may still be referenced. In
particular btrfs_free_tree_block() can run on it afterwards and reads
the header to add a delayed reference; once the header has been zeroed
it frees bytenr 0 and corrupts the extent tree (the
btrfs_header_bytenr(buf) != 0 ASSERT in btrfs_free_tree_block(), or an
"unable to find ref" abort). It is flaky and reproduces under fsstress,
e.g. generic/461 and generic/013.
Write the zeros to disk from the shared zero page instead and leave the
extent buffer content untouched, so any later reference - including the
delayed reference from btrfs_free_tree_block() - still sees a valid
header. end_bbio_meta_write() now clears writeback on the buffer's own
folios, as the bio no longer carries them.
📍 영향받는 시스템
Linux kernel (Btrfs filesystem with zoned storage support)
⚔️ 공격 벡터
로컬 사용자가 fsstress와 같은 도구를 사용하여 파일 시스템에 부하를 주어 트리 구조 손상을 유도할 수 있음
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인하십시오.