Backdoor de execução de código encontrada na biblioteca rest-client do Ruby
Hayley Denbraver
21 de agosto de 2019
0 minutos de leituraEm 19 de agosto de 2019, [rest-client](https://snyk.io/vuln/rubygems:rest-client), um cliente simples de HTTP e REST para Ruby, reportou uma nova ameaça à segurança. A conta RubyGem de um mantenedor foi comprometida, e um terceiro mal-intencionado instalou um backdoor de execução de código. A exploração afeta versões posteriores à 1.6.10 e anteriores à 1.7.0.rc1.
O que aconteceu?
O usuário do GitHub [juskoljo](https://github.com/juskoljo) abriu uma questão no repositório do rest-client em 19 de agosto. Ao analisar as diferenças entre as versões do pacote, o usuário descobriu que as versões entre 1.6.10 e 1.7.0.rc1 executavam código remoto hospedado em pastebin.com e enviavam informações para um site mal-intencionado. Com essa exploração, o invasor conseguiu obter a URL dos hosts infectados, variáveis de ambiente e outras informações confidenciais.
Vale a pena ler a discussão sobre a questão no GitHub. Ela mostra como um problema de segurança em código aberto foi tratado. O primeiro comentário menciona que foi solicitado um CVE, e o segundo informa que a versão comprometida foi removida e a conta do mantenedor foi bloqueada. Mais adiante, há uma discussão sobre as vantagens da autenticação de dois fatores em contas RubyGem.
É importante observar que a versão comprometida é bastante antiga. O rest-client está atualmente na série 2.x.x, então as versões exploradas estão várias versões principais atrás. Ainda assim, considerando os desafios da manutenção de código, sem dúvida há muitos projetos vulneráveis a essa exploração.
O que devo fazer agora?
Quem usa as versões infectadas deve atualizar o quanto antes. A versão 1.7.0.rc1 inclui uma correção. Você pode usar o Snyk para verificar se está usando as versões vulneráveis.
Se você usa nossa CLI, basta executar $ snyk test no diretório do projeto. Você verá uma lista de todas as vulnerabilidades nas dependências, incluindo as do rest-client.
Você também pode testar seu projeto pela nossa interface fácil de usar. Experimente hoje mesmo.
Também recomendo que você aprenda com essa exploração e ative a autenticação de dois fatores em todas as contas que oferecem esse recurso.
O que podemos aprender?
Essa vulnerabilidade mostra como é importante ativar a autenticação de dois fatores na conta do gerenciador de pacotes. Na verdade, mantenedores que se preocupam com a segurança devem considerar exigir esse recurso de quem tem acesso para enviar alterações.
Além disso, essa vulnerabilidade mostra por que é uma boa ideia manter as dependências relativamente atualizadas. As atualizações automáticas também podem causar problemas, mas está claro que o invasor queria, por assim dizer, “passar despercebido” ao atacar uma versão antiga.
Uma última lição desse caso é a importância de agir rapidamente para corrigir esse tipo de problema. Talvez o problema não afete muitos usuários, mas o impacto para quem for afetado pode ser enorme. É importante divulgar o ocorrido para que essas pessoas possam resolver o problema o mais rápido possível.
Esperamos que esta publicação ajude a divulgar o caso. Se você está preocupado com a possibilidade de estar usando uma versão infectada do rest-client, experimente o Snyk hoje mesmo! Ao executar um teste do Snyk, você pode descobrir se seu projeto inclui versões infectadas do rest-client e identificar outras vulnerabilidades conhecidas nas suas dependências.
Pacotes mal-intencionados em repositórios populares de código aberto estão se tornando cada vez mais comuns. Se você acredita ter encontrado um pacote potencialmente mal-intencionado, pode denunciá-lo ao Snyk por meio da nossa política de divulgação de pacotes de código aberto: https://snyk.io/vulnerability-disclosure/
Comece a jogar Capture the Flag
Aprenda a resolver desafios de Capture the Flag assistindo à gravação sob demanda do nosso workshop virtual introdutório.



