🇰🇷 한글 설명
Linux 커널의 freevxfs 파일시스템 드라이버에서 vxfs_bmap_typed() 함수가 처리하지 않는 타입의 디스크 익스텐트를 만나면 BUG()를 호출해 커널이 패닉됩니다. 이 경로는 일반 파일에 대한 ioctl(FIBMAP)로 도달할 수 있으며, 수정은 BUG()를 WARN_ON_ONCE()와 0 반환으로 바꿔 ioctl이 -EIO로 정상 실패하도록 합니다.
💡 쉬운 설명
악성 또는 손상된 VxFS 파일시스템 이미지를 마운트한 뒤 특정 파일에 대해 조회 요청을 하면 리눅스 커널이 강제로 멈출 수 있습니다. 이 문제는 커널이 잘못된 데이터를 안전하게 거부하지 않고 즉시 중단시키는 결함을 고친 것입니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
freevxfs: don't BUG() on unknown typed-extent type
vxfs_bmap_typed() handles four typed-extent types and calls BUG() in
its default case, so an on-disk typed extent with any other type value
crashes the kernel. It is reachable from ioctl(FIBMAP) on a regular
file:
kernel BUG at fs/freevxfs/vxfs_bmap.c:230!
RIP: vxfs_bmap_typed fs/freevxfs/vxfs_bmap.c:230 [inline]
vxfs_bmap1+0x128a/0x12d0 fs/freevxfs/vxfs_bmap.c:257
Replace the BUG() with WARN_ON_ONCE() and return 0 -- the value
vxfs_bmap_typed() already returns on failure (and from the DEV4 case
above); vxfs_getblk() maps 0 to -EIO, so the ioctl fails cleanly.
📍 영향받는 시스템
freevxfs 드라이버가 포함된 Linux 커널 (수정 커밋 이전 버전, 정확한 영향 범위는 커널 배포판 패치 확인 필요)
⚔️ 공격 벡터
조작된 VxFS 디스크 이미지를 마운트한 뒤 해당 파일에 대해 ioctl(FIBMAP)을 호출해 커널 BUG를 유발
🛡️ 대응 방법
배포판에서 제공하는 최신 Linux 커널로 업데이트하거나, freevxfs 모듈을 사용하지 않는다면 blacklist 또는 모듈 언로드로 비활성화
🔧 검증 코드
커널 버전과 freevxfs 모듈 로드 여부, 모듈 정보를 확인하며, 모듈이 로드되지 않았거나 배포판 최신 커널 패치가 적용된 버전이면 해당 취약점 영향이 없거나 완화된 것입니다.
uname -r; lsmod | grep freevxfs; modinfo freevxfs 2>/dev/null | head -5