🇰🇷 한글 설명
Linux 커널의 btrfs 파일시스템에서, sprout 파일시스템의 첫 메타데이터 청크를 생성하는 도중 후속 시스템 청크 생성이 실패하면 새 장치가 트랜잭션의 dev_update_list에 남아 있는 채로 해제됩니다. 이로 인해 btrfs_free_device()에서 경고가 발생하고 트랜잭션 목록이 이미 해제된 메모리를 참조하게 됩니다. 수정안은 장치를 해제하기 전에 chunk_mutex를 잡은 상태에서 목록에서 분리하는 것입니다.
💡 쉬운 설명
리눅스 파일시스템(btrfs) 설정 중 오류가 나면 이미 버려진 장치 정보가 목록에 남아 있어 잘못된 메모리를 참조하게 됩니다. 이로 인해 시스템 경고가 발생하거나 드물게 불안정해질 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
btrfs: detach failed sprout device from transaction update list
When creating the first metadata chunk for a sprout filesystem,
create_chunk() adds the new device to the transaction dev_update_list
through device->post_commit_list.
If the subsequent system chunk creation fails, btrfs_init_new_device()
aborts the transaction and releases the device while post_commit_list is
still linked. This triggers a warning in btrfs_free_device() and leaves
the transaction list referencing freed memory.
Detach the device while holding chunk_mutex before releasing it.
📍 영향받는 시스템
Linux 커널 btrfs 파일시스템 (sprout 장치 추가 기능을 사용하는 수정 전 커널 버전)
⚔️ 공격 벡터
권한이 있는 로컬 사용자가 sprout 장치 추가 과정에서 실패를 유발해 해제 후 사용(use-after-free) 상태를 만들 수 있으며, 주로 안정성 저하와 커널 경고로 나타납니다.
🛡️ 대응 방법
배포판에서 제공하는 이 수정이 포함된 최신 Linux 커널로 업데이트하고 재부팅합니다.
🔧 검증 코드
커널 버전을 확인해 배포판 보안 공지에 명시된 수정 버전 이상인지 비교하며, btrfs 지원이 없으면 이 취약점의 영향을 받지 않습니다.
uname -r && grep -c btrfs /proc/filesystems