🇰🇷 한글 설명
Linux 커널의 x86 resctrl 구성 요소에서 SNC(Sub-NUMA Clustering)가 활성화된 상태로 CPU를 오프라인 처리할 때 경계 외 메모리 접근(Out-of-bounds access)이 발생할 수 있는 취약점입니다. 모니터링 도메인이 오프라인이 될 때 CPU 마스크가 비어 있어 NUMA 노드 ID를 조회하는 과정에서 잘못된 인덱스를 참조하게 됩니다.
💡 쉬운 설명
컴퓨터의 특정 기능을 끌 때, 시스템이 존재하지 않는 메모리 영역을 잘못 읽으려고 시도하여 오류가 발생할 수 있는 문제입니다. 이로 인해 시스템이 불안정해지거나 예상치 못한 동작을 할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
x86,fs/resctrl: Prevent out-of-bounds access while offlining CPU when SNC enabled
The architecture updates the cpu_mask in a domain's header to track which
online CPUs are associated with the domain. When this mask becomes empty
the architecture initiates offline of the domain that includes calling
on resctrl fs to offline the domain. If it is a monitoring domain in
which LLC occupancy is tracked resctrl fs forces the limbo handler to
clear all busy RMID state associated with the domain.
The limbo handler always reads the current event value associated with a
busy RMID irrespective of it being checked as part of regular "is it still
busy" check or whether it will be forced released anyway. When reading an
RMID on a system with SNC enabled the "logical RMID" is converted to the
"physical RMID" and this conversion requires the NUMA node ID of the
resctrl monitoring domain that is in turn determined by querying the NUMA
node ID of any CPU belonging to the monitoring domain.
When the monitoring domain is going offline its cpu_mask is empty causing
the NUMA node ID query via cpu_to_node() to be done with "nr_cpu_ids" as
argument resulting in an out-of-bounds access.
Refactor the limbo handler to skip reading the RMID when the RMID will
just be forced to no longer be dirty in the domain anyway. Add a safety
check to the architecture's RMID reader to protect against this scenario.
📍 영향받는 시스템
SNC(Sub-NUMA Clustering)가 활성화된 x86 아키텍처 기반의 Linux 커널
⚔️ 공격 벡터
로컬 공격자가 CPU 오프라인 프로세스를 유도하여 메모리 경계 외 접근을 발생시킴
🛡️ 대응 방법
해당 취약점이 수정된 최신 Linux 커널 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 취약점이 패치된 최신 보안 업데이트 버전인지 확인