🔍 CVE-2026-99085

0.0
CVSS Score
UNKNOWN
2026-10-23
2026-10-23 13:17
✅ 완료

🇰🇷 한글 설명

Linux 커널 sched_ext에서 CPU가 종료될 때 해당 CPU의 rq에 남아 있는 BPF 스케줄러 보유 태스크 또는 사용자 DSQ 태스크가 제대로 이동되지 않아 CPU 핫플러그가 교착 상태에 빠지는 문제가 수정되었습니다. 수정 사항은 rq가 오프라인이 될 때 로컬 DSQ에 없는 태스크를 재큐잉하고, SCX_RQ_ONLINE 플래그로 ops.dispatch() 실행을 rq 오프라인 시점까지 유지하도록 변경한 것입니다.

💡 쉬운 설명

컴퓨터의 CPU 코어를 끄는 과정에서 일부 작업이 빠져나가지 못해 시스템이 멈추는 버그입니다. 이번 수정으로 종료되는 코어의 작업이 정상적으로 옮겨져 CPU 종료가 완료됩니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: sched_ext: Fix CPU hotplug hang when a dying CPU's tasks sit in the BPF scheduler A CPU going down has to empty its own rq. Its hotplug thread waits in sched_cpu_wait_empty() until nothing else is left, and the only thing that wakes it is balance_push(), which runs from __schedule() on the dying CPU and pushes off the migratable tasks the CPU picks. sched_ext breaks this. A task sitting on a user DSQ or held by the BPF scheduler is still counted on its rq, but an inactive CPU no longer calls ops.dispatch() and can't pull the task back. The dying CPU goes idle with the task still counted, and one of two things happens: - Another CPU consumes the task. The rq empties without a __schedule() on the dying CPU, so the hotplug thread is never woken and cpu_down() hangs holding cpu_hotplug_lock. - The task is affine only to the dying CPU. Nothing can move it, and the offline stalls until the watchdog ejects the BPF scheduler. When the rq goes offline, re-enqueue every task on it that isn't already on the local DSQ. An enqueue on an offline rq lands on the local DSQ, so the dying CPU itself picks the tasks and balance_push() pushes them off, the same as for the other sched classes. From then on no sched_ext path on another CPU can pull a task off the rq. ops.dispatch() currently stops as soon as the CPU goes inactive, and CPU hotplug then waits for an RCU grace period before taking the rq offline. A BPF-held task affine only to the dying CPU and preempted inside an RCU read-side critical section would block that grace period, and the rq would never go offline. Test SCX_RQ_ONLINE directly so that ops.dispatch() keeps running until the rq goes offline. Only the dying CPU's own hotplug thread clears the flag during teardown, and task_can_run_on_remote_rq() still keeps other rqs' tasks off the CPU.

📍 영향받는 시스템

sched_ext(BPF 기반 스케줄러)를 사용하는 Linux 커널 버전 (수정 커밋 이전 버전, 정확한 범위는 확인 필요)

⚔️ 공격 벡터

CVSS 점수가 0.0으로 미평가 상태이며, 공개된 정보상 원격 공격 경로가 명확하지 않은 커널 안정성(교착 상태) 결함으로 보임. 로컬 권한 사용자가 CPU 핫플러그를 유발하여 서비스 거부를 일으킬 가능성이 있음

🛡️ 대응 방법

최신 Linux 커널 배포판 업데이트를 적용하거나 CVE-2026-99085 관련 upstream 수정 커밋이 포함된 커널로 업그레이드

🔧 검증 코드

출력된 커널 버전을 배포판 보안 공지 또는 upstream 수정 커밋이 포함된 버전과 비교하여, 해당 수정이 적용된 버전 이상이면 패치된 것이고 미만이면 취약한 것으로 판단합니다.

Shell / Script
uname -r

💻 영향받는 소프트웨어

Linux Kernel