🇰🇷 한글 설명
Linux 커널 XFS 파일시스템의 iunlink 버킷 복구 로직에서 여러 결함이 수정되었습니다. 루프 내 inodegc 플러시 실패 시 prev_ip 해제 후 포인터를 초기화하지 않아 Use-After-Free가 발생할 수 있었고, ip 누수, 잘못된 prev_agino 설정, 그리고 i_prev_unlinked가 자기 자신을 가리키는 잠재적 순환 연결 문제도 함께 수정되었습니다.
💡 쉬운 설명
리눅스 파일시스템(XFS)이 시스템 복구 중 삭제 대기 중인 파일 정보를 잘못 처리하던 문제입니다. 이로 인해 메모리 오류나 정리되지 않은 파일 정보가 생길 수 있었습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
xfs: fix cursor and pointer handling when recovering iunlink buckets
LOLLM pointed out a bug in xlog_recover_iunlink_bucket:
1. We don't null out prev_ip after releasing it, which can lead to UAF
problems if the inodegc flush call in the loop fails.
at which point I noticed even more bugs:
2. If the inodegc flush inside the loop fails, we also leak @ip.
3. We set prev_agino to agino having already advanced agino, which
results in inodes with i_prev_unlinked set to itself.
4. If we exit the bottom of the loop with prev_ip set, then prev_ip
aliases ip and we also set its i_prev_unlinked to itself.
Bugs 3 and 4 introduce loops into the unlinked list, though these loops
don't surface because we immediately flush each unlinked inode after
loading it.
Fix all of these issues.
📍 영향받는 시스템
XFS 파일시스템을 사용하는 Linux 커널 (수정 커밋 이전 버전, 정확한 영향 버전은 배포판 공지 확인 필요)
⚔️ 공격 벡터
로컬 사용자가 XFS 볼륨 복구 과정이 실패하거나 지연되는 상황을 유도하여 메모리 손상 또는 서비스 거부를 일으킬 수 있음
🛡️ 대응 방법
배포판이 제공하는 최신 커널 보안 업데이트를 적용하고 시스템을 재부팅
🔧 검증 코드
출력된 커널 버전을 배포판의 보안 권고문에서 해당 CVE 수정이 포함된 패치 버전과 비교하여, 같거나 더 높으면 수정된 것입니다.