Odebrany

CVE-2026-98947

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

vsock: Napraw wyciek pamięci w vmci_transport_recv_dgram_cb()

Podczas zamykania gniazda datagramu funkcja vmci_transport_recv_dgram_cb()
można wywołać funkcję, która doda pakiety
do zaległości gniazda; następnie, po wyczyszczeniu kolejki odbiorczej,
funkcja __release_sock() przeniesie pakiet z powrotem z gniazda
zaległości w kolejce odbiorczej, co doprowadzi do wycieku pamięci.

skarpetka_zamknij
__sock_release
__vsock_release
// przejmij na własność przestrzeń użytkownika
lock_sock_nested
skarpetka_set_flag(sk, SOCK_DEAD)
vmci_transport_release
vmci_dispatch_dgs
vmci_datagram_invoke_guest_handler
vmci_transport_recv_dgram_cb
sk_receive_skb
if (!sock_owned_by_user(sk))
[...]
(!) else if sk_add_backlog()
[...]
(!) skb_queue_purge(&sk->sk_receive_queue)

wydanie_skarpety
__release_sock
// przenieś wszystkie pakiety z backlogu
// do kolejki odbiorczej
(!) sk_backlog_rcv
vsock_queue_rcv_skb
[...]
__sock_queue_rcv_skb
if (!sock_flag(sk, SOCK_DEAD))
// Ponieważ gniazdo jest „martwe”, funkcja nie będzie działać
// zostać wezwanym
sk->sk_data_ready(sk)
skarpetka_release_ownership(sk);
skarpetka_włóż

Aby to naprawić, dodaj czyszczenie kolejki odbiorczej w destruktorze gniazda.

raport syzkallera:

obiekt bez odniesienia 0xffff8880117bfb80 (rozmiar 240):
comm "irq/56-vmw_vmci", pid 205, jiffies 4295064448 (wiek 73,992 s)
zrzut szesnastkowy (pierwsze 32 bajty):
78 dc 26 1e 80 88 ff ff 78 dc 26 1e 80 88 ff ff x.&.....x.&.....
00 00 00 00 00 00 00 00 c0 da 26 1e 80 88 ff ff ......&.....
ślad wsteczny:
[<ffffffff82be8d97>] __alloc_skb+0x287/0x330 net/core/skbuff.c:505
[<ffffffffa114bcbd>] vmci_transport_recv_dgram_cb+0xbd/0x210 [vmw_vsock_vmci_transport]
[<ffffffffa05072c6>] vmci_datagram_invoke_guest_handler+0x366/0x450 [vmw_vmci]
[<ffffffffa050ad75>] vmci_dispatch_dgs+0x235/0x490 [vmw_vmci]
[<ffffffffa050b025>] vmci_interrupt+0x55/0x290 [vmw_vmci]
[<ffffffff8137ad2b>] irq_thread_fn+0x8b/0x1a0 kernel/irq/manage.c:1205
[<ffffffff8137c7ae>] irq_thread+0x28e/0x530 kernel/irq/manage.c:1314
[<ffffffff81253dd6>] kthread+0x2e6/0x3a0 jądro/kthread.c:376
[<ffffffff81004392>] ret_from_fork+0x22/0x30 arch/x86/entry/entry_64.S:295

Znalezione przez InfoTeCS w imieniu Centrum weryfikacji systemu Linux
(linuxtesting.org) za pomocą Syzkallera.

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