Odebrany

CVE-2026-98022

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: cap tx_queue_len w S16_MAX, aby zapobiec alokacji zbyt dużych pierścieni

Kilka podsystemów przydziela bufory pierścieniowe o rozmiarze dev->tx_queue_len
bez górnej granicy. Nieuprzywilejowany użytkownik (poprzez unshare -Urn) może ustawić a
ogromny tx_queue_len i wyczerpuj pamięć globalną przydziałami pierścieni:

- pfifo_fast: pfifo_fast_init() i pfifo_fast_change_tx_queue_len()
przydziel 3 pierścienie skb_array każdy z wpisami tx_queue_len.
- tun: tun_queue_resize() i ścieżka dołączenia do kolejki resize ptr_rings
do tx_queue_len w powiadamiaczu NETDEV_CHANGE_TX_QUEUE_LEN.
- tap (macvtap/ipvtap): tap_queue_resize() i tap_init() zmiana rozmiaru/init
ptr_rings do tx_queue_len w tym samym powiadamiającym.

netif_change_tx_queue_len() jest pojedynczym punktem wejścia dla IFLA_TXQLEN,
sysfs i plik ioctl SIOCSIFTXQLEN. Czapka new_len w S16_MAX (32767)
tam, więc wartość przewymiarowana zostanie odrzucona w określonym czasie. To zajmuje
wpływa na to, czy urządzenie jest włączone, czy wyłączone, zanim będzie dev->tx_queue_len
napisany, zanim jakikolwiek powiadamiający odpali sygnał i zanim zostanie przydzielony jakikolwiek dzwonek.
Sprawdzenie „> S16_MAX” uwzględnia również poprzedni unsigned-long
test obcięcia i negatywny ifr_qlen z ioctl ląduje daleko
powyżej nakrętki po konwersji, więc obydwa stare tryby awarii są uwzględnione
przez jedno porównanie.

tx_queue_len jest niejednoznaczne: zarówno mnożnik rozmiaru na pierścień, jak i a
domyślne pokrętło długości/limitu kolejki dla konsumentów, którzy alokują
nic o ustawionym czasie (limity pfifo/bfifo/gred/plug/sfb, htb
direct_qlen, qfq max_classes, teql). Jako największy wybrano 32767
wartość NLA_POLICY_FULL_RANGE może wyrazić dla u32 IFLA_TXQLEN
zasady w patchu 2/3, zachowując legalną długość kolejki
ścieżki o wysokim BDP; kompromis między pamięcią pierścieniową w przypadku wspólnego pokrętła
ujawnione poniżej.

Warunki odtworzenia błędu:
- CONFIG_NET_SCHED=y, CONFIG_VETH=y, CONFIG_USER_NS=y, CONFIG_NET_NS=y.
- Nieuprzywilejowany użytkownik w nowej przestrzeni nazw użytkownik+net (cofnij udostępnianie -Urn).
- pfifo_fast: utwórz pary veth, ustaw tx_queue_len na 500000, dołącz
mq+pfifo_fast. ~28 iteracji OOM dla gościa 2 GB.
- tun: utwórz 50 urządzeń tun za pomocą IFF_MULTI_QUEUE, ustaw tx_queue_len na
500000, otwórz 8 kolejek każda. ~1,6 GB alokacji ptr_ring OOM a
Gość 512 MB.
- dotknij: tak samo jak tun z IFF_TAP. ~960 MB OOM dla gościa o wielkości 512 MB.
- W poprawionym jądrze odrzucany jest zbyt duży plik tx_queue_len
-ERANGE o zadanym czasie (wszystkie cztery ścieżki: RTM_SETLINK, RTM_NEWLINK
create, sysfs, ioctl - dwa ostatnie poprzez to sprawdzenie, pierwsze
dwa za pomocą odpowiednio tego sprawdzenia i polityki analizy 2/3).

>_ 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