Paquetes npm de SAP comprometidos en ataque a la cadena de suministro: credenciales en riesgo
Múltiples paquetes npm oficiales de **SAP** han sido comprometidos en un presunto ataque a la cadena de suministro, potencialmente vinculado al actor de amenazas **TeamPCP**. El ataque tuvo como objetivo robar credenciales sensibles y tokens de autenticación de los sistemas de los desarrolladores, afectando entornos de desarrollo empresariales.

### Paquetes Comprometidos
Investigadores de seguridad han identificado cuatro paquetes comprometidos, ahora obsoletos en NPM:
* `@cap-js/sqlite` – v2.2.2
* `@cap-js/postgres` – v2.2.2
* `@cap-js/db-service` – v2.10.1
* `mbt` – v1.2.48
Estos paquetes soportan el Modelo de Programación de Aplicaciones en la Nube (CAP) y Cloud MTA de **SAP**, ampliamente utilizados en el desarrollo empresarial.
### Vector de Ataque
Según informes de **Aikido** y **Socket**, los paquetes comprometidos contenían un script malicioso 'preinstall'. Este script se ejecuta automáticamente al instalar el paquete, lanzando un cargador llamado `setup.mjs`. El cargador descarga el runtime de JavaScript Bun desde GitHub y lo utiliza para ejecutar un `payload` de `execution.js` fuertemente ofuscado.
### Payload de Robo de Información
El `payload` funciona como un ladrón de información, apuntando a una amplia gama de credenciales tanto de máquinas de desarrolladores como de entornos CI/CD, incluyendo:
* Tokens de autenticación npm y GitHub
* Claves SSH y credenciales de desarrollador
* Credenciales de la nube para **AWS**, **Azure** y **Google Cloud**
* Configuración y secretos de Kubernetes
* Secretos de pipelines CI/CD y variables de entorno
El `malware` también intenta extraer secretos directamente de la memoria del `runner` de CI, similar a ataques previos de **TeamPCP**.
> "En los `runners` de CI, el `payload` ejecuta un script de Python incrustado que lee /proc/<pid>/maps y /proc/<pid>/mem para el proceso Runner.Worker para extraer cada secreto que coincida con 'key' :{ 'value': '...', 'isSecret':true} directamente de la memoria del `runner`, eludiendo todo el enmascaramiento de registros aplicado por la plataforma de CI", explica Socket.
### GitHub como Mecanismo de Exfiltración de Datos y Dead-Drop
Los datos recopilados se cifran y se suben a repositorios públicos de GitHub bajo la cuenta de la víctima. Estos repositorios incluyen la descripción: "Ha aparecido un Mini Shai-Hulud", reminiscente del ataque a la cadena de suministro de **Bitwarden**.

*Repos de Github creados con la descripción "Ha aparecido un Mini Shai-Hulud"*
*Fuente: Aikido*
El `malware` también utiliza búsquedas de commits de GitHub como mecanismo de `dead-drop` para recuperar tokens.
> "El `malware` busca en los commits de GitHub esta cadena y utiliza los mensajes de commit coincidentes como un `dead-drop` de tokens", explica Aikido.
>
> "Los mensajes de commit que coinciden con OhNoWhatsGoingOnWithGitHub:<base64> se decodifican en tokens de GitHub y se verifica el acceso al repositorio."
### Autopropagación
Similar a ataques anteriores, el `payload` incluye código para autopropagarse a otros paquetes. Utilizando credenciales npm o GitHub robadas, intenta modificar otros paquetes y repositorios a los que obtiene acceso, inyectando el mismo código malicioso para propagar aún más el compromiso.
### Atribución
Los investigadores evalúan con una confianza media que **TeamPCP** está detrás de este ataque, citando código y tácticas similares utilizadas en ataques previos a la cadena de suministro contra **Trivy**, **Checkmarx** y **Bitwarden**.
### Investigación en Curso
El método utilizado para comprometer el proceso de publicación npm de **SAP** sigue sin estar claro. Un ingeniero de seguridad sugirió que un token de NPM podría haber sido expuesto a través de un trabajo mal configurado de **CircleCI**.
**SAP** aún no ha respondido a las solicitudes de comentarios sobre el incidente.