🔍 CVE-2026-46035

5.5
CVSS Score
MEDIUM
2026-05-27
2026-06-16 16:58
✅ 완료

🇰🇷 한글 설명

Linux 커널의 UP(Uniprocessor) 환경에서 NMI(Non-Maskable Interrupt) 컨텍스트를 통해 alloc_frozen_pages_nolock()이 호출될 때 발생하는 취약점입니다. spin_trylock()이 UP 커널에서 항상 성공하는 특성 때문에 zone lock을 중복 획득하게 되어 프리리스트(freelist)가 손상될 수 있습니다.

💡 쉬운 설명

컴퓨터의 핵심 운영체제인 리눅스에서 특정 상황에 메모리를 관리하는 규칙이 어긋나 데이터가 깨질 수 있는 문제입니다. 이로 인해 시스템이 예상치 못하게 멈추거나 오류가 발생할 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: mm/page_alloc: return NULL early from alloc_frozen_pages_nolock() in NMI on UP On UP kernels (!CONFIG_SMP), spin_trylock() is a no-op that unconditionally succeeds even when the lock is already held. As a result, alloc_frozen_pages_nolock() called from NMI context can re-enter rmqueue() and acquire the zone lock that the interrupted context is already holding, corrupting the freelists. With CONFIG_DEBUG_SPINLOCK on UP, the following BUG is triggered with the slub_kunit test module: BUG: spinlock trylock failure on UP on CPU#0, kunit_try_catch/243 [...] Call Trace: <NMI> dump_stack_lvl+0x3f/0x60 do_raw_spin_trylock+0x41/0x50 _raw_spin_trylock+0x24/0x50 rmqueue.isra.0+0x2a9/0xa70 get_page_from_freelist+0xeb/0x450 alloc_frozen_pages_nolock_noprof+0x111/0x1e0 allocate_slab+0x42a/0x500 ___slab_alloc+0xa7/0x4c0 kmalloc_nolock_noprof+0x164/0x310 [...] </NMI> Fix this by returning NULL early when invoked from NMI on a UP kernel.

📍 영향받는 시스템

CONFIG_SMP가 설정되지 않은(UP) Linux Kernel

⚔️ 공격 벡터

NMI 컨텍스트를 유발하는 특정 하드웨어 인터럽트 또는 커널 동작을 통한 메모리 관리 로직 재진입

🛡️ 대응 방법

NMI 컨텍스트에서 호출될 경우 NULL을 조기에 반환하도록 수정된 최신 리눅스 커널로 업데이트

🔧 검증 코드

출력 결과에서 CONFIG_SMP가 설정되어 있지 않고(또는 !CONFIG_SMP), 커널 버전이 취약점이 수정되기 전 버전인지 확인합니다.

Shell / Script
uname -a && grep -E 'CONFIG_SMP|CONFIG_DEBUG_SPINLOCK' /boot/config-$(uname -r)

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H

💻 영향받는 소프트웨어

Linux Kernel