Katalog CVE

CVE-2026-45891

WysokieCVSS 7.8
Opublikowano: Zaktualizowano: Przetłumaczono: NVD NIST

Prawdopodobieństwo exploitacji (EPSS)

Niskie ryzyko
0.13%

Percentyl 3 - wyżej niż 3% wszystkich znanych CVE

Streszczenie

W module sieciowym hns3 jądra Linux występuje podatność polegająca na podwójnym zwolnieniu bufora zapasowego tx_spare. Błąd wynika z nieprawidłowego pozostawienia wskaźnika do starej pamięci w oryginalnej strukturze pierścienia po utworzeniu kopii tymczasowej. W przypadku niepowodzenia alokacji pamięci podczas inicjalizacji pierścieni, ścieżka obsługi błędu błędnie zwalnia ten sam bufor dwukrotnie.

Ocena ryzyka

Podwójne zwolnienie pamięci może prowadzić do uszkodzenia struktur zarządzania pamięcią jądra, niestabilności systemu, a w skrajnych przypadkach do awarii typu kernel panic lub potencjalnego wykonania nieautoryzowanego kodu.

Rekomendacja

Zastosuj najnowszą łatkę jądra Linux, która ustawia wskaźnik tx_spare na NULL w oryginalnej strukturze pierścienia, gdy tworzenie nowego bufora zapasowego zakończy się niepowodzeniem. Aktualizacja zapewnia, że ścieżka czyszczenia błędów zwalnia tylko faktycznie nowo przydzielone bufory.

Powiązane podatności

Oryginalny opis (angielski, źródło NVD)

In the Linux kernel, the following vulnerability has been resolved: net: hns3: fix double free issue for tx spare buffer In hns3_set_ringparam(), a temporary copy (tmp_rings) of the ring structure is created for rollback. However, the tx_spare pointer in the original ring handle is incorrectly left pointing to the old backup memory. Later, if memory allocation fails in hns3_init_all_ring() during the setup, the error path attempts to free all newly allocated rings. Since tx_spare contains a stale (non-NULL) pointer from the backup, it is mistaken for a newly allocated buffer and is erroneously freed, leading to a double-free of the backup memory. The root cause is that the tx_spare field was not cleared after its value was saved in tmp_rings, leaving a dangling pointer. Fix this by setting tx_spare to NULL in the original ring structure when the creation of the new `tx_spare` fails. This ensures the error cleanup path only frees genuinely newly allocated buffers.

Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS