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.

출처

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!