Se exploradas, essas falhas podem permitir que invasores obtenham acesso não autorizado a informações confidenciais ou geralmente causem problemas
A publicação dos diferenteslançamentos de correção do sistema s controle de origem distribuído Ir, no qual duas correções de vulnerabilidade foram implementadas que foram detectados.
Quanto aos falos detectados, é referido que estes permitem que você organize a execução do seu código no sistema do usuário ao usar o comando "git archive" e trabalhar com repositórios externos não confiáveis.
Vulnerabilidades são causados por erros no código do formato de confirmação e na análise do arquivo ".gitattributes", que, ao processar repositórios externos, pode levar à gravação em uma área de memória fora do heap e à leitura de dados arbitrários da memória.
Ambas as vulnerabilidades foram identificados durante uma auditoria de segurança da base de código Git, Feito por X41 para o OSTIF (Fundo de Aperfeiçoamento de Tecnologia de Código Aberto), criado para fortalecer a segurança de projetos de código aberto.
Além dos dois problemas críticos discutidos abaixo, a auditoria também encontrou uma vulnerabilidade grave, uma vulnerabilidade de gravidade média e quatro problemas não perigosos. Além disso, foram feitas 27 recomendações para melhorar a segurança da base de código.
- CVE-2022-41903: estouro de número inteiro no código de formato de informações de confirmação ao lidar com grandes valores de deslocamento em instruções de preenchimento como "%<(", "%<|(", "%>(", "%>> (" e "%><( )" Ocorre um estouro de número inteiro na função format_and_pad_commit() devido ao uso do tipo int para a variável size_t, que, quando memcpy() é chamado, participa da determinação do tamanho do deslocamento da cópia de bloco.
A vulnerabilidade se manifesta quando chamada diretamente com parâmetros de formato especialmente criados (por exemplo, ao executar "git log --format=...") e quando a formatação é aplicada indiretamente durante a execução do comando "git archive" em um repositório controlado pelo invasor.
No segundo caso, os modificadores de formato são definidos por meio do parâmetro export-subst no arquivo ".gitattributes", que o invasor pode colocar em seu repositório. O problema pode ser explorado para ler e gravar áreas arbitrárias no heap e causar a execução de código mal-intencionado ao trabalhar com repositórios não verificados.
- CVE-2022-23521: estouro de número inteiro ao analisar o conteúdo de arquivos .gitattributes em um repositório, manifestado ao analisar um grande número de padrões de caminho de arquivo ou um grande número de atributos com um único padrão e ao analisar um atributo muito grande. grandes nomes O problema pode ser explorado para ler e gravar áreas arbitrárias no heap e fazer com que o código do invasor seja executado ao trabalhar com um repositório não verificado, onde um invasor pode colocar um arquivo .gitattributes especialmente criado e garantir que ele entre no índice.
Adicionalmente, mais uma vulnerabilidade pode ser apontada (CVE-2022-41953) no produto Git para Windows, que permite organizar a execução do código ao clonar repositórios externos não verificados através da interface gráfica.
O problema é devido ao fato de que a GUI do Git for Windows após a operação de "verifique vocêt» executa automaticamente alguns comandos de pós-processamento, como executar o programa de verificação ortográfica para verificar a ortografia, mesmo que os caminhos de pesquisa do arquivo de verificação ortográfica cubram a árvore de trabalho clonada (o ataque se resume a adicionar um verificador ortográfico à árvore do trabalho do repositório ).
O lançamento de atualizações de pacotes em distribuições pode ser rastreado nas páginas: Debian, Ubuntu, Gentoo, RHEL, SUSE, Arco, FreeBSD y NetBSD
Para reduzir o risco de um ataque se uma atualização não puder ser instalada em tempo hábil, recomenda-se abster-se de trabalhar com repositórios não confiáveis e usando o comando "git archive".
É importante lembrar que o comando "arquivo git» pode ser executado implicitamente, por exemplo, de dentro do git daemon. Para desabilitar a execução de «arquivo gite” no git daemon, altere o parâmetro daemon.uploadArch com o comando "git config --global daemon.uploadArch false".