🇰🇷 한글 설명
Linux 커널의 null_blk 서브시스템에서 뮤텍스(mutex)가 초기화되기 전에 사용자 공간에서 해당 서브시스템에 접근할 수 있는 레이스 컨디션 취약점이 발견되었습니다. 이로 인해 초기화되지 않은 뮤텍스를 잠그려 시도할 경우 커널 경고가 발생하거나 시스템 불안정을 초래할 수 있습니다.
💡 쉬운 설명
컴퓨터의 핵심 부품인 커널이 특정 기능을 준비하기도 전에 외부에서 명령을 내릴 수 있어 발생하는 문제입니다. 이 과정에서 준비되지 않은 도구를 사용하려다 시스템에 오류가 발생할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
null_blk: use DEFINE_MUTEX for the file-scope mutex
In null_init(), mutex_init(&lock) currently happens after
configfs_register_subsystem(), which exposes the nullb subsystem to
userspace. A racing mkdir() into /sys/kernel/config/nullb/ can reach
null_find_dev_by_name() -> mutex_lock(&lock) before the mutex is
initialized, trigger warning:
[ 123.137788] DEBUG_LOCKS_WARN_ON(lock->magic != lock)
[ 123.137796] WARNING: kernel/locking/mutex.c:159 at mutex_lock+0x171/0x1c0, CPU#13: mkdir/1301
[ 123.140090] Modules linked in: null_blk(+) nft_fib_inet nft_fib_ipv4
......
[ 123.154926] Call Trace:
[ 123.155172] <TASK>
[ 123.155419] ? __pfx_mutex_lock+0x10/0x10
[ 123.156181] ? __pfx__raw_spin_lock+0x10/0x10
[ 123.156571] nullb_group_make_group+0x20/0x100 [null_blk]
[ 123.157011] configfs_mkdir+0x47b/0xc70
[ 123.157337] ? __pfx_configfs_mkdir+0x10/0x10
[ 123.157719] ? may_create_dentry+0x242/0x2e0
[ 123.158061] vfs_mkdir+0x2a9/0x6c0
[ 123.158352] filename_mkdirat+0x3dc/0x500
[ 123.158710] ? __pfx_filename_mkdirat+0x10/0x10
[ 123.159070] ? strncpy_from_user+0x3a/0x1d0
[ 123.159413] __x64_sys_mkdir+0x6b/0x90
[ 123.159760] do_syscall_64+0xea/0x600
Replace the runtime mutex_init(&lock) with a static DEFINE_MUTEX(lock)
declaration to fix this issue.
📍 영향받는 시스템
Linux kernel (null_blk 모듈을 사용하는 시스템)
⚔️ 공격 벡터
사용자 공간에서 /sys/kernel/config/nullb/ 경로에 mkdir() 명령을 실행하여 레이스 컨디션 유도
🛡️ 대응 방법
런타임 mutex_init() 대신 정적 DEFINE_MUTEX(lock)를 사용하여 뮤텍스를 사전에 초기화하도록 커널 패치 적용
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전인지 배포판 보안 공지를 통해 확인하십시오.