Odebrany

CVE-2026-97921

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

tracing: Dowolny histogram pole odrzucone ze względu na zły modyfikator

Zapisanie wyzwalacza hist, którego wartość lub zmienna zawiera modyfikator
nie wolno, przeciekają pola, które dla niego zbudowano.

__create_val_field() pobiera pole z parse_expr() i przechowuje je w nim
hist_data->fields[] dopiero po przeprowadzeniu sprawdzania modyfikatorów:

hist_field = parse_expr(hist_data, plik, pole_str, flagi, nazwa_zmiennej,
&n_subwyrażenia);
...
if (hist_field->flagi & HIST_FIELD_FL_VAR) {
if (hist_field->flagi & (...))
muszę popełnić błąd;
} jeszcze {
if (hist_field->flagi & (...))
muszę popełnić błąd;
}

hist_data->fields[val_idx] = hist_field;

Obie kontrole przeskakują obok tego sklepu, a etykieta błędu powraca bez
uwalniając cokolwiek. Błąd rozwija się do funkcji create_hist_data(), która wywołuje
zniszcz_hist_data() ->zniszcz_hist_fields() i dociera do pola
tylko przez pola spacerowe[]. Pole, które nigdy tam nie dotarło, jest nieosiągalne.

commit e0213434fe3e („tracing: Nie pozwól, aby wartości histogramu miały jakieś
modyfikatory”) ustaw ret na -EINVAL i przejdź do sklepu, który wyszedł
pole należące do pól [] i zwolnione wraz z resztą hist_data.
Zastąpiło to podzielenie czeku na przypadek wartości i przypadek zmiennej
przepaść z goto, które je pomija.

Z CONFIG_DEBUG_KMEMLEAK, 200 zapisów

# echo 'hist:keys=prev_pid:vals=next_pid.log2' > \
zdarzenia/sched/sched_switch/trigger

każdy poprawnie odrzucony z -EINVAL, pozostaw 332 obiekty bez odniesień
(63744 bajtów) zgłoszone w create_hist_field(); 200 instaluj i usuwaj
cykle ważnego wyzwalacza nie pozostawiają żadnego. Pole „.log2” to dwa
alokacje, ponieważ funkcja create_hist_field() wstawia zwykłe pole
operandy [0] pola log2 i oba są zgłaszane.

Użyj funkcjizniszcz_hist_field() zamiast __destroy_hist_field(), aby
operandy [0] również są zwalniane. Wraca wcześniej przez HIST_FIELD_FL_VAR_REF,
tego właśnie potrzebuje operand należący do hist_data->var_refs[]; the
Pole odrzucone samo w sobie nigdy nie jest refem var, ponieważ ref nigdy nie przenosi
flaga modyfikatora.

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