Към съдържанието

CVE-2024-53095: Linux, грешка в паметта

9.8

CVSS 3.1

Няма данни

Вероятност да бъде експлоатирана в следващите 30 дни (EPSS)

Няма потвърждение

Атакува се

Няма данни

Време до експлоатация

Атакува се по мрежата, без особени условия, без вход и без действие от потребителя.

CVE радар: още уязвимости от този вид

  • Експлоатация: няма данни за експлоатация
  • Атаката не може да се автоматизира

Описание

Оригинално описание

In the Linux kernel, the following vulnerability has been resolved: smb: client: Fix use-after-free of network namespace. Recently, we got a customer report that CIFS triggers oops while reconnecting to a server. [0] The workload runs on Kubernetes, and some pods mount CIFS servers in non-root network namespaces. The problem rarely happened, but it was always while the pod was dying. The root cause is wrong reference counting for network namespace. CIFS uses kernel sockets, which do not hold refcnt of the netns that the socket belongs to. That means CIFS must ensure the socket is always freed before its netns; otherwise, use-after-free happens. The repro steps are roughly: 1. mount CIFS in a non-root netns 2. drop packets from the netns 3. destroy the netns 4. unmount CIFS We can reproduce the issue quickly with the script [1] below and see the splat [2] if CONFIG_NET_NS_REFCNT_TRACKER is enabled. When the socket is TCP, it is hard to guarantee the netns lifetime without holding refcnt due to async timers. Let's hold netns refcnt for each socket as done for SMC in commit 9744d2bf1976 ("smc: Fix use-after-free in tcp_write_timer_handler()."). Note that we need to move put_net() from cifs_put_tcp_session() to clean_demultiplex_info(); otherwise, __sock_create() still could touch a freed netns while cifsd tries to reconnect from cifs_demultiplex_thread(). Also, maybe_get_net() cannot be put just before __sock_create() because the code is not under RCU and there is a small chance that the same address happened to be reallocated to another netns. [0]: CIFS: VFS: \\XXXXXXXXXXX has not responded in 15 seconds. Reconnecting... CIFS: Serverclose failed 4 times, giving up Unable to handle kernel paging request at virtual address 14de99e461f84a07 Mem abort info: ESR = 0x0000000096000004 EC = 0x25: DABT (current EL), IL = 32 bits SET = 0, FnV = 0 EA = 0, S1PTW = 0 FSC = 0x04: level 0 translation fault Data abort info: ISV = 0, ISS = 0x0000000

Засегнати продукти

  • Linux Linux: 26abe14379f8e2fa3fd1bcf97c9a7ad9364886fe преди 7e487bbab951f15113edc5061bedf1d4aaf834eb; 26abe14379f8e2fa3fd1bcf97c9a7ad9364886fe преди e8c71494181153a134c96da28766a57bd1eac8cb; 26abe14379f8e2fa3fd1bcf97c9a7ad9364886fe преди c7f9282fc27fc36dbaffc8527c723de264a132f8; 26abe14379f8e2fa3fd1bcf97c9a7ad9364886fe преди ef7134c7fc48e1441b398e55a862232868a6f0a7
  • Linux Linux: 4.2; преди 4.2; 6.1.191 до 6.1.*; 6.6.62 до 6.6.*; 6.11.9 до 6.11.*; 6.12 до *

Вид слабост

История

  • 21 ноември 2024 Публикувано

Други уязвимости в Linux Linux

Първоизточници

CVE-2024-53095: Linux, грешка в паметта | freedomonline.bg