CVE-2025-21673
KrytyczneCVSS 9.8Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 33 - wyżej niż 33% wszystkich znanych CVE
Streszczenie
W jądrze Linux w kliencie CIFS/SMB wykryto podwójne zwolnienie pamięci pola hostname w strukturze TCP_Server_Info. Problem występuje, gdy wątek cifsd podczas zamykania serwera nadal próbuje łączyć się z wieloma celami DFS, zanim zakończy pętlę, co prowadzi do wyścigu i podwójnego zwolnienia pamięci.
Ocena ryzyka
Podatność może prowadzić do awarii systemu (kernel panic) lub potencjalnie do wykorzystania przez atakującego do eskalacji uprawnień lub wykonania dowolnego kodu w kontekście jądra.
Rekomendacja
Należy niezwłocznie zaktualizować jądro Linux do wersji zawierającej poprawkę, która opóźnia zwolnienie hostname do momentu zakończenia wątku cifsd.
Inne podatności w Linux kernel
Zobacz wszystkie- CVE-2026-90049Nieznane
W jądrze Linux naprawiono podatność w funkcji skb_zerocopy(), która nieprawidłowo wywoływała skb_tx_error() na źródłowym skb podczas kopiowania fragów. To powodowało zakończenie uarg zerocopy i wyczyszczenie flagi SKBFL_SHARED_FRAG na skb, który nadal był używany przez stos sieciowy. W szczególności na ścieżce OVS_ACTION_ATTR_USERSPACE skb nie był zwalniany po błędzie, co mogło prowadzić do dekryptowania danych ESP w miejscu, gdzie skb nie posiadał prywatnie fragów, co mogło powodować uszkodzenie danych lub inne problemy.
- CVE-2026-90046Nieznane
W jądrze Linux w funkcji free_pages_nolock() na systemach jednoprocesorowych (UP) użyto spin_trylock() w kontekście NMI, co jest niebezpieczne. Błąd dotyczy ścieżki zwalniania stron i może prowadzić do awarii jądra. Podatność może być wykorzystana przez lokalnego atakującego do eskalacji uprawnień.
- CVE-2026-90045Nieznane
W jądrze Linux w sterowniku USB gadget ffs struktura io_data przechowuje wskaźnik do mm_struct zadania, ale nie utrzymuje referencji podczas oczekujących żądań asynchronicznych. Może to prowadzić do użycia po zwolnieniu (use-after-free), jeśli zadanie zakończy się przed obsługą ukończenia. Poprawka polega na pobraniu referencji przez mmgrab() przy kolejkowaniu i zwolnieniu przez mmdrop() przy ukończeniu.
- CVE-2026-90044Nieznane
W jądrze Linux w sterowniku USB gadget f_fs występuje use-after-free w ścieżce błędu AIO. Gdy ffs_epfile_io() zwróci błąd inny niż -EIOCBQUEUED, struktura io_data jest zwalniana, ale funkcja anulowania kiocb pozostaje uzbrojona i wskazuje na zwolniony wskaźnik. Równoległe anulowanie (np. sys_io_cancel()) może spowodować użycie po zwolnieniu. Poprawka polega na bezpiecznym rozbrojeniu anulowania przez kiocb->ki_complete() i zwróceniu -EIOCBQUEUED.
- CVE-2026-90043Nieznane
W jądrze Linux w module zram bit blokady slotu jest ustawiany w niewłaściwej pozycji na systemach 64-bitowych big-endian. Zamiast w polu flags trafia w pole ac_time, co przy włączonym ZRAM_TRACK_ENTRY_ACTIME powoduje kasowanie blokady i pozwala innemu CPU przejąć ten sam slot. Wartość czasu dostępu z ustawionym bitem może sprawić, że slot pozostanie zablokowany na zawsze. Poprawka przenosi bit blokady do połowy flags na big-endian 64-bit.
- CVE-2026-90042Nieznane
W jądrze Linux wykryto podatność w systemie plików Ceph, gdzie funkcja ceph_fname_to_usr() przekazywała bufory z regionu vmalloc() do API kryptograficznego fscrypt, które wymaga buforów w liniowym obszarze pamięci. Może to powodować błędy (oops) systemu, szczególnie na platformach innych niż x86. Poprawka dodaje obsługę buforów vmalloc() poprzez użycie tymczasowego bufora pośredniego.
- CVE-2026-90041Nieznane
W jądrze Linux sterownik HID sony nie usuwa kontrolera z listy urządzeń, gdy rejestracja urządzenia wejściowego w HID core zakończy się niepowodzeniem. Struktura sony_sc jest zwalniana przez devres, ale jej węzeł listy pozostaje podłączony, co prowadzi do użycia zwolnionej pamięci przy obsłudze kolejnego kontrolera.
- CVE-2026-90039Nieznane
W jądrze Linux funkcje NFSD odwołujące stan administracyjny (unlock_filesystem, NFSD_CMD_UNLOCK_FILESYSTEM, NFSD_CMD_UNLOCK_EXPORT) sprawdzają tylko nn->nfsd_serv, który jest ustawiany przed alokacją tablicy nn->conf_id_hashtbl. Prowadzi to do dereferencji NULL, gdy serwer nie został jeszcze uruchomiony.
- CVE-2026-90038Nieznane
W jądrze Linux funkcja nfsd4_revoke_export_states() zwalnia blokadę nn->client_lock, ale trzymany referencja stateid nie utrzymuje przy życiu klienta. Równoległe zakończenie klienta może zwolnić go, podczas gdy revoke_one_stid() nadal go używa, powodując use-after-free.
- CVE-2026-90037Nieznane
W jądrze Linux wpis nfs4_openowner pozostawiony na nn->close_lru trzyma tylko surowy wskaźnik do nfs4_client. Gdy laundromat zwalnia wpisy, zwalnia blokadę client_lock i wywołuje nfs4_put_stid(), równoległe force_expire_client() może zwolnić klienta, powodując użycie zwolnionej pamięci.
Oryginalny opis (angielski, źródło NVD)
In the Linux kernel, the following vulnerability has been resolved: smb: client: fix double free of TCP_Server_Info::hostname When shutting down the server in cifs_put_tcp_session(), cifsd thread might be reconnecting to multiple DFS targets before it realizes it should exit the loop, so @server->hostname can't be freed as long as cifsd thread isn't done. Otherwise the following can happen: RIP: 0010:__slab_free+0x223/0x3c0 Code: 5e 41 5f c3 cc cc cc cc 4c 89 de 4c 89 cf 44 89 44 24 08 4c 89 1c 24 e8 fb cf 8e 00 44 8b 44 24 08 4c 8b 1c 24 e9 5f fe ff ff <0f> 0b 41 f7 45 08 00 0d 21 00 0f 85 2d ff ff ff e9 1f ff ff ff 80 RSP: 0018:ffffb26180dbfd08 EFLAGS: 00010246 RAX: ffff8ea34728e510 RBX: ffff8ea34728e500 RCX: 0000000000800068 RDX: 0000000000800068 RSI: 0000000000000000 RDI: ffff8ea340042400 RBP: ffffe112041ca380 R08: 0000000000000001 R09: 0000000000000000 R10: 6170732e31303000 R11: 70726f632e786563 R12: ffff8ea34728e500 R13: ffff8ea340042400 R14: ffff8ea34728e500 R15: 0000000000800068 FS: 0000000000000000(0000) GS:ffff8ea66fd80000(0000) 000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 00007ffc25376080 CR3: 000000012a2ba001 CR4: PKRU: 55555554 Call Trace: <TASK> ? show_trace_log_lvl+0x1c4/0x2df ? show_trace_log_lvl+0x1c4/0x2df ? __reconnect_target_unlocked+0x3e/0x160 [cifs] ? __die_body.cold+0x8/0xd ? die+0x2b/0x50 ? do_trap+0xce/0x120 ? __slab_free+0x223/0x3c0 ? do_error_trap+0x65/0x80 ? __slab_free+0x223/0x3c0 ? exc_invalid_op+0x4e/0x70 ? __slab_free+0x223/0x3c0 ? asm_exc_invalid_op+0x16/0x20 ? __slab_free+0x223/0x3c0 ? extract_hostname+0x5c/0xa0 [cifs] ? extract_hostname+0x5c/0xa0 [cifs] ? __kmalloc+0x4b/0x140 __reconnect_target_unlocked+0x3e/0x160 [cifs] reconnect_dfs_server+0x145/0x430 [cifs] cifs_handle_standard+0x1ad/0x1d0 [cifs] cifs_demultiplex_thread+0x592/0x730 [cifs] ? __pfx_cifs_demultiplex_thread+0x10/0x10 [cifs] kthread+0xdd/0x100 ? __pfx_kthread+0x10/0x10 ret_from_fork+0x29/0x50 </TASK>

