🇰🇷 한글 설명
Linux 커널의 메모리 누수 감지(kmemleak) 모듈에서 netpoll 활성화 시 lock inversion으로 인한 데드락 취약점입니다. pr_warn_once() 호출 중 kmemleak_lock을 재획득하려 하면서 시스템이 멈춰 DoS 상태가 됩니다. 패치는 경고 출력을 lock 해제 후로 미뤄 해결합니다.
💡 쉬운 설명
Linux가 메모리 누수를 감시할 때 특정 조건에서 경고를 출력하면서 시스템이 무한 대기 상태에 빠지는 문제입니다. 경고 메시지를 나중에 출력하도록 변경하여 수정됩니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
mm/kmemleak: avoid deadlock by moving pr_warn() outside kmemleak_lock
When netpoll is enabled, calling pr_warn_once() while holding
kmemleak_lock in mem_pool_alloc() can cause a deadlock due to lock
inversion with the netconsole subsystem. This occurs because
pr_warn_once() may trigger netpoll, which eventually leads to
__alloc_skb() and back into kmemleak code, attempting to reacquire
kmemleak_lock.
This is the path for the deadlock.
mem_pool_alloc()
-> raw_spin_lock_irqsave(&kmemleak_lock, flags);
-> pr_warn_once()
-> netconsole subsystem
-> netpoll
-> __alloc_skb
-> __create_object
-> raw_spin_lock_irqsave(&kmemleak_lock, flags);
Fix this by setting a flag and issuing the pr_warn_once() after
kmemleak_lock is released.
📍 영향받는 시스템
netpoll 활성화된 Linux 커널 (mm/kmemleak 모듈 포함 버전)
⚔️ 공격 벡터
netpoll 활성화 + 특정 메모리 할당 시나리오에서 자동 트리거 (직접 공격 불가, 설정 기반 DoS)
🛡️ 대응 방법
Linux 커널을 CVE-2025-39736 패치가 포함된 버전으로 업데이트
🔧 검증 코드
=y이면 netpoll이 활성화되어 있으므로 커널 업데이트 필요; =n이면 영향 없음
grep -i netpoll /boot/config-$(uname -r) | grep -E 'CONFIG_NETPOLL|CONFIG_NETCONSOLE'