Backdoor en el repositorio público usó una nueva forma de ataque para apuntar a grandes empresas

Una puerta trasera que los investigadores encontraron escondida en un código fuente abierto dirigido a cuatro empresas alemanas fue obra de un probador de penetración profesional. El probador verificó la resistencia de los clientes a una nueva clase de ataques que explotan 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 salió a la luz en marzo de 2021 cuando un investigador demostró que podía usarla para ejecutar código no autorizado de su elección en redes propiedad de Apple, Microsoft y otras 33 empresas. El investigador Alex Birsan recibió $ 130,000 en recompensas por errores y crédito por desarrollar el nuevo vector de ataque. Unas semanas más tarde, otro investigador descubrió pruebas que mostraban que Amazon, Slack, Lyft, Zillow y otras empresas eran objeto de ataques con la misma técnica. El lanzamiento de más de 200 paquetes maliciosos en la naturaleza indicó que el ataque diseñado por Birsan estaba dirigido a actores de amenazas reales.
Esta no es la dependencia que busca
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 empresarial se conecta automáticamente a estas fuentes para obtener las bibliotecas de código necesarias para que la aplicación funcione. En otros casos, los desarrolladores almacenan estas supuestas 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 y no interna. Para lograr esto, los piratas informáticos analizan el código JavaScript, los paquetes internos liberados sin darse cuenta y otras fuentes para descubrir los nombres de las dependencias de código almacenadas internamente de la organización atacada. 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 esto, los piratas informáticos han logrado infectar la cadena de suministro de software en la que confían los objetivos y engañar al objetivo o a sus usuarios para que ejecuten código malicioso. En las últimas semanas, los investigadores de dos empresas de seguridad han descubierto dependencias de código que utilizan nombres de mantenedores y paquetes muy similares a los que podrían utilizar cuatro empresas alemanas de medios, logística e industriales. Los nombres de los paquetes y los nombres de los mantenedores correspondientes fueron:
- bertelsmannnpm; bertelsmannnpm@protonmail.com
- módulos de nodos de Bosch; boschnodemodules@protonmail.com
- módulos de stihlnode; stihlnodemodules@protonmail.com
- dbschenkernpm; dbschenkernpm@protonmail.com
A partir de estos nombres, los investigadores concluyeron que los paquetes están dirigidos a Bertelsmann, Bosch, Stihl y DB Schenk. Dentro de cada paquete había un código ofuscado que obtenía el nombre de usuario, el nombre de host y el contenido del archivo de directorios específicos del objetivo 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 ejecutado por el atacante para recuperar instrucciones, que incluyen:
- Descargar un archivo del servidor C2
- Subir un archivo al servidor C2
- Evaluar cualquier código Javascript
- Ejecutar un binario local
- Eliminar y salir
- 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 descubiertos por la empresa de seguridad Snyk el mes pasado. Aunque Snyk fue el primero en descubrir 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 tanto JFrog como ReversingLabs comenzaran a escribir blogs aquí y aquí, una boutique de pruebas de penetración llamada Code White recibió crédito por los paquetes. «Tnx por su excelente análisis», dijo la compañía en un Pío que contactó a Snyk, citando su publicación de blog del mes pasado. «Y no se preocupe, el ‘actor malicioso’ es uno de nuestros pasantes 😎 encargado de investigar la confusión de dependencias como parte de nuestras simulaciones de ataques en curso para los clientes. Para aclarar sus preguntas: tratamos de imitar actores de amenazas realistas para clientes dedicados como parte de nuestro Servicio de inteligencia de seguridad y hemos traído nuestro «propio» administrador de paquetes compatible con garn y npm».
@snyksec Tnx por su excelente análisis en https://t.co/UoshhgaDgx y no se preocupe, el «actor malicioso» es uno de nuestros pasantes 😎 encargado de investigar la confusión de dependencias como parte de nuestras simulaciones de ataques en curso para los clientes. (1/2)— Code White GmbH (@codewhitesec) 10 de mayo de 2022
En un mensaje directo, el director ejecutivo de Code White, David Elze, dijo que el pasante de la empresa creó y lanzó los paquetes como parte de una prueba de penetración legítima autorizada específicamente por las empresas afectadas. «No divulgamos los nombres de nuestros clientes, pero puedo confirmar expresamente que las empresas involucradas nos encargaron legalmente 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 dependencia descubiertos por Snyk y luego observados por JFrog y ReversingLabs no eran una señal de que las vulnerabilidades de este vector estuvieran aumentando en el mundo real. Sin embargo, 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 firma de seguridad Sonatype descubrió paquetes maliciosos publicados en npm dirigidos a Amazon, Slack, Lyft y Zillow. Estos paquetes no contenían un descargo de responsabilidad que indicara que formaban parte de un programa de recompensas por errores o un ejercicio benigno de prueba de concepto. Además, los paquetes han sido programados para filtrar información confidencial del usuario, incluido el historial de bash y el contenido de /etc/shadow, el directorio donde se almacenan los datos de la contraseña del usuario de Linux. En algunos casos, los paquetes también abrieron un sobre invertido. JFrog también ha detectado ataques maliciosos, incluida la presencia antes mencionada de más de 200 paquetes en npm para varios proyectos de Azure que robaron información personal de las computadoras de los desarrolladores. Esto significa que si bien este último descubrimiento fue un falso positivo, los ataques maliciosos de confusión de dependencias ocurren en la naturaleza. Dadas las nefastas consecuencias que podrían resultar de un sistema exitoso, las empresas deberían invertir tiempo en probar sus sistemas o contratar los servicios de empresas como Snyk, JFrog, ReversingLabs o Sonatype, todas las cuales son ecosistemas de código abierto. Monitorean vulnerabilidades y exploits.