🇰🇷 한글 설명
Linux 커널의 md/md-llbitmap 구성 요소에서 발생하는 취약점으로, llbitmap 파괴 과정 중 타이머가 삭제된 후에도 데몬 작업이 실행되어 해제된 메모리에 접근할 수 있는 Use-After-Free 문제가 존재합니다. 이를 해결하기 위해 BITMAP_SHUTDOWN 플래그를 도입하여 종료 프로세스 중 타이머 재설정 및 작업 큐잉을 방지하도록 수정되었습니다.
💡 쉬운 설명
시스템이 종료되는 과정에서 이미 삭제된 메모리 영역을 프로그램이 다시 사용하려고 시도하여 오류가 발생할 수 있는 문제입니다. 이로 인해 시스템이 불안정해지거나 보안 문제가 생길 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
md/md-llbitmap: stop daemon timer rearm on destroy
llbitmap_destroy() deletes pending_timer before flushing
md_llbitmap_io_wq. However, daemon_work can still be queued or running
after the timer has been deleted, and the daemon path can arm
pending_timer again when it finds dirty chunks that are not ready to
flush yet.
If that happens during teardown, pending_timer can remain armed after
llbitmap is freed and later dereference freed memory.
Add a BITMAP_SHUTDOWN bit to llbitmap->flags, set it before deleting
the timer, and make the timer and daemon paths stop queueing or rearming
work once teardown starts. Cancel daemon_work before flushing the shared
workqueue so no already queued daemon instance can race with the free.
Use timer_shutdown_sync() so a daemon instance that passed the shutdown
check before teardown cannot rearm the timer afterward.
BITMAP_SHUTDOWN is a runtime-only state. Mask it out when reading and
updating the llbitmap superblock so the shutdown state is never loaded
from disk or persisted to disk.
📍 영향받는 시스템
Linux Kernel (md/md-llbitmap 모듈 사용 시스템)
⚔️ 공격 벡터
로컬 공격자가 특정 조건에서 커널의 메모리 해제 프로세스를 유도하여 Use-After-Free를 유발할 수 있음
🛡️ 대응 방법
최신 보안 패치가 적용된 Linux 커널 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인