Odebrany

CVE-2026-80994

opublikowano:
modyfikacja:
Ocena CVSS
n/a
Brak oceny

>_ Opis

Tłumaczenie automatyczne – może zawierać nieścisłości.

W jądrze Linuksa usunięto następującą lukę:

net: openvswitch: napraw maskę przepływu, której użyj po usunięciu przepływu

Zatwierdzenie w tagu Fixes poniżej zostało zaplanowane w taki sposób, aby przepływ->maska była wolna
poprzez RCU zaraz po usunięciu go ze stołu przepływowego. Wskaźnik
pozostaje w strukturze przepływu i może być dostępny w tej samej strukturze
Sekcja krytyczna RCU. Ma to na celu uniknięcie wymagania ovs_mutex dla
ovs_flow_free().

Jednak usuwając przepływ podczas przetwarzania CMD_DEL, robimy to
nie bierz blokady odczytu RCU przed usunięciem i ovs_flow_cmd_fill_info()
używa później wskaźnika przepływu->maski. Blokada odczytu RCU jest zajęta,
ale w tym momencie jest już późno. Komentarz do tej linijki
przyznaje, że zamek ma charakter kosmetyczny i nie służy żadnemu prawdziwemu celowi.

Prowadzi to do bezpłatnego użytkowania, jeśli pomiędzy nimi upłynie okres karencji RCU
usunięcie i wypełnienie. To krótkie okno wyścigowe, ale istnieje
i może prowadzić do prawdziwej awarii w przypadku alokacji pamięci dla informacji
trwa trochę dłużej:

BŁĄD: KASAN: użycie płyty po zwolnieniu w __ovs_nla_put_key
net/openvswitch/flow_netlink.c:1996
BŁĄD: KASAN: użycie płyty po zwolnieniu w ovs_nla_put_key+0x2463/0x2e30
net/openvswitch/flow_netlink.c:2250
Odczytaj rozmiar 4 pod adresem ffff88801ee89970 za pomocą zadania ovs_flow_del_ec/9487

Zadzwoń do śledzenia:
<ZADANIE>
__ovs_nla_put_key net/openvswitch/flow_netlink.c:1996
ovs_nla_put_key+0x2463/0x2e30 net/openvswitch/flow_netlink.c:2250
ovs_flow_cmd_fill_info+0x420/0x9c0 net/openvswitch/datapath.c:930
ovs_flow_cmd_del+0x53a/0x970 net/openvswitch/datapath.c:1467
...
netlink_rcv_skb+0x156/0x420 net/netlink/af_netlink.c:2556
</ZADANIE>

Przydzielone przez zadanie 9487:
mask_alloc net/openvswitch/flow_table.c:967
flow_mask_insert net/openvswitch/flow_table.c:1012
ovs_flow_tbl_insert+0xea2/0x1a90 net/openvswitch/flow_table.c:1084
ovs_flow_cmd_new+0x7e3/0xd90 net/openvswitch/datapath.c:1086
...
netlink_rcv_skb+0x156/0x420 net/netlink/af_netlink.c:2556

Uwolniony przez zadanie 9485:
rcu_free_sheaf+0x1e/0x100 mm/slub.c:5978
rcu_do_batch kernel/rcu/tree.c:2645
rcu_core+0x59c/0x10c0 jądro/rcu/tree.c:2897
handle_softirqs+0x1e4/0x9a0 jądro/softirq.c:622
...
instr_sysvec_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1062

Funkcja ovs_flow_tbl_remove() musi zostać wywołana po funkcji ovs_flow_cmd_fill_info()
aby uniknąć tego wyścigu. Pomaga to również w czyszczeniu wymuszonego gipsu
oraz kosmetyczna blokada odczytu RCU. Przed zatwierdzeniem w tagu Fixes plik
kolejność nie miała znaczenia, dopóki sam obiekt przepływu nie został uwolniony.

Szersza sekcja krytyczna RCU może być inną opcją, ale mamy
Alokacja GFP_KERNEL przeszkadza.

Zgłoszone w ramach inicjatywy Zero Day Initiative firmy Trend Micro jako ZDI-CAN-32042.

>_ Referencje

Dane podatności pochodzą z oficjalnych źródeł (CVE® List / NVD). Opisy po polsku są tłumaczone automatycznie i mogą zawierać nieścisłości – na stronie rekordu można wyświetlić wersję angielską.

This product uses the NVD API but is not endorsed or certified by the NVD.

Copyright © 1999–2026, The MITRE Corporation. CVE is a registered trademark and the CVE logo is a registered trademark of The MITRE Corporation.

CVE Usage: MITRE hereby grants you a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute Common Vulnerabilities and Exposures (CVE®). Any copy you make for such purposes is authorized provided that you reproduce MITRE's copyright designation and this license in any such copy. ALL DOCUMENTS AND THE INFORMATION CONTAINED THEREIN PROVIDED BY MITRE ARE PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND.

NVD Terms of Use / CVE® Terms of Use / nvd.nist.gov / cve.org