CVE-2026-89580
>_ Opis
Tłumaczenie automatyczne – może zawierać nieścisłości.
W jądrze Linuksa usunięto następującą lukę:
bpf: Wyłącz wywłaszczanie w __bpf_get_stack
get_perf_callchain() zwraca bufor perf_callchain_entry przypadający na procesor i
zwalnia swoją szczelinę rekurencji poprzez put_callchain_entry() przed powrotem,
więc nic nie powoduje zarezerwowania wpisu, podczas gdy __bpf_get_stack() zużywa
to poniżej.
Program BPF z możliwością wywłaszczania (np. nieprzespany program surowego punktu śledzenia
w jądrze PREEMPT, które działa w ramach metody migracji_disable(), ale nie
preempt_disable()) można zaplanować pomiędzy uzyskaniem wpisu
i kopia. Następnie inne zadanie zaplanowane na tym samym procesorze ponownie wykorzystuje plik
ten sam bufor na procesor i zastępuje trace->nr większą wartością.
copy_len jest następnie obliczana na podstawie zawyżonego śladu->nr i może przekroczyć
bufor wywołującego, powodując zapis poza granicami w memcpy()
oraz w ścieżce build_id.
Sama funkcja rcu_read_lock() nie zapobiega temu. To jest
pobierane tylko na ścieżce may_fault i pod CONFIG_PREEMPT_RCU tak
nie wyłączać wywłaszczania; przechowuje jedynie tablicę buforów łańcucha wywołań perf
żyje (uwalniany przez call_rcu()) i nie robi nic, aby zatrzymać inne zadanie
od ponownego wykorzystania wpisu.
Wyłącz wywłaszczanie wokół uzyskiwania wpisu łańcucha wywołań i kopiowania
go do bufora wywołującego, więc wpisu nie można ponownie użyć pod spodem
us i trace->nr pozostają ograniczone przez max_głębię. Rozdzielczość identyfikatora kompilacji może
z powodu błędu i dlatego zostaje odroczony do czasu ponownego umożliwienia wywłaszczenia;
do tego czasu wskaźniki instrukcji zostały już skopiowane do buf,
więc działa tylko na tej prywatnej kopii. Uwaga, preempt_disable() również
obejmuje gwarancję trwałości bufora dostarczoną przez funkcję rcu_read_lock(),
ponieważ sekcja z wyłączonym wywłaszczaniem jest sekcją krytyczną po stronie odczytu RCU
do odzyskiwania funkcji call_rcu() buforów łańcucha wywołań.
[zmienione poprawki: zatwierdzenie]
>_ 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