Los desarrolladores de la distribución Alpine Linux han revelado información sobre intentos de hackeo en la plataforma de desarrollo colaborativo gitlab.alpinelinux.org, donde se trabajaba en el gestor de paquetes APK, herramientas de construcción, componentes de infraestructura y scripts de construcción de paquetes (aports). El ataque se llevó a cabo a través de la explotación de una vulnerabilidad en la plataforma GitLab, provocada por un desbordamiento de enteros en el motor de expresiones regulares del lenguaje Ruby. No se encontraron pruebas ni indicios de un hackeo exitoso, pero dado que no es posible descartar completamente la explotación exitosa de la vulnerabilidad, el contenedor de GitLab fue considerado potencialmente comprometido y su contenido fue completamente reconstruido desde cero, además de que se inició un procedimiento de cambio de contraseñas para los usuarios.
Los administradores de la infraestructura de Alpine Linux no encontraron la aparición de archivos externos, procesos sospechosos en ejecución, accesos inusuales a la API, cambios en configuraciones y archivos del sistema, así como picos de carga propios de la extracción masiva de datos. Durante el análisis de la integridad del repositorio aports, paquetes y archivos de lanzamientos, y su verificación con copias de servidores de construcción externos y sistemas de desarrolladores, no se detectaron cambios ocultos.
La falta de información sobre conexiones de red salientes, la eliminación de algunos registros durante la rotación (por ejemplo, los registros de cron) y la falta de detalle suficiente en los registros del servidor web (la aplicación exitosa de un exploit que no conduce a un fallo no se refleja en el registro) impiden descartar completamente la realización exitosa de un ataque.
En caso de un ataque exitoso, los delincuentes podrían haber accedido a la base de datos con datos de todos los usuarios de GitLab (hashes de contraseñas, correos electrónicos, IP etc.), variables de entorno y tokens de sistemas de integración continua, códigos de autenticación de dos factores, hashes de tokens de acceso personales, contenido de repositorios privados y discusiones confidenciales sobre problemas. Las claves para generar firmas digitales para lanzamientos y paquetes en el atacado servidor no se almacenaban.
Los primeros intentos de explotar la vulnerabilidad se registraron el 20 y 21 de octubre. El atacante registró una cuenta en GitLab y trató de enviar configuraciones modificadas del sistema de integración continua. En los registros se registraron 8 finalizaciones inesperadas de los procesos de GitLab, de las cuales 4 estaban relacionadas con la aplicación del exploit. Se observa que la primera fase del funcionamiento del exploit fue exitosa, pero la segunda fase terminó en un fallo.
En el momento del ataque, el contenedor usaba una versión vulnerable de GitLab 19.3.4, que fue actualizada el 22 de octubre a la versión GitLab 19.3.6. Sin embargo, los administradores de Alpine no tomaron en cuenta que la corrección solo se implementó en los paquetes de instalación oficiales de GitLab 19.3.6 y no en el código mismo de GitLab, ya que la vulnerabilidad residía en las herramientas de Ruby. El contenedor continuó utilizando el antiguo conjunto de herramientas de Ruby y la vulnerabilidad permaneció sin corregir.
Que el sistema siga siendo vulnerable solo se identificó el 26 de octubre. El análisis de los registros mostró que el 25 y 26 de octubre los atacantes renovaron sus intentos de ataque. El 27 de octubre, se restringió el acceso de usuarios externos a GitLab. El 28 de octubre, el contenido fue recompilado, todas las contraseñas fueron restablecidas (los usuarios deben establecer una nueva contraseña a través del procedimiento de recuperación de contraseña olvidada), y se reemplazaron las claves de acceso. El 29 de octubre, la versión actualizada servidor fue puesta en funcionamiento. El contenedor Docker alpinelinux/gitlab seguía siendo vulnerable hasta el 27 de octubre.
Fuente: opennet.ru
