🇰🇷 한글 설명
Linux 커널의 UBIFS 파일 시스템에서 insert_old_idx() 함수 호출 실패 시 메모리 누수가 발생하는 취약점입니다. znode 복사 과정에서 오류가 발생할 경우 할당된 메모리가 적절히 해제되지 않아 시스템 자원이 소모될 수 있습니다.
💡 쉬운 설명
컴퓨터의 파일 저장 시스템에서 작업을 하다가 오류가 났을 때, 사용했던 메모리를 제대로 돌려주지 않고 계속 붙잡고 있는 문제입니다. 이 문제가 반복되면 컴퓨터의 메모리가 부족해질 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
ubifs: Fix memleak when insert_old_idx() failed
Following process will cause a memleak for copied up znode:
dirty_cow_znode
zn = copy_znode(c, znode);
err = insert_old_idx(c, zbr->lnum, zbr->offs);
if (unlikely(err))
return ERR_PTR(err); // No one refers to zn.
Fetch a reproducer in [Link].
Function copy_znode() is split into 2 parts: resource allocation
and znode replacement, insert_old_idx() is split in similar way,
so resource cleanup could be done in error handling path without
corrupting metadata(mem & disk).
It's okay that old index inserting is put behind of add_idx_dirt(),
old index is used in layout_leb_in_gaps(), so the two processes do
not depend on each other.
📍 영향받는 시스템
UBIFS를 사용하는 Linux 커널 버전
⚔️ 공격 벡터
특정 조건에서 UBIFS 파일 시스템 작업을 유도하여 메모리 누수 발생
🛡️ 대응 방법
UBIFS 메모리 누수 패치가 적용된 최신 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인