🇰🇷 한글 설명
Linux kernel의 ext4 파일시스템에서 ext4_find_extent() 함수가 경로를 해제하거나 재할당할 때, 이전에 저장된 포인터를 계속 사용하여 use-after-free 취약점이 발생합니다. EXT_DEBUG 디버그 플래그가 정의되었을 때만 트리거되어 일반 운영 환경의 기능에는 영향을 주지 않습니다.
💡 쉬운 설명
Linux 커널의 ext4 파일시스템에서 메모리 정리 후 같은 메모리 주소를 다시 사용하려고 할 때 오류가 발생할 수 있습니다. 이는 디버그 모드가 활성화된 경우에만 일어나므로 일반 사용자에게는 영향이 없습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
ext4: avoid use-after-free in ext4_ext_show_leaf()
In ext4_find_extent(), path may be freed by error or be reallocated, so
using a previously saved *ppath may have been freed and thus may trigger
use-after-free, as follows:
ext4_split_extent
path = *ppath;
ext4_split_extent_at(ppath)
path = ext4_find_extent(ppath)
ext4_split_extent_at(ppath)
// ext4_find_extent fails to free path
// but zeroout succeeds
ext4_ext_show_leaf(inode, path)
eh = path[depth].p_hdr
// path use-after-free !!!
Similar to ext4_split_extent_at(), we use *ppath directly as an input to
ext4_ext_show_leaf(). Fix a spelling error by the way.
Same problem in ext4_ext_handle_unwritten_extents(). Since 'path' is only
used in ext4_ext_show_leaf(), remove 'path' and use *ppath directly.
This issue is triggered only when EXT_DEBUG is defined and therefore does
not affect functionality.
📍 영향받는 시스템
Linux kernel의 ext4 파일시스템 (EXT_DEBUG 플래그가 활성화된 커널 빌드)
⚔️ 공격 벡터
EXT_DEBUG가 활성화된 커널에서 ext4 파일시스템 작업 중 특정 경로를 통한 메모리 손상 트리거
🛡️ 대응 방법
Linux kernel을 최신 버전으로 업데이트하여 ext4_ext_show_leaf() 함수의 포인터 처리 로직 패치 적용
🔧 검증 코드
커널 설정에서 EXT_DEBUG 플래그 활성화 여부를 확인합니다. EXT_DEBUG가 비활성화(# CONFIG_EXT_DEBUG is not set)되어 있으면 이 취약점의 영향을 받지 않습니다.
cat /boot/config-$(uname -r) 2>/dev/null | grep -i ext_debug || echo 'Check kernel config for EXT_DEBUG flag'