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-76461Krytyczne
Podatność w analizie wiadomości e-mail w oprogramowaniu Cisco AsyncOS dla Cisco Secure Email Gateway wynika z niewystarczającej walidacji logiki parsowania. Nieuwierzytelniony zdalny atakujący może wysłać spreparowaną wiadomość zawierającą złośliwe instrukcje SQL, co może prowadzić do wykonania dowolnych poleceń SQL i w konsekwencji poleceń z uprawnieniami roota w systemie operacyjnym.
- CVE-2026-76443Krytyczne
Podatności oznaczone CVE-2026-76443 dotyczą problemów z niewłaściwą neutralizacją, zgrupowanych w filarze CWE-707, i zostały wykryte w ramach wewnętrznego przeglądu bezpieczeństwa Cisco. Dotyczą one Cisco Secure Email Gateway oraz Cisco Secure Email and Web Manager.
- CVE-2026-76441Krytyczne
Podatności oznaczone CVE-2026-76441 dotyczą problemów z niewłaściwą kontrolą dostępu, zgrupowanych w filarze CWE-284, i zostały wykryte w ramach wewnętrznego przeglądu bezpieczeństwa Cisco. Dotyczą one Cisco Secure Email Gateway oraz Cisco Secure Email and Web Manager.
- CVE-2026-76440Krytyczne
Podatności oznaczone CVE-2026-76440 dotyczą problemów z przechodzeniem ścieżek (path traversal), zgrupowanych w filarze CWE-23, i zostały wykryte w ramach wewnętrznego przeglądu bezpieczeństwa Cisco. Dotyczą one Cisco Secure Email Gateway oraz Cisco Secure Email and Web Manager.
- CVE-2026-20353Krytyczne
Podatności oznaczone CVE-2026-20353 dotyczą problemów z niewłaściwą kontrolą zasobu w cyklu jego życia, zgrupowanych w filarze CWE-664, i zostały wykryte w ramach wewnętrznego przeglądu bezpieczeństwa Cisco. Dotyczą one Cisco Secure Email Gateway oraz Cisco Secure Email and Web Manager.
- CVE-2026-61534Krytyczne
W bibliotece Yayson do serializacji i odczytu danych JSON API w JavaScript w wersjach przed 4.3.0 komponenty Store i LegacyStore używają kontrolowanych przez atakującego nazw typu, id i relacji JSON:API jako kluczy w tablicach wyszukiwania. Dokument z typem __proto__ powoduje modyfikację Object.prototype, a atakujący kontroluje nazwę zanieczyszczanej właściwości przez id oraz jej wartość przez atrybuty. Może to prowadzić do zanieczyszczenia prototypu w całym procesie, powodując odmowę usługi i korupcję logiki.
- CVE-2026-57145Krytyczne
W PraisonAI, systemie zespołów wieloagentowych, w wersjach przed 4.6.62 plik src/praisonai/praisonai/tools/multiedit.py przekazuje kontrolowany przez LLM parametr filepath bezpośrednio do funkcji open bez odrzucania przechodzenia ścieżek, rozwiązywania dowiązań symbolicznych, granicy obszaru roboczego ani sprawdzania chronionych ścieżek. Agenci podatni na wpływ promptów mogą odczytywać pliki lub je nadpisywać.
- CVE-2026-57131Krytyczne
W PraisonAI, systemie zespołów wieloagentowych, w wersjach przed 4.6.58 funkcja praisonai.jobs.server.create_app montuje praisonai.jobs.router.create_router pod /api/v1/runs bez uwierzytelniania i autoryzacji dla poszczególnych zadań. Klienci sieciowi mogą przesyłać kontrolowane przez atakującego prompty i konfigurację agenta, wyświetlać i odczytywać zadania, strumieniować wyniki oraz anulować lub usuwać zadania innych.
- CVE-2026-90961Krytyczne
Wtyczki LdapAuth i LinOTPAuth w MISP zawierają podatność na ominięcie uwierzytelniania. Brak walidacji pól email i hasło pozwala na przekazanie pustych lub nieprawidłowych wartości do logiki uwierzytelniania, co w przypadku LDAP może skutkować nieuwierzytelnionym bindem (RFC 4513) i zalogowaniem się jako znany użytkownik bez znajomości hasła. Podobny problem występuje w LinOTP, gdzie puste hasło może zostać zaakceptowane.
- CVE-2026-90898Krytyczne
Bifrost rejestruje klientów MCP przez API zarządzania, a klient stdio to polecenie wraz z argumentami, które jest uruchamiane natychmiast po dodaniu klienta, bez wymaganego uzgadniania MCP. Domyślnie uwierzytelnianie jest wyłączone (governance.auth_config.is_enabled=false), więc każdy wywołujący jest traktowany jako lokalny administrator. Pojedynczy nieuwierzytelniony POST /api/mcp/client wystarcza, aby uruchomić dowolny program jako użytkownik procesu Bifrost (appuser w oficjalnym obrazie).
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.

