Compromiso de paquetes npm de SAP
Múltiples paquetes npm oficiales de SAP fueron comprometidos en lo que se cree es un ataque a la cadena de suministro del grupo TeamPCP, diseñado para robar credenciales y tokens de autenticación de los sistemas de los desarrolladores.
Investigadores de seguridad informan que el compromiso afectó a cuatro paquetes, cuyas versiones han sido marcadas como obsoletas en NPM: @cap-js/sqlite v2.2.2, @cap-js/postgres v2.2.2, @cap-js/db-service v2.10.1 y mbt v1.2.48. Estos paquetes soportan el modelo de programación en la nube CAP de SAP y Cloud MTA, utilizados comúnmente en desarrollo empresarial.
Según informes de Aikido y Socket, los paquetes comprometidos fueron modificados para incluir un script malicioso 'preinstall' que se ejecuta automáticamente al instalar el paquete npm. Este script lanza un cargador llamado setup.mjs que descarga el runtime Bun JavaScript desde GitHub y lo utiliza para ejecutar un payload heavily ofuscado llamado execution.js.
El payload es un ladrón de información que roba una amplia variedad de credenciales tanto de máquinas de desarrolladores como de entornos CI/CD, incluyendo tokens de autenticación de npm y GitHub, claves SSH, credenciales de la nube para AWS, Azure y Google Cloud, configuraciones y secretos de Kubernetes, y secretos de pipelines CI/CD y variables de entorno.
El malware también intenta extraer secretos directamente de la memoria del runner de CI, de manera similar a como TeamPCP extrajo credenciales en ataques anteriores a la cadena de suministro. Socket explica que en los runners de CI, el payload ejecuta un script Python incrustado que lee /proc/<pid>/maps y /proc/<pid>/mem para el proceso Runner.Worker, extrayendo cada secreto que coincida con el patrón "key" :{ "value": "…", "isSecret":true} directamente de la memoria del runner, evitando así cualquier enmascaramiento de registros aplicado por la plataforma CI.
Una vez que los datos son recolectados, se cifran y se suben a repositorios públicos de GitHub bajo la cuenta de la víctima. Estos repositorios incluyen la descripción "A Mini Shai-Hulud has Appeared", similar a la cadena "Shai-Hulud: The Third Coming" vista en el ataque a la cadena de suministro de Bitwarden. El malware también utiliza búsquedas de commits de GitHub como mecanismo de dead-drop para recuperar tokens y obtener acceso adicional.
Aikido señala que el malware busca commits de GitHub que contengan una cadena específica y utiliza mensajes de commit coincidentes como un dead-drop de tokens. Los mensajes de commit que coinciden con el patrón "OhNoWhatsGoingOnWithGitHub:<base64>" se decodifican en tokens de GitHub y se verifican para determinar si tienen acceso al repositorio.
Al igual que en ataques anteriores, el payload desplegado incluye código para autopropagarse a otros paquetes. Utilizando credenciales npm o GitHub robadas, intenta modificar otros paquetes y repositorios a los que tenga acceso e inyecta el mismo código malicioso para propagarse más.
Los investigadores han vinculado este ataque con una confianza media al grupo de actores de amenazas TeamPCP, quienes utilizaron código y tácticas similares en ataques anteriores a la cadena de suministro contra Trivy, Checkmarx y Bitwarden.
Aunque no está claro cómo los actores de amenazas comprometieron el proceso de publicación de npm de SAP, el ingeniero de seguridad Adnan Khan informa que un token de NPM pudo haber sido expuesto a través de un trabajo de CircleCI mal configurado. BleepingComputer contactó a SAP para conocer cómo se comprometieron los paquetes npm, pero no recibió respuesta al momento de la publicación.



















Deja una respuesta