Katalog CVE

CVE-2026-98149

Nieznane
Opublikowano: Przetłumaczono: NVD NIST

Streszczenie

W jądrze Linux w podsystemie BPF ścieżki aktualizacji map per-CPU (array, hash, cgroup storage) bez BPF_F_CPU lub BPF_F_ALL_CPUS używają logicznego identyfikatora CPU do obliczenia przesunięcia w buforze, zamiast gęstego przesunięcia. Przy rzadkich identyfikatorach CPU (np. maska 0,2-3) powoduje to nieprawidłowe wartości per-CPU oraz odczyt poza zakresem bufora dla CPU3.

Ocena ryzyka

Nieprawidłowe wartości per-CPU mogą prowadzić do błędnych decyzji programów BPF, a odczyt poza zakresem bufora może powodować błędy jądra lub ujawnienie danych, stanowiąc ryzyko dla stabilności i bezpieczeństwa systemu.

Rekomendacja

Zaktualizuj jądro Linux do wersji z poprawką, która w ścieżkach aktualizacji map array, hash i cgroup storage używa gęstego przesunięcia iterowanego po możliwych CPU, tak jak w ścieżkach wyszukiwania.

Inne podatności w Linux kernel

Zobacz wszystkie
Oryginalny opis (angielski, źródło NVD)

In the Linux kernel, the following vulnerability has been resolved: bpf: Fix percpu map update indexing with sparse CPU IDs Per-CPU array, hash, and cgroup storage map updates without BPF_F_CPU or BPF_F_ALL_CPUS use a value buffer whose per-CPU slots are packed in possible-CPU order. The buffer is sized as: round_up(value_size, 8) * num_possible_cpus() The update paths iterate over possible CPUs, but use the logical CPU ID to calculate the source offset: value + size * cpu This only works when possible CPU IDs are contiguous starting at zero. For example, with a possible CPU mask of 0,2-3, the buffer contains three slots corresponding to CPUs 0, 2, and 3. CPU2 is therefore expected to use slot 1 and CPU3 slot 2. Instead, the current code uses slots 2 and 3 respectively, causing incorrect per-CPU values and an out-of-bounds read from the update buffer for CPU3. The corresponding lookup paths already use a dense offset while iterating over possible CPUs. Do the same for the array, hash, and cgroup storage update paths, advancing the source offset once for each possible CPU. BPF_F_ALL_CPUS continues to use the same value for every CPU.

Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS