Foi identificada uma vulnerabilidade no Composer que compromete o repositório Packagist PHP

Alguns dias atrás Notícias de que uma vulnerabilidade crítica foi identificada en o gerente de dependência de Compor (CVE-2021-29472) que permite que você execute comandos arbitrários no sistema ao processar um pacote com um valor de URL especialmente formado que determina a direção para baixar o código-fonte.

O problema se manifesta nos componentes GitDriver, SvnDriver e HgDriver usado com os sistemas de controle de origem Git, Subversion e Mercurial. A vulnerabilidade foi corrigida nas versões 1.10.22 e 2.0.13 do Composer.

Em particular, o repositório de pacotes Packagist padrão do Composer, que contém 306.000 pacotes de desenvolvedor PHP e oferece mais de 1.400 bilhão de downloads por mês, é particularmente afetado.

No ecossistema PHP, o Composer é a principal ferramenta para gerenciar e instalar dependências de software. Equipes de desenvolvimento em todo o mundo o usam para facilitar o processo de atualização e garantir que os aplicativos sejam executados sem esforço em todos os ambientes e versões.

O experimento mostrou que se houvesse informações sobre o problema, os invasores poderiam assumir o controle da infraestrutura do Packagist e interceptar as credenciais dos mantenedores ou redirecionar o download dos pacotes para um servidor de terceiros, organizando a entrega das variantes dos pacotes com as alterações. malicioso para substituir um backdoor durante a instalação da dependência.

O perigo para os usuários finais é limitado devido ao fato de que o conteúdo de composer.json é geralmente definido pelo usuário e links para a fonte são passados ​​ao acessar repositórios de terceiros, que geralmente são confiáveis. O golpe principal caiu no repositório Packagist.org e no serviço Private Packagist, que chama o Composer com a transferência dos dados recebidos dos usuários. Os invasores podem executar seu código em servidores Packagist descartando um pacote especialmente criado.

A equipe do Packagist resolveu a vulnerabilidade em até 12 horas após a notificação de vulnerabilidade. Os pesquisadores notificaram os desenvolvedores do Packagist em particular em 22 de abril, e o problema foi corrigido no mesmo dia. Uma atualização pública do Composer com uma correção para a vulnerabilidade foi lançada em 27 de abril e os detalhes foram revelados em 28 de abril. Uma auditoria dos logs nos servidores do Packagist não revelou nenhuma atividade suspeita associada à vulnerabilidade.

Os erros de injeção de argumento são uma classe realmente interessante de erros que geralmente são esquecidos durante as revisões de código e completamente esquecidos nas interações de caixa preta.

O problema é causado por um erro no código de validação de URL no arquivo raiz composer.json e nos links de download da fonte. O bug está em seu código desde novembro de 2011. Packagist usa camadas especiais para gerenciar downloads de código sem ser vinculado a um sistema de controle de origem específico, que é executado chamando "fromShellCommandline" com argumentos de linha de comando.

O cerne do problema é que o método ProcessExecutor permitia que qualquer parâmetro de chamada adicional fosse especificado no URL. Tal escape estava faltando nos drivers GitDriver.php, SvnDriver.php e HgDriver.php. O ataque GitDriver.php foi prejudicado pelo fato de que o comando "git ls-remote" não suportava a especificação de argumentos adicionais após o caminho.

Um ataque ao HgDriver.php foi possível passando o parâmetro "–config" para o utilitário "hq", que permite organizar a execução de qualquer comando manipulando a configuração "alias.identify".

Ao enviar um pacote de teste com uma URL semelhante ao Packagist, os pesquisadores garantiram que, depois de publicado, seu servidor recebesse uma solicitação HTTP de um dos servidores Packagist na AWS que continha uma lista dos arquivos no diretório atual.

Deve-se notar que os mantenedores não identificaram quaisquer sinais de exploração anterior desta vulnerabilidade na instância pública do packagist.

Por fim, se você tiver interesse em saber mais sobre o assunto, pode consultar os detalhes no link a seguir.


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: AB Internet Networks 2008 SL
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.