🇰🇷 한글 설명
Linux kernel의 btrfs 파일시스템에서 set received ioctl이 BTRFS_UUID_KEY_RECEIVED_SUBVOL 항목 추가 시 item overflow로 인해 트랜잭션을 중단하는 취약점입니다. CAP_SYS_ADMIN 권한 없이 subvolume을 소유한 사용자가 동일한 received UUID로 여러 subvolume에 접근할 경우 파일시스템을 읽기전용 모드로 변환할 수 있습니다. 트랜잭션 시작 전 item overflow를 사전 검사하여 해결됩니다.
💡 쉬운 설명
리눅스 저장소에서 파일 정보를 추가할 때 용량 초과 오류가 발생하고, 일반 사용자도 이를 악용해 시스템을 사용 불가 상태로 만들 수 있습니다. 저장하기 전에 용량을 미리 확인하면 문제를 방지할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
btrfs: fix transaction abort on set received ioctl due to item overflow
If the set received ioctl fails due to an item overflow when attempting to
add the BTRFS_UUID_KEY_RECEIVED_SUBVOL we have to abort the transaction
since we did some metadata updates before.
This means that if a user calls this ioctl with the same received UUID
field for a lot of subvolumes, we will hit the overflow, trigger the
transaction abort and turn the filesystem into RO mode. A malicious user
could exploit this, and this ioctl does not even requires that a user
has admin privileges (CAP_SYS_ADMIN), only that he/she owns the subvolume.
Fix this by doing an early check for item overflow before starting a
transaction. This is also race safe because we are holding the subvol_sem
semaphore in exclusive (write) mode.
A test case for fstests will follow soon.
📍 영향받는 시스템
btrfs 파일시스템이 탑재된 모든 Linux kernel (2026년 이전 버전)
⚔️ 공격 벡터
subvolume 소유 권한으로 동일한 received UUID를 가진 다수의 subvolume에 set received ioctl 반복 호출
🛡️ 대응 방법
Linux kernel 업데이트 (btrfs transaction abort 사전 검사 패치 적용)
🔧 검증 코드
Linux kernel 버전과 btrfs 마운트 상태를 확인하여 패치 적용 여부를 검증합니다. 최신 패치가 미적용된 경우 커널 업데이트가 필요합니다.
dpkg -l | grep -i linux-image && btrfs filesystem show 2>/dev/null | head -5