🇰🇷 한글 설명
Linux 커널의 XFS 파일 시스템 복구 과정에서 로그 항목에 데이터 영역이 없는 경우 NULL 포인터 역참조가 발생할 수 있는 취약점입니다. 공격자가 조작된 로그를 생성하여 마운트할 경우 시스템이 충돌하거나 커널 패닉이 발생할 수 있습니다.
💡 쉬운 설명
파일 시스템을 복구할 때 잘못 만들어진 데이터 조각을 읽으려다 컴퓨터가 갑자기 멈추거나 꺼질 수 있는 문제입니다. 악의적으로 조작된 파일을 시스템에 연결하려고 할 때 발생합니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
xfs: fail recovery on a committed log item with no regions
If the first op of a transaction is a bare transaction header
(len == sizeof(struct xfs_trans_header)), xlog_recover_add_to_trans()
adds an item but no region, leaving it on r_itemq with ri_cnt == 0 and
ri_buf == NULL.
The header can be split across op records, so later ops may still add
regions; the item is only invalid if the transaction commits with none.
The runtime commit path never emits such a transaction, so this only
happens on a crafted log. It came from an AI-assisted code audit of the
recovery parser.
xlog_recover_reorder_trans() calls ITEM_TYPE() on the item, which reads
*(unsigned short *)item->ri_buf[0].iov_base and faults on the NULL
ri_buf. Reject it there, before the commit handlers that also read
ri_buf[0].
KASAN: null-ptr-deref in range [0x0000000000000000-0x0000000000000007]
RIP: 0010:xlog_recover_reorder_trans (fs/xfs/xfs_log_recover.c:1836)
xlog_recover_commit_trans (fs/xfs/xfs_log_recover.c:2043)
xlog_recover_process_data (fs/xfs/xfs_log_recover.c:2501)
xlog_do_recovery_pass (fs/xfs/xfs_log_recover.c:3244)
xlog_recover (fs/xfs/xfs_log_recover.c:3493)
xfs_log_mount (fs/xfs/xfs_log.c:618)
xfs_mountfs (fs/xfs/xfs_mount.c:1034)
xfs_fs_fill_super (fs/xfs/xfs_super.c:1938)
vfs_get_tree (fs/super.c:1695)
path_mount (fs/namespace.c:4161)
__x64_sys_mount (fs/namespace.c:4367)
📍 영향받는 시스템
Linux kernel (XFS 파일 시스템을 사용하는 모든 시스템)
⚔️ 공격 벡터
조작된 로그 레코드를 포함한 XFS 파일 시스템을 마운트 시도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인