🇰🇷 한글 설명
Linux 커널 ext4 파일시스템의 fast-commit 블록 채우기 로직에서 여러 off-by-one 오류가 발견되어 수정되었습니다. 기존에는 tlv 항목이 블록 끝 근처에 배치되는 특이한 제약이 있었으며, 이로 인해 초기화되지 않은 메모리가 디스크에 기록되는 문제가 있었습니다. 이번 수정으로 블록을 자연스러운 방식으로 채우도록 변경되었습니다.
💡 쉬운 설명
리눅스의 파일 저장 기능(ext4)이 빠른 저장 기록을 남길 때 계산 실수가 있었습니다. 이 실수로 인해 메모리 일부 내용이 디스크에 잘못 기록될 수 있었고, 이를 바로잡았습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
ext4: fix off-by-one errors in fast-commit block filling
Due to several different off-by-one errors, or perhaps due to a late
change in design that wasn't fully reflected in the code that was
actually merged, there are several very strange constraints on how
fast-commit blocks are filled with tlv entries:
- tlvs must start at least 10 bytes before the end of the block, even
though the minimum tlv length is 8. Otherwise, the replay code will
ignore them. (BUG: ext4_fc_reserve_space() could violate this
requirement if called with a len of blocksize - 9 or blocksize - 8.
Fortunately, this doesn't seem to happen currently.)
- tlvs must end at least 1 byte before the end of the block. Otherwise
the replay code will consider them to be invalid. This quirk
contributed to a bug (fixed by an earlier commit) where uninitialized
memory was being leaked to disk in the last byte of blocks.
Also, strangely these constraints don't apply to the replay code in
e2fsprogs, which will accept any tlvs in the blocks (with no bounds
checks at all, but that is a separate issue...).
Given that this all seems to be a bug, let's fix it by just filling
blocks with tlv entries in the natural way.
Note that old kernels will be unable to replay fast-commit journals
created by kernels that have this commit.
📍 영향받는 시스템
fast-commit 기능을 사용하는 ext4 파일시스템이 적용된 Linux 커널 (수정 커밋 이전 버전)
⚔️ 공격 벡터
로컬 사용자가 ext4 파일시스템 저널링 동작을 유도하여 초기화되지 않은 커널 메모리 일부가 디스크에 남도록 하는 정보 노출 형태입니다.
🛡️ 대응 방법
패치가 포함된 최신 Linux 커널 버전으로 업데이트하고 재부팅합니다.
🔧 검증 코드
출력된 커널 버전을 배포판 보안 공지 또는 패치 목록과 비교하여 수정이 포함된 버전인지 확인합니다.