🔍 CVE-2026-45919

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

🇰🇷 한글 설명

Linux 커널의 스케줄러(sched/rt)에서 RT 부하 분산 과정 중 특정 조건에서 CPU0가 자기 자신에게 반복적으로 IPI(Inter-Processor Interrupt)를 보내는 무한 루프가 발생합니다. 이로 인해 CPU가 지속적인 인터럽트에 빠져 하드락업(Hardlockup) 상태가 되어 시스템이 멈출 수 있습니다.

💡 쉬운 설명

컴퓨터의 두뇌 역할을 하는 CPU가 스스로에게 너무 많은 일을 시키는 바람에 다른 일을 전혀 못 하고 멈춰버리는 현상입니다. 특정 작업들이 겹칠 때 시스템이 응답하지 않는 상태가 될 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: sched/rt: Skip currently executing CPU in rto_next_cpu() CPU0 becomes overloaded when hosting a CPU-bound RT task, a non-CPU-bound RT task, and a CFS task stuck in kernel space. When other CPUs switch from RT to non-RT tasks, RT load balancing (LB) is triggered; with HAVE_RT_PUSH_IPI enabled, they send IPIs to CPU0 to drive the execution of rto_push_irq_work_func. During push_rt_task on CPU0, if next_task->prio < rq->donor->prio, resched_curr() sets NEED_RESCHED and after the push operation completes, CPU0 calls rto_next_cpu(). Since only CPU0 is overloaded in this scenario, rto_next_cpu() should ideally return -1 (no further IPI needed). However, multiple CPUs invoking tell_cpu_to_push() during LB increments rd->rto_loop_next. Even when rd->rto_cpu is set to -1, the mismatch between rd->rto_loop and rd->rto_loop_next forces rto_next_cpu() to restart its search from -1. With CPU0 remaining overloaded (satisfying rt_nr_migratory && rt_nr_total > 1), it gets reselected, causing CPU0 to queue irq_work to itself and send self-IPIs repeatedly. As long as CPU0 stays overloaded and other CPUs run pull_rt_tasks(), it falls into an infinite self-IPI loop, which triggers a CPU hardlockup due to continuous self-interrupts. The trigging scenario is as follows: cpu0 cpu1 cpu2 pull_rt_task tell_cpu_to_push <------------irq_work_queue_on rto_push_irq_work_func push_rt_task resched_curr(rq) pull_rt_task rto_next_cpu tell_cpu_to_push <-------------------------- atomic_inc(rto_loop_next) rd->rto_loop != next rto_next_cpu irq_work_queue_on rto_push_irq_work_func Fix redundant self-IPI by filtering the initiating CPU in rto_next_cpu(). This solution has been verified to effectively eliminate spurious self-IPIs and prevent CPU hardlockup scenarios.

📍 영향받는 시스템

Linux Kernel (RT 스케줄러 관련 기능이 활성화된 버전)

⚔️ 공격 벡터

CPU 집약적인 RT 작업과 커널 공간에 머무는 CFS 작업이 특정 조건으로 결합될 때 발생하는 로컬 시스템 부하 유발

🛡️ 대응 방법

rto_next_cpu() 함수에서 현재 실행 중인 CPU를 검색 대상에서 제외하도록 커널 패치를 적용해야 합니다.

🔧 검증 코드

출력된 커널 버전이 해당 취약점이 수정된 최신 패치 버전인지 확인합니다.

Shell / Script
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