No kernel Linux, a seguinte vulnerabilidade foi resolvida. ksmbd: fechar corridas de escavenger duráveis contra buscas m_fp_list O ksmbd_durable_scavenger() tem duas corridas relacionadas contra qualquer walker que itera f_ci->m_fp_list, incluindo o ksmbd_lookup_fd_inode() (usado pelo ksmbd_vfs_ rename) e as verificações do modo share-mode em fs/smb/server/smb_common.c.
( 1 ) fp-> reutilização da cabeça da lista de nós. Os manuais duráveis podem permanecer ligados no f_ci->m_fp_list após o desmonte da sessão, para que as verificações do modo compartilhado ainda os vejam enquanto o manuseio é reconnectável. O guarda- dados coletados haldes expirados adicionando fp->nodo a uma lista local de busca- dados após removê- los do idr global durável. Como fp->node é a mesma cabeça de list_head usada por m_fp_list, list_add(&fp->node, &scavenger_list) sobrescreve os links m_fp_list e corrompe ambas as listas. CONFIG_DEBUG_LIST pode reportar isso no caminho de caminhada do modo compartilhado. ( 2 ) Corrida de refonte contra os walkers m_fp_list. O armazém qualifica um cabo durável expirado com o atomic_read(&fp->refcount) > 1 e fp->conn sob global_ft.lock, remove fp do global_ft, depois deixa o global_ft.lock antes de desligar fp da m_fp_list e libertá- lo. Durante esse gap fp ainda está ligado em m_fp_list com f_state == FP_INITED. ksmbd_lookup_fd_inode() sob m_lock chamadas de leitura ksmbd_fp_get() (atomic_inc_not_zero no refcount que ainda está 1 ) e toma uma referência ao vivo; o guarda- dados desliga e liberta fp enquanto o titular possui uma referência, levando a UAF no subsequente ksmbd_fd_put() do titular e em qualquer campo lê-se executado por um walker em modo compartilhado que itera m_fp_list sem tomar ksmbd_fp_get() (smb_check_perm_ dleases-like ways).
* Pare de reutilizar fp->nodo como um nó de lista privada de tesouros. Remova um maçanete expirado do global_ft sob global_ft.lock, tome uma referência transitória explícita, solte o bloqueio, desligue o link fp->nodo de m_fp_list sob f_ci->m_lock, em seguida, solte as referências duráveis e transitórias com o atomic_sub_and_test( 2, &fp->refcount). Se o guardador for o último putter, o fechamento fica por aí; caso contrário, um suporte de voo que já correu pela busca m_fp_list possui o fechamento final através do seu caminho ksmbd_fd_put(). A eliminação de um ao outro pode reescalar o idr durável quando vários cabos expiram no mesmo passe, mas o escavamento durável é um caminho de expiração de fundo e o exame completo final recalcula min_ timeout antes da próxima espera. * Limpar fp->persistente_id dentro de __ksmbd_ remove_durable_fd() logo após idr_ remove(), assim um fechamento final atrasado de um suporte que arrebatou fp não re- emissão idr_ remove() em um id persistente que idr_alloc_cyclic() no ksmbd_open_durable_fd() pode já ter entregado a um novo mango durável.
* Contorne o decrémento por conn open_files_count em __put_fd_final() quando o fp é desmontado de qualquer tabela de sessão (fp->conn eliminado por session_fd_check() na preservação durável -- pareado com o volátil_id claro na versão não publicada, por isso, a verificação do fp->conn por si só é suficiente. O walker que possui o fechamento final é executado a partir de um trabalho->conn independente cujos estats.open_files_count nunca rastreou este fp durável; sem este protetor o titular subfluiria nesse contador independente. As duas corridas são dobradas em um patch porque o patch ( 1 ) sozinho limpa a lista corrompida, mas deixa uma janela determinística UAF para os walkers m_fp_list que a referência transitória e a disciplina persistente_id em ( 2 ) close; bissecting em um estado intermediário iria aterrissar em um UAF que o caos pré- parche simplesmente tornava menos reprodutível.
Validação: * Cobertura CONFIG_DEBUG_LIST para o caminho de reutilização de list_head. * PMB direta habilitada para o KASAN 2 cobertura de manuseio durável que exercitou o ksmbd_durable_scavenger() e não- NULL ksmbd_lookup_fd_inode() retorna enquanto os manuseios duráveis expiraram sob buscas de renome concorrentes, sem relatórios KASAN, UAF, list-corruption, ODEBUG ou ADVERTÊNCIA. --- truncado--- Registro de aconselhamento: GHSA- jcg 5 - p 7 gf- vq 99. Identificadores relacionados: CVE- 2026 - 64142.
Tempo: GitHub Advisory Database publicou este registro em 2026 - 07 - 19 T 18: 31: 53.000 Z e lista a sua última modificação como 2026 - 07 - 20 T 15: 32: 01.000 Z. Gravidade: Crítico. Dados de pontuação publicados: CVSS_V 3: CVSS: 3.1 /AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H.
Software afetado: o registro de aconselhamento não fornece um pacote normalizado ou faixa de versões.
Classificação e evidência: identificadores de fraqueza CWE- 416. O registro contém 6 suporte de referências nestes tipos: AVISO, WEB.