Katalog CVE

CVE-2026-74601

WysokieCVSS 7.8
Opublikowano: Zaktualizowano: Przetłumaczono: NVD NIST

Prawdopodobieństwo exploitacji (EPSS)

Niskie ryzyko
0.14%

Percentyl 3 - wyżej niż 3% wszystkich znanych CVE

Streszczenie

W jądrze Linux wykryto podatność w mechanizmie ring-buffer, gdzie funkcja ring_buffer_swap_cpu() może zamienić bufory per-CPU w trakcie trwającej operacji zapisu. Licznik committing może chwilowo spaść do zera, co pozwala na niebezpieczną zamianę buforów i prowadzi do niespójności stanu oraz ostrzeżenia RB_WARN_ON. Poprawka zastępuje sprawdzanie licznika kontrolą current_context, która jest ustawiana na początku operacji i pozostaje ważna przez cały czas jej trwania.

Ocena ryzyka

Podatność może prowadzić do niespójności danych w buforach pierścieniowych, co może skutkować awarią systemu (panic) lub nieprzewidywalnym zachowaniem, szczególnie w środowiskach używających tracingu. Atakujący lokalny mógłby potencjalnie wykorzystać ten błąd do destabilizacji systemu.

Rekomendacja

Zaleca się natychmiastowe zastosowanie oficjalnej łatki od dostawcy jądra Linux oraz aktualizację systemu do wersji zawierającej poprawkę. Należy również monitorować biuletyny bezpieczeństwa dystrybucji w celu uzyskania informacji o dostępnych aktualizacjach.

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: ring-buffer: Use current_context for safe per-CPU buffer swap The ring_buffer_swap_cpu() function currently checks the per-CPU committing counter to determine if a buffer is actively being written to before performing the swap. However, there exists a race window where this check can be bypassed: ring_buffer_lock_reserve cpu_buffer = buffer->buffers[cpu]; // cpu_buffer_a rb_reserve_next_event rb_start_commit // inc committing if (unlikely(READ_ONCE(cpu_buffer->buffer) != buffer)) {...} __rb_reserve_next rb_move_tail rb_end_commit(cpu_buffer); // dec committing => 0 /* interrupt hits here, successfully swaps! */ local_inc(&cpu_buffer->committing); ring_buffer_unlock_commit cpu_buffer = buffer->buffers[cpu]; // cpu_buffer_b rb_commit rb_end_commit RB_WARN_ON(cpu_buffer, !local_read(&cpu_buffer->committing)) // triggers warning The committing counter can temporarily drop to 0 during a single write operation (within rb_move_tail), creating a window where swap can succeed even though the write is still in progress. This leads to inconsistent buffer state and triggers the RB_WARN_ON in rb_commit(). Replace the committing counter check with current_context checks, which are set at the entry of ring_buffer_lock_reserve() and remain valid throughout the entire write operation, providing a reliable indicator of buffer busy state during swap.

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