CVE-2026-98869
>_ Opis
Tłumaczenie automatyczne – może zawierać nieścisłości.
W jądrze Linuksa usunięto następującą lukę:
bpf: Wnioskuj zext_dst na podstawie analizy żywotności rejestrów statycznych
Jak podano w wątku [1], 32-bitowe operacje weryfikatora wynoszą zero
logika rozszerzenia jest zepsuta. Ta logika jest odpowiedzialna za poprawność
semantyka operacji 32-bitowych na architekturze s390.
Zgodnie z semantyką BPF operacja `w1 += 1` ma wynosić zero
wydłużyć górną połowę rejestru „r1”. Na S390 JIT polega
weryfikator emitujący jawne rozszerzenie zera przed takimi operacjami.
Weryfikator stara się zminimalizować liczbę zerowych rozszerzeń
wstawiane poprzez śledzenie, czy znajdują się górne połówki rejestrów 64-bitowych
kiedykolwiek używany. Wcześniej takie śledzenie działało w następujący sposób:
- pole bpf_reg_state->subreg_def zostało ustawione przez do_check_insn()
dla każdej operacji definiującej dolną, ale nie górną połowę
rejestru.
- Ilekroć weryfikowana była operacja odczytująca cały rejestr,
weryfikator sprawdził subreg_def rejestru i ustawił
bpf_insn_aux_data->zext_dst flagę jako true poprzez wywołanie
funkcja mark_insn_zext().
- Po zakończeniu weryfikacji specjalna przepustka
bpf_opt_subreg_zext_lo32_rnd_hi32() rozszerzone operacje 32-bitowe
z bpf_insn_aux_data->zext_dst ustawionym na true poprzez dodanie
wyraźne rozszerzenie zerowe.
Zauważ, że powyższa logika opiera się na bpf_reg_state->subreg_def,
która jest właściwością bieżącego stanu weryfikatora.
Przed zatwierdzeniem [2] miały miejsce dwa dodatkowe kroki:
- Weryfikator śledził żywotność połówek górnego i dolnego rejestru
flagi REG_LIVE_READ{32,64} w bpf_reg_state->live.
- Funkcja propagate_liveness() o nazwie mark_insn_zext()
w celu przekazania wiedzy o tym, jakie rejestry posiadają
ich górne połówki żyją (i dlatego mogą wymagać zerowego przedłużenia).
Zatwierdzenie [2] usunęła dwa kroki opisane powyżej,
umożliwiając w ten sposób sytuację jak poniżej:
- Górna połowa rejestru jest ustawiona i używana przy jakiejś weryfikacji
ścieżka P1 i tak się składa, że rejestr nie jest oznaczony jako precyzyjny.
- Punkt kontrolny C jest tworzony podczas przetwarzania jakiejś instrukcji
pomiędzy inicjalizacją rejestru a jego użytkowaniem.
- Na innej ścieżce weryfikacji P2 górna połowa rejestru nie jest
zainicjowany, a ścieżka kończy się, docierając do punktu kontrolnego C.
- W takim przypadku zabrakłoby inicjalizacji rejestru na ścieżce P2
zext_dst mark, umożliwiający programowi wstrzyknięcie
dowolną wartość w górnej połowie rejestru.
To zatwierdzenie zastępuje logikę opartą na subreg_def obliczeniem zext_dst
statycznie, jako część analizy bpf_compute_live_registers():
- Analiza śledzi teraz wykorzystanie górnej i dolnej połowy
rejestruje się osobno.
- Jeśli jakaś instrukcja definiuje 32-bitowy podrejestr, ale nie całość
rejestr, *i* górna połowa rejestru od tego momentu żyje
instrukcja, instrukcja jest oznaczona jako zext_dst.
Istnieje jeden zauważalny spadek precyzji: zawsze, gdy jest to podprogram BPF
wywołane, zakłada się, że wszystkie 64 bity rejestrów parametrów są wykorzystane.
Zakłada się, że taki spadek precyzji nie spowodowałby
zauważalny spadek wydajności.
[1] https://lore.kernel.org/bpf/CAGKGUv=sOuqQtA1Ub-5JXfA4FPosJFYKAQE4B79cK+P1erxqtg@mail.gmail.com/
[2] commit 107e16979905 („bpf: wyłącz i usuń aktywność opartą na łańcuchu rejestrów”)
>_ 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