RubyGems corrigiu o bug de aquisição de pacotes não autorizados

O repositório de pacotes RubyGems corrigiu o bug de aquisição de pacotes não autorizados. Confira os detalhes dessa correção e da ameaça.

Para quem ainda não conhece, o RubyGems é um gerenciador de pacotes para a linguagem de programação Ruby que provê um formato padrão para a distribuição de programas Ruby e bibliotecas em um formato auto-suficiente chamado de gem, uma ferramenta projetada para gerenciar facilmente a instalação de gems, e um servidor para distribui-los.

Agora, o repositório de pacotes RubyGems corrigiu uma vulnerabilidade crítica que permitiria a qualquer pessoa cancelar (“arrancar”) certos pacotes Ruby do repositório e republicar suas versões contaminadas ou maliciosas com os mesmos nomes de arquivo e números de versão.

RubyGems corrigiu o bug de aquisição de pacotes não autorizados

RubyGems corrigiu o bug de aquisição de pacotes não autorizados
RubyGems corrigiu o bug de aquisição de pacotes não autorizados

Sim. O repositório de pacotes RubyGems corrigiu o bug de aquisição de pacotes não autorizados. Atribuída CVE-2022-29176, a falha crítica existia em RubyGems.org, que é o equivalente a Ruby de npmjs.com, e hospeda mais de 170.000 pacotes Ruby (gems) com quase 100 bilhões de downloads servidos ao longo de sua vida.

Uma auditoria inicial da RubyGems revela que a vulnerabilidade não foi explorada nos últimos 18 meses para alterar quaisquer gems, mas uma auditoria mais profunda ainda está em andamento com resultados ainda a serem anunciados.

Esta semana, o RubyGems anunciou que um bug crítico poderia ter permitido a qualquer usuário do RubyGems.org arrancar versões de uma gem para a qual eles não tinham autorização e substituir o conteúdo da gem por arquivos mais novos.

Semelhante ao npm para pacotes NodeJS, RubyGems é um gerenciador de pacotes para a linguagem de programação Ruby e fornece um formato padronizado para distribuir artefatos Ruby finalizados (chamados “gems”).

O registro RubyGems.org é o serviço de hospedagem de gems da comunidade que permite aos desenvolvedores publicar ou instalar gems instantaneamente e usar um conjunto de APIs especializadas.

Caso um agente de ameaça tome conhecimento de tal falha, ele pode substituir silenciosamente o conteúdo de pacotes Ruby legítimos por malware – algo que ecoa as populares bibliotecas ua-parser-js, coa e rc do npm que foram sequestradas no ano passado para distribuir criptografia mineiros e ladrões de senhas.

Embora os incidentes de sequestro do npm tenham sido causados ​​por comprometimentos da conta do mantenedor e não por uma exploração de vulnerabilidade, eles causaram estragos, pois bibliotecas como ‘ua-parser-js’ foram usadas por mais de mil projetos, incluindo aqueles usados ​​pelo Facebook, Microsoft, Amazon, Instagram, Google, Slack, Mozilla, Discord, Elastic, Intuit, Reddit e muitas outras empresas conhecidas.

No caso de Ruby, a exploração em massa de tal exploração pode causar danos generalizados ao ecossistema Ruby e à segurança geral da cadeia de fornecimento de software.

Para explorar a vulnerabilidade, RubyGems explica, as seguintes condições precisam ser atendidas:

  • A gem que está sendo direcionada tem um ou mais traços em seu nome, por exemplo algo-provedor.
  • A palavra que vem antes do primeiro traço representa uma gem controlada pelo atacante que existe em RubyGems.org.
  • A gem que está sendo retirada/alterada foi criada nos últimos 30 dias ou não foi atualizada em mais de 100 dias.

“Por exemplo, o provedor de algo gem poderia ter sido assumido pelo proprietário da gem algo.”, explica RubyGems.

“Organizações com muitas gems não eram vulneráveis ​​desde que possuíssem a gem com o nome antes do traço, por exemplo, possuir a gem orgname protegeu todas as gems com nomes como orgname-provider.”

Essa vulnerabilidade, atribuída a CVE-2022-29176, espreitava na “ação de arrancar” do código RubyGems e agora foi corrigida.

Desenvolvedor independente e pentester, Greg Molnar explicou a falha com um pouco mais de profundidade técnica.

Neste momento, os mantenedores do RubyGems.org não acreditam que a vulnerabilidade tenha sido explorada, de acordo com os resultados de uma auditoria que analisou as alterações de gem feitas nos últimos 18 meses na plataforma.

Mas os proprietários do registro afirmam que uma auditoria mais profunda está em andamento e seus resultados seguirão no comunicado de segurança publicado para essa vulnerabilidade, que também contém algumas mitigações.

“RubyGems.org envia um e-mail para todos os proprietários de gems quando uma versão de gems é publicada ou retirada. Não recebemos nenhum e-mail de suporte de proprietários de gems indicando que suas gems foram retiradas sem autorização.”, afirma o comunicado.

Os desenvolvedores RubyGem podem auditar seu histórico de aplicativos para possíveis explorações passadas revisando seu Gemfile.lock e procurando por gems que tiveram sua plataforma alterada com os números de versão permanecendo inalterados.

Por exemplo, ver sua gem gemname-3.1.2 renomeada para gemname-3.1.2-java é um possível sinal de que a vulnerabilidade foi explorada.

O usuário laursisask foi creditado por relatar a vulnerabilidade via HackerOne.

Sobre o Edivaldo Brito

Edivaldo Brito é analista de sistemas, gestor de TI, blogueiro e também um grande fã de sistemas operacionais, banco de dados, software livre, redes, programação, dispositivos móveis e tudo mais que envolve tecnologia.

Deixe um comentário

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.