La puerta trasera en el repositorio público usó una nueva forma de ataque para atacar a las grandes empresas

Calavera y tibias cruzadas en código binario

Una puerta trasera que los investigadores encontraron escondida dentro de un código fuente abierto dirigido a cuatro empresas alemanas fue obra de un probador de penetración profesional. El probador estaba comprobando la resiliencia de los clientes frente a una nueva clase de ataques que explota los repositorios públicos utilizados por millones de proyectos de software en todo el mundo. Pero podría haber sido malo. Muy mal.

La confusión de dependencia es una nueva forma de ataque a la cadena de suministro que pasó a primer plano en marzo de 2021, cuando un investigador demostró que podía usarlo para ejecutar código no autorizado de su elección en redes pertenecientes a Apple, Microsoft y otras 33 empresas. El investigador, Alex Birsan, recibió $130,000 en recompensas por errores y crédito por desarrollar la nueva forma de ataque.

Unas semanas más tarde, otro investigador descubrió pruebas que mostraban que Amazon, Slack, Lyft, Zillow y otras empresas habían sido objeto de ataques que utilizaban la misma técnica. La liberación de más de 200 paquetes maliciosos en la naturaleza indicó que el ataque que ideó Birsan atrajo a los actores de amenazas del mundo real.

Esta no es la dependencia que estás buscando.

La confusión de dependencias explota la confianza de las empresas en el código fuente abierto disponible en repositorios como NPM, PyPI o RubyGems. En algunos casos, el software de la empresa se conectará automáticamente a estas fuentes para recuperar las bibliotecas de códigos necesarias para que la aplicación funcione. Otras veces, los desarrolladores almacenan estas llamadas dependencias internamente. Como sugiere el nombre, la confusión de dependencias funciona engañando a un objetivo para que descargue la biblioteca desde el lugar equivocado, una fuente pública en lugar de una interna.

Para lograr esto, los piratas informáticos examinan el código JavaScript, los paquetes internos publicados accidentalmente y otras fuentes para descubrir los nombres de las dependencias de código almacenadas internamente por la organización objetivo. Luego, los piratas informáticos crean una dependencia maliciosa y la alojan en uno de los repositorios públicos. Al darle al paquete malicioso el mismo nombre que el interno y usar un número de versión más alto, algunos objetivos lo descargarán automáticamente y actualizarán el software. Con eso, los piratas informáticos lograron infectar la cadena de suministro de software en la que confían los objetivos y lograr que el objetivo o sus usuarios ejecuten código malicioso.

En las últimas semanas, los investigadores de dos empresas de seguridad han rastreado las dependencias de código que usaban nombres de mantenedores y paquetes que se parecían mucho a los que podrían usar cuatro empresas alemanas en los sectores industrial, logístico y de medios. Los nombres de los paquetes y los nombres de los responsables correspondientes fueron:

  • bertelsmannnpm; bertelsmannnpm@protonmail.com
  • boschnodemodules; boschnodemodules@protonmail.com
  • módulos de stihlnode; stihlnodemodules@protonmail.com
  • dbschenkernpm; dbschenkernpm@protonmail.com

Basándose en esos nombres, los investigadores dedujeron que los paquetes fueron diseñados para apuntar a Bertelsmann, Bosch, Stihl y DB Schenk.

Dentro de cada paquete había un código ofuscado que obtenía el nombre de usuario del objetivo, el nombre de host y el contenido del archivo de directorios específicos y los exfiltraba a través de conexiones HTTPS y DNS. El paquete malicioso luego instalaría una puerta trasera que informaría a un servidor de comando y control operado por un atacante para obtener instrucciones, que incluyen:

  • Descargar un archivo del servidor C2
  • Subir un archivo al servidor C2
  • Evaluar código Javascript arbitrario
  • Ejecutar un binario local
  • Eliminar y terminar el proceso
  • Registrar la puerta trasera en el servidor C2

Los investigadores de JFrog y ReversingLabs, las dos empresas de seguridad que descubrieron de forma independiente los paquetes maliciosos, descubrieron rápidamente que eran parte de la misma familia que los paquetes maliciosos que la empresa de seguridad Snyk encontrado el mes pasado

. Si bien Snyk fue el primero en detectar los archivos, no tenía suficiente información para identificar el objetivo previsto.

Giro de la trama

El miércoles, apenas unas horas antes de que JFrog y ReversingLabs publicaran blogs aquí y aquíuna boutique de pruebas de penetración llamada código blanco tomó crédito por los paquetes.

“Tnx por su excelente análisis”, dijo la firma en un Pío que se dirigió a Snyk y citó su publicación de blog del mes pasado. “Y no se preocupe, el ‘actor malicioso’ es uno de nuestros pasantes 😎 a quien se le encargó investigar la confusión de dependencias como parte de nuestras simulaciones de ataques continuos para clientes. Para aclarar sus preguntas: estamos tratando de imitar actores de amenazas realistas para clientes dedicados como parte de nuestro Servicio de inteligencia de seguridad y trajimos nuestro administrador de paquetes ‘propio’ que admite yarn y npm”.

En un mensaje directo, el CEO de Code White, David Elze, dijo que el pasante de la compañía creó y publicó los paquetes como parte de un ejercicio legítimo de prueba de penetración autorizado explícitamente por las compañías afectadas.

“No divulgamos los nombres de nuestros clientes, pero específicamente, puedo confirmar que estamos legalmente contratados por las empresas afectadas y actuamos en su nombre para simular estos escenarios de ataque realistas”, dijo Elze.

La participación de Code White significa que los ataques de confusión de dependencias descubiertos por Snyk y luego observados por JFrog y ReversingLabs no eran una señal de que las vulnerabilidades de este vector en el mundo real estuvieran aumentando. Aún así, sería un error pensar que esta clase de ataque nunca se usa en la naturaleza y no se volverá a usar.

En marzo, la empresa de seguridad Sonatype paquetes maliciosos descubiertos publicado en npm dirigido a Amazon, Slack, Lyft y Zillow. Estos paquetes no contenían descargos de responsabilidad que indicaran que formaban parte de un programa de recompensas por errores o un ejercicio benigno de prueba de concepto. Además, los paquetes se programaron para extraer información confidencial del usuario, incluido el historial de bash y el contenido de /etc/shadow, el directorio donde se almacenan los datos de contraseña de usuario de Linux. En algunos casos, los paquetes también abrieron una cubierta inversa.

JFrog también ha detectado ataques maliciosos en la naturaleza, incluido la presencia mencionada anteriormente de más de 200 paquetes en npm para varios proyectos de Azure que robaron información personal de las computadoras de los desarrolladores.

Eso significa que a pesar de que este último descubrimiento fue una falsa alarma, los ataques maliciosos de confusión de dependencia hacer ocurrir en la naturaleza. Dadas las terribles consecuencias que podrían surgir de una exitosa, las organizaciones deberían invertir tiempo en probar sus sistemas o utilizar los servicios de empresas como Snyk, JFrog, ReversingLabs o Sonatype, todas las cuales monitorean los ecosistemas de código abierto en busca de vulnerabilidades y exploits.

Leave a Reply

Your email address will not be published.