Jenkins: de CI/CD a laboratorio criptográfico clandestino

Jenkins: de CI/CD a laboratorio criptográfico clandestino

¿Cómo se convierten los servidores vulnerables en máquinas de minería invisibles?

image

Un estudio reciente de Trend Micro reveló que los atacantes pueden usar la consola de scripts de Jenkins para ejecutar scripts maliciosos destinados a la minería de criptomonedas. Esto es posible cuando la autenticación está mal configurada, lo que abre el acceso a la consola y permite la ejecución remota de código (RCE).

Jenkins, siendo una solución de código abierto para la integración y entrega continuas (CI/CD), ofrece amplias oportunidades para la automatización del desarrollo de software. Sin embargo, las configuraciones incorrectas de los servidores y las versiones obsoletas de Jenkins pueden convertirse en objetivo de los hackers que buscan ejecutar criptomineros y otros programas maliciosos.

La consola de scripts en Jenkins permite a los administradores y usuarios autorizados ejecutar scripts en lenguaje Groovy con privilegios de sistema. En caso de una configuración incorrecta de la autenticación, los atacantes pueden obtener acceso a esta consola y usarla para ejecutar scripts maliciosos.

Los atacantes a menudo utilizan herramientas como Shodan para buscar servidores Jenkins vulnerables disponibles en Internet. El estudio mostró que muchos de estos servidores no están protegidos adecuadamente y pueden ser utilizados en ataques reales. Aunque no todos los servidores Jenkins públicamente accesibles son vulnerables, bien pueden convertirse en puntos de entrada para los hackers.

En sus ataques, los atacantes inyectan en el sistema un script codificado en Base64 que se ejecuta a través de la consola de scripts de Jenkins. Este script verifica si se está ejecutando en un entorno BusyBox y, si es así, termina. Luego, el script busca directorios con permisos de escritura para descargar y ejecutar el criptominero.

El script incluye una función para verificar los recursos del sistema disponibles para una minería eficiente. Identifica y termina procesos que consumen más del 90% de los recursos de la CPU, lo que permite liberar recursos para el funcionamiento del minero. En caso de ausencia de directorios adecuados, el script utiliza el directorio /tmp y crea un subdirectorio con permisos máximos para realizar operaciones.

Para mantener el funcionamiento del minero, los atacantes utilizan tareas cron y la utilidad systemd-run. Las tareas cron aseguran la ejecución regular del minero, mientras que systemd-run se asegura de que el minero se inicie cada hora. Estos métodos garantizan que el minero funcione continuamente, a pesar de posibles reinicios del sistema.

Las tareas cron utilizan la utilidad flock para bloquear un archivo, asegurando que solo una copia del minero esté funcionando en cualquier momento. El script también elimina todas las entradas cron duplicadas para evitar múltiples inicios del minero.

Para proteger sus instancias de Jenkins contra tales ataques, se recomienda seguir las siguientes mejores prácticas:

  • Utilizar la función de aprobación de scripts proporcionada por Jenkins. Esto limitará la ejecución de scripts desconocidos o potencialmente maliciosos.
  • Configurar políticas correctas de autenticación y autorización para el acceso a la consola web. Se deben seguir las recomendaciones de Jenkins sobre gestión de accesos.
  • Activar la función de auditoría de registros para rastrear acciones en el servidor y detectar actividades sospechosas.
  • Limitar el acceso a los servidores Jenkins desde Internet para prevenir accesos no autorizados.

Jenkins proporciona poderosas capacidades para la automatización del desarrollo de software, pero estas mismas capacidades pueden ser utilizadas por atacantes si el sistema está mal configurado. Las organizaciones deben monitorear cuidadosamente las configuraciones de seguridad, actualizar regularmente el software y realizar auditorías para proteger sus servidores Jenkins.

¿Tu Wi-Fi doméstico es una fortaleza o una casa de cartón?

Descubre cómo construir una muralla impenetrable