CVE-2026-23294
WysokieStreszczenie
W jądrze Linuxa zidentyfikowano podatność związana z wyścigiem w devmap na rdzeniach PREEMPT_RT. Problem polega na tym, że wiele zadań preempcji może jednocześnie uzyskiwać dostęp do per-CPU xdp_dev_bulk_queue, co prowadzi do błędów takich jak podwójne zwolnienie pamięci i usunięcie po zwolnieniu.
Ocena ryzyka
Podatność ta może prowadzić do poważnych problemów z integralnością pamięci, co z kolei może skutkować awarią systemu lub nieprzewidywalnym zachowaniem aplikacji. Organizacje powinny być świadome ryzyka związanego z używaniem podatnych wersji jądra.
Rekomendacja
Zaleca się aktualizację jądra Linux do wersji, w której wprowadzono poprawkę, aby zlikwidować ryzyko związane z równoczesnym dostępem do xdp_dev_bulk_queue. Należy również rozważyć zastosowanie lokalnych blokad w kodzie, aby zminimalizować ryzyko wyścigów.
Powiązane podatności
- CVE-2026-60043Krytyczne
Nieuwierzytelniony zdalny atakujący może przeprowadzić atak XSS na zalogowanego użytkownika backendu, co pozwala na wykonanie krytycznych akcji systemowych, takich jak wyłączenie serwera lub przywrócenie przesłanego backupu.
- CVE-2026-13312Krytyczne
Opisana podatność może umożliwić atakującemu przejęcie kontroli nad systemem. Szczegóły techniczne nie zostały podane w opisie.
- CVE-2026-115646Krytyczne
Podatność polegająca na częściowym porównywaniu ciągów znaków w produkcie HiRDB. Problem dotyczy serwera HiRDB w wersjach 10 (od 10-00 przed 10-12-01) oraz 9 (od 09-50-06 do 09-66-22), a także wersji z dodatkowymi funkcjami.
- CVE-2026-89126Krytyczne
SAP Web Dispatcher nieprawidłowo waliduje dane sieciowe przetwarzane przez komponent wewnętrzny. Nieuwierzytelniony atakujący może wysłać spreparowany ruch sieciowy, wywołując uszkodzenie pamięci, co może prowadzić do wykonania dowolnego kodu i pełnego przejęcia systemu.
- CVE-2026-89119Krytyczne
SAP Web Dispatcher oraz SAP NetWeaver Application Server ABAP (Internet Communication Manager) nie wykonują wystarczającej walidacji żądań w niektórych funkcjach administracyjnych. Nieuwierzytelniony atakujący może nakłonić zalogowanego administratora do odwiedzenia złośliwego linku, co może wywołać niepożądane akcje w sesji administratora i doprowadzić do pełnego przejęcia systemu operacyjnego.
- CVE-2026-89103Krytyczne
SAP Gateway aktywuje domyślną listę kontroli dostępu z wysokimi uprawnieniami, co pozwala zaklasyfikować zewnętrznego atakującego jako wewnętrzny serwer aplikacji. Nieuwierzytelniony atakujący z dostępem sieciowym do SAP Gateway może wykonywać nieautoryzowane działania w środowisku aplikacji.
- CVE-2026-76965Krytyczne
SAP NetWeaver Application Server ABAP i ABAP Platform nie wykonują niezbędnych kontroli autoryzacji dla niektórych funkcji wewnętrznych. Atakujący z niskimi uprawnieniami może wywołać podatną funkcjonalność i wykonać dowolne polecenia systemu operacyjnego na hoście.
- CVE-2026-76964Krytyczne
SAP NetWeaver Application Server ABAP nieprawidłowo waliduje dane sieciowe przetwarzane przez komponent wewnętrzny. Nieuwierzytelniony atakujący może wysłać spreparowany ruch sieciowy, wywołując uszkodzenie pamięci, co może prowadzić do wykonania dowolnego kodu i pełnego przejęcia systemu.
- CVE-2026-125086Krytyczne
W urządzeniu D-Link M60 1.12.B01 w pliku /etc/emDaemon/mosquitto.conf komponentu emDaemon MQTT Broker występują zaszyte na stałe poświadczenia. Podatność można wykorzystać zdalnie, a publicznie ujawniony exploit może być już używany.
- CVE-2026-124600Krytyczne
GV-Face przesyła poufne dane uwierzytelniające użytkowników oraz powiązane dane uwierzytelniania przez niezaszyfrowane połączenia HTTP. Ruch HTTP nie jest szyfrowany, co umożliwia atakującemu przechwycenie transmisji.
Oryginalny opis (angielski, źródło NVD)
In the Linux kernel, the following vulnerability has been resolved: bpf: Fix race in devmap on PREEMPT_RT On PREEMPT_RT kernels, the per-CPU xdp_dev_bulk_queue (bq) can be accessed concurrently by multiple preemptible tasks on the same CPU. The original code assumes bq_enqueue() and __dev_flush() run atomically with respect to each other on the same CPU, relying on local_bh_disable() to prevent preemption. However, on PREEMPT_RT, local_bh_disable() only calls migrate_disable() (when PREEMPT_RT_NEEDS_BH_LOCK is not set) and does not disable preemption, which allows CFS scheduling to preempt a task during bq_xmit_all(), enabling another task on the same CPU to enter bq_enqueue() and operate on the same per-CPU bq concurrently. This leads to several races: 1. Double-free / use-after-free on bq->q[]: bq_xmit_all() snapshots cnt = bq->count, then iterates bq->q[0..cnt-1] to transmit frames. If preempted after the snapshot, a second task can call bq_enqueue() -> bq_xmit_all() on the same bq, transmitting (and freeing) the same frames. When the first task resumes, it operates on stale pointers in bq->q[], causing use-after-free. 2. bq->count and bq->q[] corruption: concurrent bq_enqueue() modifying bq->count and bq->q[] while bq_xmit_all() is reading them. 3. dev_rx/xdp_prog teardown race: __dev_flush() clears bq->dev_rx and bq->xdp_prog after bq_xmit_all(). If preempted between bq_xmit_all() return and bq->dev_rx = NULL, a preempting bq_enqueue() sees dev_rx still set (non-NULL), skips adding bq to the flush_list, and enqueues a frame. When __dev_flush() resumes, it clears dev_rx and removes bq from the flush_list, orphaning the newly enqueued frame. 4. __list_del_clearprev() on flush_node: similar to the cpumap race, both tasks can call __list_del_clearprev() on the same flush_node, the second dereferences the prev pointer already set to NULL. The race between task A (__dev_flush -> bq_xmit_all) and task B (bq_enqueue -> bq_xmit_all) on the same CPU: Task A (xdp_do_flush) Task B (ndo_xdp_xmit redirect) ---------------------- -------------------------------- __dev_flush(flush_list) bq_xmit_all(bq) cnt = bq->count /* e.g. 16 */ /* start iterating bq->q[] */ <-- CFS preempts Task A --> bq_enqueue(dev, xdpf) bq->count == DEV_MAP_BULK_SIZE bq_xmit_all(bq, 0) cnt = bq->count /* same 16! */ ndo_xdp_xmit(bq->q[]) /* frames freed by driver */ bq->count = 0 <-- Task A resumes --> ndo_xdp_xmit(bq->q[]) /* use-after-free: frames already freed! */ Fix this by adding a local_lock_t to xdp_dev_bulk_queue and acquiring it in bq_enqueue() and __dev_flush(). These paths already run under local_bh_disable(), so use local_lock_nested_bh() which on non-RT is a pure annotation with no overhead, and on PREEMPT_RT provides a per-CPU sleeping lock that serializes access to the bq.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

