🇰🇷 한글 설명
Linux 커널의 F2FS 파일 시스템에서 장치 경로(devs.path)의 길이가 최대 길이에 도달할 경우, 널(null) 문자가 포함되지 않아 경계 외 메모리에 접근할 수 있는 취약점입니다. 이로 인해 경로 뒤에 위치한 데이터가 경로의 일부로 잘못 해석되어 장치 경로 파싱 오류가 발생할 수 있습니다.
💡 쉬운 설명
파일 이름이 너무 길면 컴퓨터가 이름의 끝을 제대로 찾지 못해 옆에 있는 다른 데이터를 이름의 일부로 착각하는 문제입니다. 이로 인해 시스템이 엉뚱한 파일을 찾거나 오류를 일으킬 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
f2fs: fix to avoid out-of-boundary access in devs.path
- touch /mnt/f2fs/012345678901234567890123456789012345678901234567890123
- truncate -s $((1024*1024*1024)) \
/mnt/f2fs/012345678901234567890123456789012345678901234567890123
- touch /mnt/f2fs/file
- truncate -s $((1024*1024*1024)) /mnt/f2fs/file
- mkfs.f2fs /mnt/f2fs/012345678901234567890123456789012345678901234567890123 \
-c /mnt/f2fs/file
- mount /mnt/f2fs/012345678901234567890123456789012345678901234567890123 \
/mnt/f2fs/loop
[16937.192225] F2FS-fs (loop0): Mount Device [ 0]: /mnt/f2fs/012345678901234567890123456789012345678901234567890123\xff\x01, 511, 0 - 3ffff
[16937.192268] F2FS-fs (loop0): Failed to find devices
If device path length equals to MAX_PATH_LEN, sbi->devs.path[] may
not end up w/ null character due to path array is fully filled, So
accidently, fields locate after path[] may be treated as part of
device path, result in parsing wrong device path.
struct f2fs_dev_info {
...
char path[MAX_PATH_LEN];
...
};
Let's add one byte space for sbi->devs.path[] to store null
character of device path string.
📍 영향받는 시스템
Linux kernel (F2FS 파일 시스템을 사용하는 시스템)
⚔️ 공격 벡터
매우 긴 파일 이름을 가진 악의적으로 조작된 F2FS 이미지 파일을 마운트하여 발생
🛡️ 대응 방법
F2FS의 장치 경로 저장 공간에 널 문자를 위한 1바이트 여유를 두도록 수정된 최신 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 패치된 최신 버전인지 확인