Pacotes npm da SAP Comprometidos em Ataque à Cadeia de Suprimentos: Credenciais em Risco
Vários pacotes npm oficiais da **SAP** foram comprometidos em um suspeito ataque à cadeia de suprimentos, potencialmente ligado ao ator de ameaças **TeamPCP**. O ataque visou roubar credenciais sensíveis e tokens de autenticação dos sistemas dos desenvolvedores, impactando ambientes de desenvolvimento corporativo.

### Pacotes Comprometidos
Pesquisadores de segurança identificaram quatro pacotes comprometidos, agora depreciados no NPM:
* `@cap-js/sqlite` – v2.2.2
* `@cap-js/postgres` – v2.2.2
* `@cap-js/db-service` – v2.10.1
* `mbt` – v1.2.48
Esses pacotes suportam o Cloud Application Programming Model (CAP) e o Cloud MTA da **SAP**, amplamente utilizados no desenvolvimento corporativo.
### Vetor de Ataque
De acordo com relatórios da **Aikido** e **Socket**, os pacotes comprometidos continham um script malicioso 'preinstall'. Este script é executado automaticamente na instalação do pacote, lançando um loader chamado `setup.mjs`. O loader baixa o runtime JavaScript Bun do GitHub e o utiliza para executar um payload `execution.js` altamente ofuscado.
### Payload de Roubo de Informações
O payload funciona como um roubador de informações, visando uma ampla gama de credenciais de máquinas de desenvolvedores e ambientes CI/CD, incluindo:
* Tokens de autenticação npm e GitHub
* Chaves SSH e credenciais de desenvolvedor
* Credenciais de nuvem para **AWS**, **Azure** e **Google Cloud**
* Configuração e segredos do Kubernetes
* Segredos de pipeline CI/CD e variáveis de ambiente
O malware também tenta extrair segredos diretamente da memória do Runner do CI, semelhante a ataques anteriores do **TeamPCP**.
> "Em runners de CI, o payload executa um script Python embutido que lê /proc/<pid>/maps e /proc/<pid>/mem para o processo Runner.Worker para extrair todo segredo que corresponda a 'key' :{ 'value': '...', 'isSecret':true} diretamente da memória do runner, contornando toda a mascaramento de log aplicado pela plataforma de CI", explica Socket.
### GitHub como Mecanismo de Exfiltração de Dados e Dead-Drop
Os dados coletados são criptografados e enviados para repositórios públicos do GitHub sob a conta da vítima. Esses repositórios incluem a descrição, "A Mini Shai-Hulud has Appeared", lembrando o ataque à cadeia de suprimentos da **Bitwarden**.

*Repositórios do Github criados com a descrição "A Mini Shai-Hulud has Appeared"*
*Fonte: Aikido*
O malware também utiliza buscas de commits do GitHub como um mecanismo de dead-drop para recuperar tokens.
> "O malware busca no GitHub commits por esta string e usa mensagens de commit correspondentes como um token dead-drop", explica Aikido.
>
> "Mensagens de commit que correspondem a OhNoWhatsGoingOnWithGitHub:<base64> são decodificadas em tokens do GitHub e verificadas quanto ao acesso ao repositório."
### Auto-Propagação
Semelhante a ataques anteriores, o payload inclui código para se auto-propagar para outros pacotes. Usando credenciais npm ou GitHub roubadas, ele tenta modificar outros pacotes e repositórios aos quais obtém acesso, injetando o mesmo código malicioso para espalhar ainda mais o comprometimento.
### Atribuição
Pesquisadores avaliam com média confiança que o **TeamPCP** está por trás deste ataque, citando código e táticas semelhantes usadas em ataques anteriores à cadeia de suprimentos contra **Trivy**, **Checkmarx** e **Bitwarden**.
### Investigação em Andamento
O método usado para comprometer o processo de publicação npm da **SAP** permanece incerto. Um engenheiro de segurança sugeriu que um token NPM pode ter sido exposto através de um job mal configurado do **CircleCI**.
A **SAP** ainda não respondeu aos pedidos de comentários sobre o incidente.