Atualização sobre a Segurança da Cadeia de Suprimentos do Composer e Packagist
Este artigo foi originalmente publicado por Nils Adermann e Igor Benko em blog.packagist.com.
Os últimos meses, e ainda mais as últimas semanas, registraram um aumento nos ataques à cadeia de suprimentos de software visando ecossistemas de código aberto. Alguns deles atingiram o ecossistema PHP também, por meio de contas do GitHub invadidas e tokens de acesso roubados, permitindo que atacantes publicassem novas tags em pacotes aos quais não tinham acesso legítimo. Exemplos notáveis incluem o laravel-lang em 22 de maio e o intercom/intercom-php em 30 de abril.
Este post é uma atualização sobre o estado atual do trabalho de segurança da cadeia de suprimentos do Composer e do Packagist.org: o que já está em vigor, o que será lançado nas próximas semanas e os projetos de longo prazo em andamento.
Se você mantém qualquer pacote no Packagist.org e não possui MFA (Autenticação de Múltiplos Fatores) ativado, ative-o agora. Começaremos a publicar o status de MFA dos mantenedores nos logs de transparência e ele ficará visível nos perfis.
Status Atual e Cronograma
Já em vigor:
- Detecção de malware Aikido: Integrada ao Packagist.org e aos metadados que o Composer consome.
- Resposta rápida a incidentes: Intervenção manual da equipe do Packagist para remover versões afetadas.
- Log de transparência: Um registro público de eventos relevantes para a segurança, incluindo modificações de tags git.
Lançamentos iminentes:
- Composer 2.10: Introdução de uma estrutura unificada de políticas de dependência para malware, vulnerabilidades e pacotes abandonados.
- Imutabilidade de versões estáveis: Versões com tag não poderão mais ser reescritas silenciosamente por meio de re-tagging em repositórios git.
- Downloads previsíveis: Depreciação de fallbacks de código-fonte para evitar comportamentos inesperados.
Próximas semanas e meses:
- Política de idade mínima de lançamento: Um período de "resfriamento" no Composer para recusar versões publicadas há poucas horas.
- Ferramentas administrativas aprimoradas: Substituições manuais de feeds de malware e congelamento de pacotes durante invasões.
- Visibilidade de MFA: O status de MFA será exibido nos perfis dos mantenedores para incentivar a segurança das contas.
O Log de Transparência
O Packagist.org possui um log de transparência público que registra eventos de segurança. Este trabalho foi financiado pela German Sovereign Tech Agency e tem sido fundamental para lidar com ataques recentes, permitindo identificar exatamente o que foi manipulado e reconstruir cronogramas precisos.
Imutabilidade de Versão
Esta é uma mudança importante: versões estáveis no Packagist.org se tornarão imutáveis. Uma vez que um pacote publica uma versão não-dev, o Packagist.org não a reescreverá mais em resposta a re-tagging no upstream. Isso impede que um invasor republique uma versão existente e amplamente instalada com um backdoor caso a conta de um mantenedor seja comprometida.
Direção de Longo Prazo
No futuro, o objetivo é que o Packagist.org hospede artefatos de build imutáveis diretamente, junto com a proveniência de build SLSA e atestações Sigstore. Este projeto visa levar o stack Composer + Packagist ao Nível 4 do SLSA Dependency Track, defendendo proativamente contra ataques no upstream.
Patrocínio e Suporte
Este trabalho extensivo requer financiamento. Além do Private Packagist, agradecemos à Sovereign Tech Agency e à Aikido por financiarem muitas horas de trabalho. Estamos lançando um novo programa de patrocínio em junho para apoiar a operação do Packagist.org e o desenvolvimento desses recursos de segurança.