CVE-2026-99166
>_ Opis
Tłumaczenie automatyczne – może zawierać nieścisłości.
W jądrze Linuksa usunięto następującą lukę:
net: rds: napraw niezainicjowane dereferencje translacyjne w obsłudze zdarzeń CM
rds_rdma_cm_event_handler_cmn() przypisuje trans tylko wtedy, gdy RDMA
urządzeniem jest InfiniBand CA (RDMA_NODE_IB_CA). Na dowolnym innym urządzeniu
wpisz, np. RNIC iWARP, taki jak siw, trans, pozostaje niezainicjowany, ale
przełącznik zdarzeń usuwa referencje: bezwarunkowo w
Przypadek RDMA_CM_EVENT_CONNECT_REQUEST poprzez trans->cm_handle_connect(),
i (z kontekstem połączenia) w ROUTE_RESOLVED i
SPRAWDZONE przypadki.
Dlatego odbiornik RDS na urządzeniu iWARP powoduje awarię jądra
zaraz po otrzymaniu żądania połączenia: z CONFIG_INIT_STACK_ALL_ZERO
dzikie obciążenie staje się wyłuskiwaniem NULL przy przesunięciu 0xa0
(&trans->cm_handle_connect) w kolejce roboczej iw_cm_wq.
GCC maskuje błąd w domyślnych kompilacjach, składając niezainicjowany
załaduj do &rds_ib_transport; Jądra zbudowane w oparciu o Clang przejmują rzeczywistość
niezainicjowana ścieżka i ups.
Aktywna strona może również wylądować na urządzeniu innym niż IB: identyfikator to
Funkcja rds_ib_conn_path_connect() tworzy nie jest ograniczona do typu węzła,
więc rdma_resolve_addr() wiąże go z dowolnym urządzeniem obsługującym lokalnie
adres i kwalifikuje się RNIC iWARP na tym samym Netdev. Katastrofa
jest inaczej: rozpoznawanie trasy na identyfikatorze iWARP nigdy się nie wypełnia
cm_id->route.path_rec i zapisuje przypadek ROUTE_RESOLVED
path_rec[0].sl zanim wywoła transport.
Transport iWARP został porzucony dawno temu i jedyny jest IB
transport pozostał, więc wyjaśnij to wyraźnie: zainicjuj trans do
&rds_ib_transport przy deklaracji porzuć przypisanie warunkowe,
odrzuć żądanie połączenia otrzymane na urządzeniu innym niż IB i upuść a
połączenie, którego adres został rozwiązany na jeden zamiast rozpoznawać a
trasę na nim. Odrzucenie jest ograniczone do RDMA_CM_EVENT_CONNECT_REQUEST
celowo: niezerowy powrót z procedury obsługi powoduje zniszczenie rdma_cm
identyfikator, pod którym zdarzenie zostało dostarczone, odpowiedni dla żądania
świeżo utworzony identyfikator, ale zwolni identyfikator połączenia, który nadal posiada RDS
na jakiekolwiek inne wydarzenie. Po stronie aktywnej identyfikator pozostaje ic->i_cm_id i
zamknięcie połączenia niszczy je, więc case zwraca 0.
[achender: odrzuć tylko na RDMA_CM_EVENT_CONNECT_REQUEST zamiast
ratowanie każdego zdarzenia na urządzeniu innym niż IB, tak że robi to rdma_cm
nie niszcz identyfikatorów połączeń, które RDS nadal śledzi; zerwij połączenie, którego
adres przypisany do urządzenia innego niż IB przed wyznaczeniem na nim trasy;
dostosowany dziennik zmian]
>_ 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