🇰🇷 한글 설명
Linux 커널의 sched_ext 스케줄러 활성화 시, 이미 종료된 태스크에 대해 초기화 과정을 건너뛰지만 스케줄링 클래스 전환 단계에서 이를 제외하지 않아 잘못된 태스크 상태 전이가 발생하는 취약점입니다. 이로 인해 커널 경고가 발생하거나 시스템 불안정성을 초래할 수 있습니다.
💡 쉬운 설명
컴퓨터의 작업 관리 기능이 이미 끝난 작업을 처리하려고 시도하면서 시스템에 오류 메시지를 띄우거나 혼란을 주는 문제입니다. 이 문제를 해결하기 위해 이미 종료된 작업은 스케줄링 변경 과정에서 제외하도록 수정되었습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
sched/ext: Fix invalid task state transitions on class switch
When enabling a sched_ext scheduler, we may trigger invalid task state
transitions, resulting in warnings like the following (which can be
easily reproduced by running the hotplug selftest in a loop):
sched_ext: Invalid task state transition 0 -> 3 for fish[770]
WARNING: CPU: 18 PID: 787 at kernel/sched/ext.c:3862 scx_set_task_state+0x7c/0xc0
...
RIP: 0010:scx_set_task_state+0x7c/0xc0
...
Call Trace:
<TASK>
scx_enable_task+0x11f/0x2e0
switching_to_scx+0x24/0x110
scx_enable.isra.0+0xd14/0x13d0
bpf_struct_ops_link_create+0x136/0x1a0
__sys_bpf+0x1edd/0x2c30
__x64_sys_bpf+0x21/0x30
do_syscall_64+0xbb/0x370
entry_SYSCALL_64_after_hwframe+0x77/0x7f
This happens because we skip initialization for tasks that are already
dead (with their usage counter set to zero), but we don't exclude them
during the scheduling class transition phase.
Fix this by also skipping dead tasks during class swiching, preventing
invalid task state transitions.
📍 영향받는 시스템
sched_ext 기능이 활성화된 Linux 커널 버전
⚔️ 공격 벡터
로컬 사용자가 sched_ext 스케줄러를 활성화하거나 특정 BPF 시스템 호출을 통해 트리거 가능
🛡️ 대응 방법
sched_ext 관련 패치가 적용된 최신 Linux 커널로 업데이트
🔧 검증 코드
현재 실행 중인 커널 버전을 확인하여 해당 취약점이 해결된 패치 버전인지 확인합니다.