🇰🇷 한글 설명
Linux 커널의 NILFS2 파일 시스템에서 nilfs_segctor_thread() 함수와 nilfs_segctor_kill_thread() 함수 간의 경쟁 상태로 인해 nilfs_sc_info 구조체에 대한 Use-After-Free(UAF) 취약점이 발생합니다. 스레드가 종료를 알리기 전에 스레드 종료 함수가 구조체를 먼저 해제할 수 있어 메모리 오류를 유발할 수 있습니다.
💡 쉬운 설명
컴퓨터의 데이터를 관리하는 프로그램이 작업을 끝내기도 전에 관리용 메모리를 먼저 지워버려서 발생하는 오류입니다. 이로 인해 시스템이 갑자기 멈추거나 보안 문제가 생길 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
nilfs2: fix potential UAF of struct nilfs_sc_info in nilfs_segctor_thread()
The finalization of nilfs_segctor_thread() can race with
nilfs_segctor_kill_thread() which terminates that thread, potentially
causing a use-after-free BUG as KASAN detected.
At the end of nilfs_segctor_thread(), it assigns NULL to "sc_task" member
of "struct nilfs_sc_info" to indicate the thread has finished, and then
notifies nilfs_segctor_kill_thread() of this using waitqueue
"sc_wait_task" on the struct nilfs_sc_info.
However, here, immediately after the NULL assignment to "sc_task", it is
possible that nilfs_segctor_kill_thread() will detect it and return to
continue the deallocation, freeing the nilfs_sc_info structure before the
thread does the notification.
This fixes the issue by protecting the NULL assignment to "sc_task" and
its notification, with spinlock "sc_state_lock" of the struct
nilfs_sc_info. Since nilfs_segctor_kill_thread() does a final check to
see if "sc_task" is NULL with "sc_state_lock" locked, this can eliminate
the race.
📍 영향받는 시스템
NILFS2 파일 시스템을 사용하는 Linux 커널 버전
⚔️ 공격 벡터
로컬 시스템에서 특정 파일 시스템 작업 유도를 통한 메모리 오염 및 권한 상승 시도
🛡️ 대응 방법
NILFS2 관련 Race Condition 패치가 적용된 최신 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전을 확인하여 해당 취약점이 해결된 최신 보안 패치 버전인지 확인합니다.