Aikido

Packagist agora está protegido por Aikido Intel e outras atualizações para o registro PHP

Escrito por
Dania Durnas

Gerenciar um registro de código aberto significa apagar incêndios. Outra conta de mantenedor é comprometida, outro pacote malicioso. A remoção está sempre um upload atrasada. O trabalho nunca termina, e a maioria dos registros, gerenciados por pequenas equipes com poucos recursos, frequentemente está sobrecarregada demais para fazer muito além de acompanhar o ritmo. Mas, ultimamente, temos visto mudanças mais positivas no mundo do código aberto, com ecossistemas realizando as mudanças estruturais que impedem que um tipo de ataque funcione.

A pequena equipe que mantém Packagist.org e Composer, o registro e gerenciador de pacotes por trás do mundo PHP, tem realizado um trabalho de segurança preventivo e deliberado, fazendo melhorias significativas. Aikido é um grande apoiador desse esforço. O feed Intel da Aikido impulsiona o bloqueio de malware no Composer para downloads. Ele é ativado por padrão para Composer 2.10 e superior para todos. Isso se soma a uma série de outras mudanças que o Packagist fez e está fazendo, cada uma trabalhando para encerrar categorias inteiras de ataques em vez de perseguir pacotes individuais. 

Estamos começando a ver essa tendência de melhorias em todos os registros de pacotes, e estamos entusiasmados em poder apoiar essas iniciativas. Os desenvolvedores PHP podem ficar mais tranquilos agora, sabendo que há mais salvaguardas em vigor para impedi-los de instalar malware acidentalmente. 

Bloqueio de malware no Composer

A vitória mais fácil é impedir que os usuários instalem uma versão de pacote que já é conhecida por ser maliciosa. Graças ao Aikido Intel, o Composer agora sabe quais versões foram sinalizadas e não as instalará. 

Quando o Aikido sinaliza uma versão de pacote maliciosa, essa sinalização reside nos metadados do pacote que o Composer baixa. O framework de política de dependência do Composer 2.10 remove a versão sinalizada do pool de resolução, assim, `composer update`, `composer require` e `composer create-project` não a selecionarão. A verificação mais importante é a do `composer install`, porque uma versão sinalizada após a gravação do seu lockfile falha na próxima instalação. Se, por algum motivo, um usuário ainda quiser baixar um pacote bloqueado, ele pode substituí-lo manualmente.

Esta integração funciona porque é:

  • Aberto: O feed que a Aikido fornece ao Packagist é licenciado sob CC-BY, então a proteção não está vinculada a um contrato de seis dígitos, e a porta permanece aberta para que outros provedores de dados se conectem. A segurança que apenas os bem-financiados podem pagar não nos protege.
  • Ativado por padrão: Uma proteção que exige que as pessoas adiram não protege quase ninguém (porque é difícil fazer as pessoas aderirem). Os padrões são onde a segurança do ecossistema reside, e o padrão 2.10 não exige nada dos usuários para que eles se beneficiem.
  • Rápido o suficiente: Versões maliciosas geralmente são removidas em poucas horas, então um feed que as sinaliza em minutos protege os usuários na janela entre a detecção e a remoção. Como o bloqueio só funciona quando algo é detectado, uma detecção lenta não ajudaria muito.
  • Automatizado: Como o pacote malicioso é bloqueado assim que a Aikido o detecta, não há atraso extra esperando que alguém manualmente coloque o pacote na lista negra ou o remova, então os usuários são protegidos mais rapidamente.

Integrar a detecção da Aikido em cada instalação foi apenas uma das melhorias que o Packagist lançou recentemente.

Fechando portas em vez de remendar buracos

Em seguida, o re-tagging. Publicar no Packagist sempre significou enviar uma tag git, e o registro puxa o que essa tag aponta. Esse sistema permitia que atacantes que sequestravam uma conta confiável re-etiquetassem uma versão publicada e a apontassem para código malicioso, de modo que esse número de versão agora carregasse algum payload (o que vimos no ataque recente ao Laravel-Lang). A resposta do Packagist, a imutabilidade de versão estável, significa que uma versão estável publicada não pode mais ser reescrita. Isso encerra os ataques de re-tagging como um todo. O GitHub tem o equivalente, mas o tornou opcional. O Packagist o tornou obrigatório.

Finalmente, tentar fazer as pessoas atualizarem o software é extremamente difícil. Um bloqueio padrão só ajuda as pessoas que estão executando um Composer atual, e muitas não estão. Uma imagem CI ou um agente de IA frequentemente executa uma versão de anos atrás, então o Private Packagist pode exigir um Composer atual para se conectar. Ele também se recusa a servir os arquivos de uma versão sinalizada a qualquer cliente, antigo ou novo.

O Packagist.org ainda não está pronto, e eles têm algumas melhorias de segurança a caminho. Eles estão planejando uma idade mínima de lançamento, o que mitigaria ataques que dependem de uma janela curta antes que a detecção se atualize (enquanto isso, você pode obter proteção semelhante com o Aikido Safe Chain, também gratuito). Eles também estão criando a propriedade organizacional, que permitirá MFA obrigatória, bem como lançamentos em fases, que o npm lançou recentemente.

Movendo-se em direção a registros de pacotes mais seguros

Esta não é apenas uma história do PHP. Como mencionamos, o npm está se movendo na mesma direção com a publicação em fases, mas também desativando scripts de instalação automáticos. O PyPI tornou a 2FA obrigatória e construiu um sistema de quarentena, e crates.io e RubyGems adotaram a publicação confiável através de um design OpenSSF compartilhado. Os ecossistemas estão se movendo na direção certa. Queremos ver muito mais disso, mais rápido, e continuamos apoiando onde podemos. 

Você é um desenvolvedor PHP? Clientes Composer anteriores à versão 2.10 não possuem este recurso, então certifique-se de atualizar hoje se ainda não o fez. Não usa PHP? O Aikido Safe Chain é uma ferramenta de código aberto que também impede a instalação de pacotes novos ou maliciosos antes que sejam instalados em seu dispositivo.

Independentemente dos ecossistemas dos quais você depende, você pode verificar o que o Aikido Intel está sinalizando na internet. O feed é público e gratuito em intel.aikido.dev.

Compartilhar:

https://www.aikido.dev/blog/composer-protected-aikido-packagist

Assine para receber notícias

4.7/5
Cansado de falsos positivos?

Experimente Aikido como 100 mil outros.
Começar Agora
Obtenha um tour personalizado

Confiado por mais de 100 mil equipes

Agende Agora
Escaneie seu aplicativo em busca de IDORs e caminhos de ataque reais

Confiado por mais de 100 mil equipes

Iniciar Escaneamento
Veja como o pentest de IA testa seu aplicativo

Confiado por mais de 100 mil equipes

Iniciar Testes

Fique seguro agora

Proteja seu código, Cloud e runtime em um único sistema centralizado.
Encontre e corrija vulnerabilidades rapidamente de forma automática.

Não é necessário cartão de crédito | Resultados da varredura em 32 segundos.