🔍 CVE-2024-49926

5.5
CVSS Score
MEDIUM
2024-10-21
2026-10-30 13:17
✅ 완료

🇰🇷 한글 설명

Linux 커널에서 CONFIG_FORCE_NR_CPUS=y로 빌드된 경우 nr_cpu_ids가 실제 가능한 CPU 수 대신 NR_CPUS로 정의되어, rcu_tasks_need_gpcb() 함수가 존재하지 않는 percpu rtpcp 변수에 접근해 커널 패닉이 발생하는 문제입니다. 수정은 CPU 번호에 구멍이 있을 수 있음을 고려해 nr_cpu_ids 대신 최대 가능 CPU 번호를 사용하도록 변경하는 것입니다.

💡 쉬운 설명

커널 설정에 따라 시스템이 존재하지 않는 CPU 영역의 메모리를 잘못 읽어 갑자기 멈출 수 있습니다. 이는 주로 시스템 안정성 문제이며, 패치를 적용하면 해결됩니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: rcu-tasks: Fix access non-existent percpu rtpcp variable in rcu_tasks_need_gpcb() For kernels built with CONFIG_FORCE_NR_CPUS=y, the nr_cpu_ids is defined as NR_CPUS instead of the number of possible cpus, this will cause the following system panic: smpboot: Allowing 4 CPUs, 0 hotplug CPUs ... setup_percpu: NR_CPUS:512 nr_cpumask_bits:512 nr_cpu_ids:512 nr_node_ids:1 ... BUG: unable to handle page fault for address: ffffffff9911c8c8 Oops: 0000 [#1] PREEMPT SMP PTI CPU: 0 PID: 15 Comm: rcu_tasks_trace Tainted: G W 6.6.21 #1 5dc7acf91a5e8e9ac9dcfc35bee0245691283ea6 RIP: 0010:rcu_tasks_need_gpcb+0x25d/0x2c0 RSP: 0018:ffffa371c00a3e60 EFLAGS: 00010082 CR2: ffffffff9911c8c8 CR3: 000000040fa20005 CR4: 00000000001706f0 Call Trace: <TASK> ? __die+0x23/0x80 ? page_fault_oops+0xa4/0x180 ? exc_page_fault+0x152/0x180 ? asm_exc_page_fault+0x26/0x40 ? rcu_tasks_need_gpcb+0x25d/0x2c0 ? __pfx_rcu_tasks_kthread+0x40/0x40 rcu_tasks_one_gp+0x69/0x180 rcu_tasks_kthread+0x94/0xc0 kthread+0xe8/0x140 ? __pfx_kthread+0x40/0x40 ret_from_fork+0x34/0x80 ? __pfx_kthread+0x40/0x40 ret_from_fork_asm+0x1b/0x80 </TASK> Considering that there may be holes in the CPU numbers, use the maximum possible cpu number, instead of nr_cpu_ids, for configuring enqueue and dequeue limits. [ neeraj.upadhyay: Fix htmldocs build error reported by Stephen Rothwell ]

📍 영향받는 시스템

CONFIG_FORCE_NR_CPUS=y로 빌드된 Linux 커널 (수정 전 안정 브랜치 전반, 예: 6.6.x 계열)

⚔️ 공격 벡터

직접적인 원격 공격 경로는 명확하지 않으며, 주로 특정 커널 빌드 설정에서 부팅 시 발생하는 서비스 거부(커널 패닉) 문제입니다.

🛡️ 대응 방법

커널을 해당 수정이 포함된 최신 안정 버전으로 업데이트하거나 배포판의 보안 업데이트를 적용하십시오.

🔧 검증 코드

출력된 커널 버전이 수정이 포함된 패치 버전 이상인지 확인하고, CONFIG_FORCE_NR_CPUS=y가 설정되어 있는지 확인하세요. 설정이 y이고 커널 버전이 패치 이전이라면 취약할 수 있습니다.

Shell / Script
uname -r && grep -E 'CONFIG_FORCE_NR_CPUS' /boot/config-$(uname -r) 2>/dev/null

📊 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