Uma vulnerabilidade no manipulador de ações do GitHub permitiu que pacotes no Nixpkgs fossem comprometidos.

Foram divulgadas vulnerabilidades nos manipuladores de ações do GitHub, que são invocados automaticamente ao enviar pull requests para o repositório de pacotes Nixpkgs, usado na distribuição NixOS e no ecossistema do gerenciador de pacotes Nix. A vulnerabilidade permitiu que um usuário não autorizado extraísse um token que concedia acesso de leitura e gravação ao código-fonte de todos os pacotes hospedados no Nixpkgs. Esse token permitiu a modificação direta de qualquer pacote por meio do repositório Git do projeto, ignorando os processos de revisão e aprovação.

A capacidade de comprometer o Nixpkgs e injetar código personalizado em qualquer pacote foi demonstrada por pesquisadores de segurança em outubro passado na conferência NixCon e imediatamente corrigida na infraestrutura do projeto. No entanto, os detalhes do ataque só foram divulgados um ano depois. O problema estava relacionado ao uso de manipuladores de ações do GitHub no repositório do Nixpkgs no GitHub, que são vinculados ao evento "pull_request_target" e realizam verificações automatizadas em novas solicitações de pull.

Ao contrário do evento "pull_request", os manipuladores em "pull_request_target" recebem acesso de leitura/gravação ao ambiente de compilação, o que requer cuidado especial ao trabalhar com dados passados ​​em uma solicitação pull. Um dos manipuladores vinculados a "pull_request_target" validou o arquivo "OWNERS" fornecido na solicitação pull, compilando e chamando o utilitário codeowners-validator: steps: — uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf with: ref: refs/pull/$/merge path: pr — run: nix-build base/ci -A codeownersValidator — run: result/bin/codeowners-validator env: OWNERS_FILE: pr/ci/OWNERS

O problema era que, se o arquivo OWNERS estivesse formatado incorretamente, o utilitário codeowners-validator exibia o conteúdo da string malformada no log padrão, acessível publicamente. O ataque consistia em inserir um link simbólico chamado OWNERS na solicitação de pull, apontando para o arquivo ".credentials", que armazena credenciais no ambiente de compilação. Consequentemente, o processamento desse arquivo resultava em um erro, e a primeira linha, contendo o token de acesso ao repositório, era exibida no log público.

 Uma vulnerabilidade no manipulador de ações do GitHub permitiu que pacotes no Nixpkgs fossem comprometidos.

Além disso, outra vulnerabilidade foi encontrada no manipulador que verifica as regras do editorconfig. steps: — name: Obter lista de arquivos alterados do PR run: gh api […] | jq [ … ] > «$HOME/changed_files» — uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 with: ref: refs/pull/$/merge — name: Verificando o EditorConfig run: cat «$HOME/changed_files» | xargs -r editorconfig-checker

Neste caso, o problema era o uso do utilitário "xargs" para executar o editorconfig-checker com cada arquivo na solicitação de pull. Como os nomes dos arquivos não eram validados, um invasor poderia incluir um arquivo contendo caracteres especiais na solicitação de pull, que seriam processados ​​como argumentos de linha de comando ao executar o editorconfig-checker. Por exemplo, ao criar um arquivo "--help", o editorconfig-checker exibia uma dica sobre as opções disponíveis.

Fonte: opennet.ru

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