Vulnerabilidade no RubyGems.org que permite substituir pacotes de terceiros.

Foi identificada uma vulnerabilidade crítica no repositório de pacotes RubyGems.org (CVE-2022-29176), que permite, sem as devidas permissões, substituir alguns pacotes alheios no repositório ao iniciar a remoção (yank) de um pacote legítimo e carregar, em seu lugar, outro arquivo com o mesmo nome e número de versão.

Para a exploração bem-sucedida da vulnerabilidade, três condições devem ser atendidas:

  • O ataque pode ser realizado apenas em pacotes cujo nome contenha o caractere hífen.
  • O atacante deve ser capaz de publicar um pacote gem com uma parte do nome antes do hífen. Por exemplo, se o ataque é direcionado ao pacote "rails-html-sanitizer", o atacante deve colocar no repositório seu próprio pacote "rails-html".
  • O pacote alvo do ataque deve ter sido criado nos últimos 30 dias ou não ter sido atualizado nos últimos 100 dias.

A vulnerabilidade é causada por um erro no manipulador de ações "yank", que interpreta a parte do nome após o hífen como o nome da plataforma, permitindo a remoção de pacotes alheios que coincidem na parte do nome antes do hífen. Em particular, no código do manipulador da operação "yank", para buscar pacotes, foi utilizado o comando 'find_by!(full_name: "#{rubygem.name}-#{slug}")', sendo que o parâmetro "slug" era fornecido pelo proprietário do pacote para determinar a versão a ser removida. O proprietário do pacote "rails-html" poderia, em vez da versão "1.2.3", indicar "sanitizer-1.2.3", o que levaria à aplicação da operação ao pacote alheio "rails-html-sanitizer-1.2.3".

A questão foi descoberta por um pesquisador de segurança no âmbito de um programa ativo de recompensas por identificação de problemas de segurança em projetos abertos conhecidos, disponível no HackerOne. O problema foi corrigido no RubyGems.org em 5 de maio e, segundo os desenvolvedores, até agora não foram encontrados vestígios de exploração da vulnerabilidade nos logs dos últimos 18 meses. No entanto, apenas uma auditoria superficial foi realizada e uma verificação mais aprofundada está planejada.

Para verificar seus projetos, é aconselhável analisar o histórico de operações no arquivo Gemfile.lock. A atividade maliciosa é expressa pela presença de alterações que mantêm o nome e a versão ou pela mudança de plataforma (por exemplo, quando o pacote gemname-1.2.3 é atualizado para gemname-1.2.3-java). Como uma medida de segurança contra a substituição oculta de pacotes em sistemas de integração contínua ou durante a publicação de projetos, os desenvolvedores são recomendados a usar o Bundler com as opções "—frozen" ou "—deployment" para fixar as 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