🇰🇷 한글 설명
Linux 커널의 f2fs 파일 시스템에서 데이터 블록 할당 실패 시 유효 블록 카운트가 복구되지 않고 누수되는 취약점이 발견되었습니다. __allocate_data_block() 함수에서 블록 카운트를 먼저 증가시킨 후 할당에 실패하면, 증가된 값을 다시 감소시키지 않아 카운트가 영구적으로 잘못 계산됩니다.
💡 쉬운 설명
파일을 저장하려고 공간을 확보하다가 오류가 났을 때, 사용 중이라고 표시한 숫자를 다시 원래대로 돌려놓지 않는 문제입니다. 이로 인해 실제로는 사용하지 않는 공간이 계속 사용 중인 것으로 잘못 계산되어 저장 공간 관리에 오류가 생길 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
f2fs: fix valid block count leak on data block allocation failure
In __allocate_data_block(), when allocating a new data block
(dn->data_blkaddr == NULL_ADDR), inc_valid_block_count() is
called first to increment total_valid_block_count and i_blocks.
If the subsequent f2fs_allocate_data_block() fails, the function
returns the error directly without rolling back the
already-incremented block counts, causing a permanent leak.
Fix this by calling dec_valid_block_count() to undo the
increment before returning the error. The condition
old_blkaddr == NULL_ADDR precisely identifies the case where
inc_valid_block_count() was called.
📍 영향받는 시스템
f2fs 파일 시스템을 사용하는 Linux 커널 버전
⚔️ 공격 벡터
직접적인 공격보다는 시스템의 자원 할당 실패를 유도하여 파일 시스템의 메타데이터 불일치를 일으키는 방식
🛡️ 대응 방법
해당 취약점이 수정된 최신 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 f2fs 관련 패치가 적용된 최신 버전인지 확인