PT-2026-98839 · Kitty · Kitty
CVSS v4.0
4.6
Média
| Vetor | AV:L/AC:L/AT:N/PR:N/UI:A/VC:N/VI:N/VA:N/SC:N/SI:L/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X |
Nome do Software Vulnerável e Versões Afetadas
kitty versões 0.47.0 até 0.48.x
Descrição
A resolução inadequada de links no caminho de encenação da fonte de arrasto do protocolo de arrastar e soltar permite que um programa que escreva no terminal crie arquivos e diretórios fora do diretório de encenação. Isso ocorre porque a função
subdir data for drag() em kitty/dnd.c resolve descendentes da árvore de itens encenados construindo uma string de caminho e abrindo-a com safe open(path, O DIRECTORY | O RDONLY, 0) em vez de percorrer a árvore componente por componente. Um invasor pode declarar duas entradas com o mesmo nome — primeiro um link simbólico apontando para um caminho absoluto arbitrário e, em seguida, um diretório — fazendo com que o mkdirat() falhe com EEXIST. O código ignora essa falha, levando a resolução de caminho subsequente a seguir o link simbólico e retornar um descritor de diretório fora do diretório de encenação. Este descritor é então passado como o argumento dirfd para add payload() e usado para todas as operações de criação subsequentes. Embora os nomes das entradas sejam sanitizados, os alvos dos links simbólicos não são validados. Arquivos são criados com O CREAT | O WRONLY | O EXCL no modo 0644, impedindo a sobrescrita de arquivos existentes, mas diretórios são criados com mkdirat() no modo 0755, permitindo a criação de novos diretórios intermediários em qualquer caminho gravável pelo usuário que executa a aplicação, desde que o alvo do link simbólico seja um diretório existente.Recomendações
Atualize o kitty para a versão 0.49.0 ou posterior.
Correção
Link Following
Encontrou algum problema na descrição? Tem algo a acrescentar? Fique à vontade para nos escrever 👾
Enumeração de Fraquezas
Identificadores relacionados
Produtos afetados
Kitty