Odebrany

CVE-2026-98799

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ę:

bpf: Pomiń odłączone progi w obrazach trampoliny, które są nadal w użyciu

bpf_tramp_image_put() upewnia się, że obraz trampoliny nie zostanie zwolniony podczas
zadanie może nadal być w nim uruchomione, ale nic podobnego nie jest robione dla
progs wywoływane przez ten obraz. Detach opuszcza ostatnie odniesienie do progu w prawo
zostanie usunięty, a program zostanie zwolniony po okresach karencji, na tej podstawie, że a
zadanie nadal znajdujące się w śledzonej funkcji pomija progi fexit po kliknięciu nop
ip_after_call zostało poprawione do skoku.

Pomija to zadanie śpiące w programie, który działa wcześniej
oderwany, na który nie czeka żadna karencja:

Procesor 0 Procesor 1
na obrazku I, śpiąca w prog S
odłącz P od trampoliny I
-> nowy obraz, bpf_tramp_image_put(I)
bpf_prog_put(P), ostatni ref
okresy karencji, P wolne
wrócił z s
__bpf_prog_enter(P)
wywołaj P->bpf_func

Jeśli S i P są fexit progami, zadanie przekroczyło już załatany skok,
a obrazy tylko fentry go nie mają. Na x86 jest to int3 in
zatruta pamięć bpf_prog_pack:

Ups: int3: 0000 [#1] SMP NOPTI
Procesor: 18 UID: 0 PID: 94573 Comm: x169 Nieskażony 6.18.44 #1 PREEMPT (leniwy)
RIP: 0010:0xffffffffc0601d8d
Zadzwoń do śledzenia:
<ZADANIE>
? bpf_trampolina_6442515411+0x1a4/0x21b
bpf_lsm_bprm_committed_creds+0x5/0x10
security_bprm_committed_creds+0x5f/0x70
Begin_new_exec+0x2d6/0x410
...

Uderzyliśmy w to podczas produkcji, gdy dołączono progi na trampolinach
odłączony, gdy ich haczyki były zajęte, i został znaleziony niezależnie
z fuzzerem i KASANEM.

Niech zespoły JIT wyemitują nadający się do łatania komunikat „nop” przed każdą sekwencją wywołań prog
i zapisz to na obrazku. Kiedy program zostanie odłączony, zmień jego nop na a
przeskoczyć sekwencję wywołań. Programy, które pozostają podłączone, działają dalej
zadania widoczne na obrazku, a ip_after_call nie jest już potrzebne.

Zadanie może znajdować się na dowolnym obrazie, który nie jest jeszcze zwolniony, nie tylko w formacie
aktualny. Śpi na obrazie I1, który wywołuje S, P i Q, a następnie P jest
odłączona i trampolina przesuwa się do obrazu I2, następnie Q zostaje odłączone i
jego wywołanie jest nadal w I1. Zatem trampolina przechowuje listę swoich obrazów
dopóki nie zostaną uwolnione, a odłączenie programu naprawia jego brak we wszystkich
oni. Obrazy przez tak długi czas przypominają trampolinę.

Na riscv i loongarch skok na dowolny dystans wymaga kilku instrukcji,
a zadanie przejęte w środku z nich mogło zostać wznowione w połowie
nowa sekwencja. Nop to pojedyncza instrukcja, poprawiona do granic możliwości
rozgałęziaj się poprzez arch_bpf_trampoline_skip().

Dzięki dodatkowym nopom progi BPF_MAX_TRAMP_LINKS nie mieszczą się już na stronie
na x86 i arm64 (a już tego nie robiono na powerpc), więc obniż limit
tam, jak robi to S390.

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