🇰🇷 한글 설명
Linux 커널의 sched_ext 구성 요소에서 scx_claim_exit() 호출과 헬퍼 워크 실행 사이에 선점(preemption)이 발생할 수 있는 취약점입니다. 이 과정에서 작업이 중단되면 바이패스 모드가 활성화되지 않고 작업 스케줄링이 중단되어 시스템이 멈추는 현상이 발생합니다.
💡 쉬운 설명
컴퓨터의 두뇌 역할을 하는 커널이 작업을 정리하는 도중에 다른 작업에 밀려나면서, 정리 작업을 마무리하지 못해 시스템이 완전히 멈춰버리는 문제입니다. 이로 인해 컴퓨터가 응답하지 않는 상태(Freezing)가 될 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
sched_ext: Disable preemption between scx_claim_exit() and kicking helper work
scx_claim_exit() atomically sets exit_kind, which prevents scx_error() from
triggering further error handling. After claiming exit, the caller must kick
the helper kthread work which initiates bypass mode and teardown.
If the calling task gets preempted between claiming exit and kicking the
helper work, and the BPF scheduler fails to schedule it back (since error
handling is now disabled), the helper work is never queued, bypass mode
never activates, tasks stop being dispatched, and the system wedges.
Disable preemption across scx_claim_exit() and the subsequent work kicking
in all callers - scx_disable() and scx_vexit(). Add
lockdep_assert_preemption_disabled() to scx_claim_exit() to enforce the
requirement.
📍 영향받는 시스템
Linux kernel (sched_ext 기능이 활성화된 버전)
⚔️ 공격 벡터
로컬 시스템에서 BPF 스케줄러의 오류를 유도하여 스케줄링 중단 및 시스템 정지 유발
🛡️ 대응 방법
scx_claim_exit()와 헬퍼 워크 실행 사이에 선점을 방지하도록 패치된 최신 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인