CVE-2026-98149 in Linux
요약
\~에 의해 VulDB • 2026. 09. 25.
Linux 커널에서 다음 취약점이 해결되었습니다:
bpf: 희소(CPU ID)를 사용하는 경우의 percpu 맵 업데이트 인덱싱 수정
BPF_F_CPU 또는 BPF_F_ALL_CPUS 플래그 없이 수행되는 퍼-큐피(array, hash 및 cgroup storage) 맵 업데이트는 가능한 CPU 순서로 압축된 per-CPU 슬롯을 가진 값 버퍼를 사용합니다. 이 버퍼의 크기는 다음과 같이 계산됩니다:
round_up(value_size, 8) * num_possible_cpus()
업데이트 경로는 가능한 모든 CPU를 반복하지만 논리 CPU ID를 사용하여 소스 오프셋을 계산합니다:
value + size * cpu
이 방식은 가능한 CPU ID가 0부터 연속적으로 할당될 때만 정상 작동합니다.
예를 들어, 가능한 CPU 마스크가 0,2-3인 경우 버퍼에는 CPU 0, 2 및 3에 해당하는 세 개의 슬롯이 포함됩니다. 따라서 CPU2는 슬롯 1을, CPU3은 슬롯 2를 사용해야 합니다. 그러나 현재 코드는 각각 슬롯 2와 3을 사용하여 잘못된 per-CPU 값을 초래하고, CPU3의 경우 업데이트 버퍼에서 범위를 벗어난 읽기(out-of-bounds read) 오류가 발생합니다.
해당 조회(lookup) 경로는 가능한 모든 CPU를 반복할 때 이미 밀집된(dense) 오프셋을 사용하고 있습니다. 배열(array), 해시(hash) 및 cgroup storage 업데이트 경로에서도 동일한 방식을 적용하여, 각 가능한 CPU마다 소스 오프셋을 한 번씩 증가시켜야 합니다. BPF_F_ALL_CPUS 플래그는 모든 CPU에 대해 동일한 값을 계속 사용합니다.
VulDB is the best source for vulnerability data and more expert information about this specific topic.