Descubre Noticias de Ciberseguridad en nuestro TecnetBlog

MavenGate: Riesgo de Secuestro de Java/Android por Bibliotecas

Escrito por Adan Cuevas | Jan 25, 2024 2:30:00 PM

¿Te imaginas que un hacker pudiera tomar el control de tu aplicación de Java o Android y ejecutar código malicioso en ella sin que te dieras cuenta? Pues eso es lo que podría ocurrir si usas alguna de las muchas bibliotecas públicas y populares que han sido abandonadas por sus creadores, pero que siguen siendo utilizadas por miles de desarrolladores. Se trata de un nuevo método de ataque a la cadena de suministro de software llamado MavenGate.

 

¿Qué es MavenGate y cómo funciona?

 

 

Se ha detectado que varias bibliotecas públicas y populares, que han sido abandonadas pero aún se utilizan en aplicaciones Java y Android, son vulnerables a un nuevo método de ataque en la cadena de suministro de software conocido como "MavenGate". En un análisis publicado recientemente, se ha señalado que los proyectos pueden ser comprometidos mediante la compra de nombres de dominio. Dado que la mayoría de las configuraciones de compilación predeterminadas son vulnerables, es difícil o incluso imposible detectar si se está produciendo un ataque.

La explotación exitosa de estas vulnerabilidades podría permitir a actores maliciosos secuestrar elementos en las dependencias e insertar código malicioso en la aplicación. Incluso podrían comprometer el proceso de compilación mediante un complemento malicioso. Todas las tecnologías basadas en Maven, incluido Gradle, son susceptibles a este tipo de ataque. La firma de seguridad móvil ha informado a más de 200 empresas, incluyendo Google, Facebook, Signal, Amazon y otras, sobre esta amenaza.

 

Conoce más sobre:  Protegiendo la Cadena de Suministro: Principales Ataques



Apache Maven se utiliza principalmente para crear y gestionar proyectos basados en Java. Permite a los usuarios descargar y gestionar dependencias, que se identifican por sus ID de grupo únicos, así como crear documentación y gestionar versiones. Aunque los repositorios que albergan estas dependencias pueden ser públicos o privados, un atacante podría apuntar a los repositorios públicos para llevar a cabo ataques en la cadena de suministro de software. Esto se hace comprando el dominio caducado controlado por el propietario de la dependencia y obteniendo acceso al ID de grupo.

La ejecución de este ataque implica registrar un registro TXT DNS en un repositorio donde no exista ninguna cuenta que administre el ID de grupo vulnerable. Si el ID de grupo ya está registrado en el repositorio, el atacante podría intentar obtener acceso comunicándose con el equipo de soporte del repositorio.

Para probar este escenario de ataque, se cargó una biblioteca de prueba de Android y se incluyeron dos versiones en JitPack. Una de las versiones era una réplica legítima, mientras que la otra era una copia editada "no confiable" que apuntaba a un repositorio de GitHub bajo el control del atacante.

El ataque se llevó a cabo agregando Maven Central y JitPack a la lista de repositorios de dependencia en el script de compilación de Gradle. El orden de declaración determinó cómo Gradle verificó las dependencias en tiempo de ejecución. En consecuencia, un adversario que buscara corromper la cadena de suministro de software podría atacar las versiones existentes de una biblioteca publicando una versión superior o promocionando una versión inferior a la legítima.

Este tipo de ataque es una forma de confusión de dependencias, en la que un atacante publica un paquete no autorizado en un repositorio de paquetes público con el mismo nombre que un paquete en un repositorio privado.

La mayoría de las aplicaciones no verifican la firma digital de las dependencias, lo que hace que este tipo de ataque sea efectivo. Los investigadores señalan que los desarrolladores deben ser responsables de las dependencias que declaran y también deben escribir hashes de clave pública para sus dependencias, mientras que los desarrolladores finales solo deben ser responsables de sus dependencias directas.

De un total de 33,938 dominios analizados, se encontró que 6,170 (18.18%) eran vulnerables a MavenGate, lo que permitía a los actores de amenazas secuestrar dependencias e inyectar su propio código.

Sonatype, propietaria de Maven Central, ha tomado medidas de seguridad, como deshabilitar todas las cuentas asociadas con dominios caducados y proyectos de GitHub. También ha anunciado planes para colaborar con SigStore para firmar digitalmente los componentes y mejorar la seguridad en la cadena de suministro de software.

 

Te podría interesar leer:  Ciberseguridad en la Cadena de Suministro con Wazuh

 

¿Qué riesgos implica MavenGate y cómo prevenirlo?

 

El ataque MavenGate podría tener graves consecuencias para la seguridad y la privacidad de los usuarios y los desarrolladores de aplicaciones de Java y Android. El código malicioso inyectado en las dependencias podría acceder a los datos sensibles de los usuarios, como las credenciales, los contactos, los mensajes, las fotos, la ubicación, etc. También podría realizar acciones no autorizadas, como enviar SMS, realizar llamadas, instalar otras aplicaciones maliciosas, etc. Además, el ataque podría afectar al proceso de construcción de las aplicaciones, alterando el código fuente, la firma, la distribución o la actualización de las mismas.

Para evitar ser víctima de este tipo de ataques, los desarrolladores deben tomar una serie de medidas de prevención y mitigación, como las siguientes:

 

  1. Revisar las dependencias que se usan en los proyectos y eliminar las que no sean necesarias o estén obsoletas.

  2. Comprobar la procedencia, la reputación y la actividad de las dependencias que se usan, y evitar las que provengan de fuentes desconocidas o poco fiables.

  3. Actualizar las dependencias a las últimas versiones disponibles, y estar atentos a las posibles vulnerabilidades o parches que se publiquen.

  4. Usar herramientas de análisis estático o dinámico para detectar posibles anomalías o comportamientos maliciosos en las dependencias.

  5. Usar herramientas de gestión de dependencias que permitan verificar la integridad, la autenticidad y la procedencia de las mismas.

  6. Usar herramientas de protección de aplicaciones que impidan la ejecución de código malicioso en las mismas, como Defender for Cloud.

 

Conoce más sobre:  Defender for Cloud: Seguridad de Desarrollo

 

Conclusión

 

MavenGate es un nuevo método de ataque a la cadena de suministro de software que amenaza a las aplicaciones de Java y Android que usan bibliotecas abandonadas en repositorios públicos de dependencias. El ataque permite a los hackers tomar el control de las bibliotecas y de las aplicaciones que las usan, e inyectar código malicioso en ellas. Para prevenir y mitigar este tipo de ataques, los desarrolladores deben revisar, actualizar y proteger las dependencias que usan en sus proyectos, y usar herramientas que les ayuden a verificar y asegurar sus aplicaciones.