Geral 3min de Leitura - 25 de maio de 2022

Bibliotecas PyPI e PHP foram sequestradas para roubar chaves AWS

PHP PYPI

This post is also available in: Português

Baixado mais de vinte mil vezes por semana, o módulo PyPi ‘ctx’ foi comprometido em um ciberataque à cadeia de suprimentos de software com versões maliciosas que roubam as variáveis de ambiente do desenvolvedor.

Os cibercriminosos até substituíram as versões mais antigas e seguras de ‘ctx’ por um código que exfiltra as variáveis de ambientes do desenvolvedor, para coletar informações confidenciais, como chaves e credenciais da AWS.

  • AWS (Amazon Web Services), é uma plataforma de serviços de computação em nuvem oferecida pela Amazon.com. Os serviços são utilizados por empresas em todo o mundo.

Além de substituir as versões mais antigas de ‘ctx’, as versões de ‘PHPass’, publicadas no repositório de pacotes PHP/Composer Packgist, foram alteradas para roubar informações.

A estrutura PHPass incidiu em mais de 2,5 milhões de downloads no repositório Packagist ao longo de sua existência – embora se acredite que os downloads de versões maliciosas sejam em menor número.

Informações sendo carregadas para um endpoint Heroku

O ‘ctx’ é um módulo Python, que permite aos desenvolvedores manipular seus objetivos de dicionário (‘dict’) de várias maneiras. O pacote, apesar de popular, não recebia modificações desde 2014 por seu desenvolvedor.

Porém, versões mais recentes surgiram a partir de 15 de maio (2022), contendo código malicioso.

Jimtk foi quem identificou inicialmente o pacote ‘ctx’ comprometido. E Somdev Sangwan, um hacker ético (ou White hat), foi quem relatou que o pacote ‘PHPass’ foi comprometido com versões contaminadas da biblioteca, roubando as chaves secretas da AWS do desenvolvedor.

As alegações foram examinadas pela equipe de pesquisa de segurança da empresa Sonatype.

Embora o PyPI tenha retirado as versões ‘ctx’ maliciosas, as cópias recuperadas dos arquivos de malware da Sonatype mostram a presença de código malicioso em todas as versões ‘ctx’. Vale ressaltar que a versão 0.1.2 que não recebia modificações desde 2014 também foi substituída esta semana por uma carga maliciosa.

Após instaladas, as versões reúnem todas as suas variáveis de ambiente e carregam esses valores para o seguinte endpoint Heroku:

https://anti-theft-web.herokuapp[.]com/hacked/

  • O Heroku é uma plataforma de nuvem como serviço que suporta várias linguagens de programação. Sendo uma das primeiras plataformas em nuvem, o Heroku está em desenvolvimento desde junho de 2007, quando suportava apenas a linguagem de programação Ruby, mas agora suporta Java, Node.js, Scala, Clojure, Python, PHP e Go.

No momento que a análise foi realizada, o endpoint não estava mais ativo.

Roubo de credenciais da AWS

PHPass é uma estrutura de hash de senha de código aberto que pode ser usada por desenvolvedores em aplicativos PHP.
Lançado em 2005, o framework foi baixado mais de 2,5 milhões de vezes no Packagist ao longo de sua existência.

Dentro do PHPass, o arquivo ‘PasswordHash.php’ alterado, procura especificamente pelos valores ‘AWS_ACCESS_KEY’ e ‘AWS_SECRET_KEY’ em seu ambiente. Esses segredos são então carregados no mesmo endpoint Heroku.

A presença de lógica idêntica e endpoints Heroku nos pacotes PyPI e PHP indicam que um agente de ameaça comum é responsável por esses dois sequestros.

O responsável pelo ataque

Os pesquisadores afirmam que a identidade do atacante é óbvia. Porém, isso poderia ter sido um exercício PoC que deu errado e até que mais informações venham à tona, seria irresponsável nomear a pessoa por trás do sequestro ‘ctx’ e ‘PHPass’.

Além disso, enquanto o pacote malicioso do PyPI ‘ctx’ estava ativo, o impacto das versões maliciosas do ‘PHPass’ parece ter sido muito mais limitado depois que o cofundador do Packagist, Jordi Boggiano, marcou o repositório sequestrado como “abandonado” e apontou todos para use bordoni/phpass em vez disso.

Supõe-se que um comprometimento da conta do mantenedor levou ao sequestro do pacote PyPI ‘ctx’, mas a causa real ainda não foi descoberta.

Mas, o comprometimento do hautepass/phpass foi atribuído ao invasor que reivindicou um repositório GitHub anteriormente abandonado e reviveu esse repositório para publicar versões ‘PHPass’ alteradas no registro do Packagist.

Esse tipo de ataque já foi chamado de repo jacking pela empresa de segurança cibernética Security Innovation. Mais recentemente, a Intezer e a Checkmarx divulgaram um relatório conjunto sobre essa pesquisa e como ela poderia impactar os projetos Go, apelidando o ataque de “chainjacking”.

No inicio deste ano, bibliotecas npm muito populares, ua-parser-js, ‘coa’ e ‘rc’ foram sequestradas para servir mineradores de criptomoedas e roubo de credenciais.

Após esses ataques, o GitHub exigiu autenticação de dois fatores para mantenedores dos 100 principais pacotes npm e anunciou melhorias de segurança adicionais.

A tendencia de cibercriminosos e caçadores de recompensas encontrarem novas táticas para se infiltrar na cadeia de suprimentos de software continua, impulsionando melhorias, com o objetivo de evitar ataques semelhantes.

Cadastre-se em nossa Newsletter e receba nossos últimos conteúdos associados a segurança digital e tecnologia!

This post is also available in: Português