13 feb. 2021

Dependency Confusion: ataque que afecta a cientos de empresas

En lo que es un nuevo ataque a la cadena de suministro, un investigador de seguridad logró violar los sistemas internos de más de 35 empresas importantes, incluidos los de Microsoft, Apple, PayPal, Shopify, Netflix, Yelp, Tesla y Uber, y logró la ejecución remota de código.

Nota: es importante dejar en claro que todas las organizaciones seleccionadas durante esta investigación han otorgado permiso para que se realicen las pruebas de seguridad descriptas, ya sea a través de programas públicos de recompensas por errores o mediante acuerdos privados. No intente este tipo de prueba sin autorización.

La técnica, denominada dependency confusion o ataque de sustitución, aprovecha el hecho de que aplicación puede incluir componentes combinados desde fuentes públicas y privadas. El ataque se aprovecha de la utilización repositorios públicos y privados en proyectos de desarrollo software. Bajo determinadas circunstancias, "es posible confundir al gestor de dependencias para que descargue un módulo en control del atacante".

Algunos lenguages de programación incorporan un sistema para la instalación de dependencias en los proyectos. En el caso de Python, por ejemplo, se utiliza la utilidad pip, que consulta el índice PyPI (Python Package Index) en busca del módulo solicitado.

En palabras del investigador, Alex Birsan, resulta fascinante el nivel de confianza que se otorga a estos repositorios. Un comando sencillo como "pip install <nombre>" desencadena la búsqueda, descarga, instalación y, en última instancia, la ejecución del código solicitado.

Estas dependencias de paquetes externos, que se obtienen de los repositorios públicos durante un proceso de compilación, pueden representar una oportunidad de ataque cuando un adversario carga una versión superior de un módulo privado a la fuente pública, lo que hace que un cliente descargue automáticamente la versión falsa "más reciente" sin requiriendo alguna acción por parte del desarrollador. 

Ninguno de los servicios de alojamiento de paquetes puede garantizar que todo el código que cargan sus usuarios esté libre de malware. Investigaciones anteriores han demostrado que el typosquatting, un ataque que aprovecha las versiones de errores tipográficos de los nombres de paquetes populares, puede ser increíblemente eficaz para obtener acceso a PC aleatorias en todo el mundo.

"Desde errores puntuales cometidos por los desarrolladores en sus propias máquinas, hasta servidores de compilación internos o basados ​​en la nube mal configurados, pasando por pipelines de desarrollo sistémicamente vulnerables, una cosa estaba clara: ocupar nombres de paquetes internos válidos era un método casi seguro para entrar en las redes de algunas de las compañías de tecnología más grandes que existen, obteniendo ejecución remota de código y posiblemente permitiendo a los atacantes agregar puertas traseras durante las compilaciones", detalló el investigador de seguridad Alex Birsan en su investigación.

Birsan ha recibido colectivamente más de U$S 130.000 en recompensas por errores por sus esfuerzos.

Para llevar a cabo el ataque, Birsan comenzó recopilando nombres de paquetes internos privados utilizados por las principales empresas fuera de GitHub, publicaciones en varios foros de Internet y archivos JavaScript que enumeran las dependencias de un proyecto, y luego cargó bibliotecas no autorizadas con esos mismos nombres a los repositorios de código abierto, servicios de alojamiento de paquetes como npm, PyPI y RubyGems.

Por ejemplo, analizando PayPal, un código estaba destinado al uso interno y, un archivo package.json, parecía contener una combinación de dependencias públicas y privadas: paquetes públicos de npm, así como nombres de paquetes no públicos, probablemente alojados internamente por PayPal. Estos nombres no existían en el registro público de npm en ese momento.

"El sistema de compilación [de Shopify] instaló automáticamente una gema Ruby llamada 'shopify-cloud solo unas horas después de que la subí, y luego traté de ejecutar el código dentro de ella", señaló Birsan. Un paquete de Node que cargó en npm en agosto de 2020 se ejecutó en múltiples máquinas dentro de la red de Apple, afectando proyectos relacionados con el sistema de autenticación de ID de Apple de la compañía.

Birsan finalmente usó los paquetes falsificados para obtener un registro de cada máquina donde se instalaron los paquetes y exfiltró los detalles a través de DNS por la razón de que "sería menos probable que el tráfico se bloqueara o detectara al salir".

La preocupación de que un paquete con la versión superior sea retirado por el proceso de creación de la aplicación, independientemente de dónde se encuentre, no ha escapado a la atención de Microsoft, que publicó un nuevo documento técnico el martes que describe tres formas de mitigar los riesgos al usar fuentes de paquetes privados. Las principales entre sus recomendaciones son las siguientes:

  • Hacer referencia a un feed privado, no a varios
  • Proteger los paquetes privados mediante ámbitos controlados, espacios de nombres o prefijos, y
  • Utilizar funciones de verificación del lado del cliente, como la fijación de versiones y la verificación de integridad 

Fuente: Alex Birsan

0 comentarios:

Publicar un comentario

Gracias por dejar un comentario en Segu-Info.

Gracias por comentar!