🇰🇷 한글 설명
Linux 커널의 mbcache에서 캐시를 파괴하기 전에 예약된 shrink 작업(c_shrink_work)을 취소하지 않아 발생하는 Use-After-Free 취약점입니다. 캐시 메모리가 해제된 후에도 작업 아이템이 실행되면 해제된 메모리에 접근하게 되어 시스템 불안정이나 권한 상승을 초래할 수 있습니다.
💡 쉬운 설명
컴퓨터가 사용하던 메모리를 정리하고 버렸는데, 뒤늦게 다른 프로그램이 그 버려진 메모리를 다시 사용하려고 시도하면서 발생하는 오류입니다. 이로 인해 시스템이 멈추거나 해커가 시스템 제어권을 얻을 위험이 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
fs/mbcache: cancel shrink work before destroying the cache
mb_cache_destroy() calls shrinker_free() and then frees all cache
entries and the cache itself, but it does not cancel the pending
c_shrink_work work item first.
If mb_cache_entry_create() schedules c_shrink_work via schedule_work()
and the work item is still pending or running when mb_cache_destroy()
runs, mb_cache_shrink_worker() will access the cache after its memory
has been freed, causing a use-after-free.
This is only reachable by a privileged user (root or CAP_SYS_ADMIN)
who can trigger the last put of a mounted ext2/ext4/ocfs2 filesystem.
Cancel the work item with cancel_work_sync() before calling
shrinker_free(), ensuring the worker has finished and will not be
rescheduled before the cache is torn down.
📍 영향받는 시스템
Linux kernel (ext2, ext4, ocfs2 파일 시스템을 사용하는 시스템)
⚔️ 공격 벡터
권한이 있는 사용자(root 또는 CAP_SYS_ADMIN)가 마운트된 파일 시스템의 마지막 참조를 해제하여 취약한 경로를 트리거함
🛡️ 대응 방법
mb_cache_destroy() 호출 시 cancel_work_sync()를 사용하여 예약된 작업을 먼저 취소하도록 커널을 업데이트함
🔧 검증 코드
현재 실행 중인 커널 버전을 확인하여 해당 취약점이 패치된 최신 보안 업데이트 버전인지 확인합니다.