🔍 CVE-2026-98942

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

🇰🇷 한글 설명

Linux 커널 sched_ext 서브시스템에서 CID(코어 ID) 테이블이 RCU 보호 없이 수정 중에도 읽기 함수에 노출되어, 초기화되지 않은 메모리나 불완전한 토폴로지 값을 읽을 수 있는 문제가 수정되었습니다. 이제 테이블은 루트 스케줄러 활성화 시 비공개로 구축된 후 RCU로 공개되며, 관련 커널 함수들이 RCU 읽기 구간 또는 스케줄러 활성 상태를 확인하도록 개선되었습니다.

💡 쉬운 설명

커널 내부의 CPU 번호 관리 표가 완성되기 전에 다른 프로그램이 읽을 수 있어 잘못된 값을 얻을 수 있었습니다. 이제 표를 완전히 만든 뒤에만 공개하도록 고쳐졌습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: sched_ext: Build the cid tables privately and publish them with RCU The cid tables are visible to the cid kfuncs while being modified: the first enable publishes the global pointers before filling them, ops.init_cids() overrides rewrite them in place, and re-enables rebuild them in place. A racing TRACING or SYSCALL program can read unfilled entries, including uninitialized memory in the kmalloc'd tables, or torn topo updates. Tie the tables' lifetimes to the root sched instead: each root enable builds a fresh set privately and publishes the per-table __rcu globals once the layout is final, and root disable unpublishes and RCU-frees the set. A non-NULL global is now always a fully built table which stays valid for the reader's RCU read section, and lookups stay two loads. Kfuncs treat NULL as no-mapping, also after the scheduler exits instead of reporting the stale last mapping. The cid kfuncs are available whether the root scheduler is cid-form or cpu-form, the latter to allow gradual migration to cids. Every root therefore builds and publishes a default mapping. Every reader must either be gated on scheduler liveness or NULL-check inside an RCU read section. Fix the two kfuncs that were neither: scx_bpf_this_cid() read the table with no RCU or preemption protection and scx_bpf_task_cid() relied on KF_RCU, which doesn't put a sleepable program in an RCU read section. The hotplug callbacks are instead serialized by retiring the tables inside the cpus_read_lock() section that clears scx_root. v2: Document why every root builds the tables (desc + cid.c comment).

📍 영향받는 시스템

sched_ext 기능을 포함한 Linux 커널 (수정 커밋 이전 버전, 정확한 버전 범위는 커널 릴리스 노트 확인 필요)

⚔️ 공격 벡터

eBPF TRACING 또는 SYSCALL 프로그램이 스케줄러 초기화/재구성 중에 CID 커널 함수를 호출하여 미초기화 메모리나 불완전한 값을 읽는 방식 (로컬 권한 필요)

🛡️ 대응 방법

수정이 포함된 최신 Linux 커널로 업데이트하고 재부팅하세요.

🔧 검증 코드

출력된 커널 버전을 배포판 보안 공지 또는 커널 패치 목록과 비교하여, 해당 수정이 포함된 버전 이상인지 확인하세요. sched_ext 미사용 시 영향이 제한적입니다.

Shell / Script
uname -r

💻 영향받는 소프트웨어

Linux Kernel