Un módulo malicioso en Go que se hace pasar por golang.org/x/crypto roba contraseñas y despliega un backdoor en Linux

Publicada 4 min de lectura 123 lecturas

En las últimas semanas la comunidad de seguridad ha dado la voz de alarma por una campaña que explota la confianza en la cadena de suministro del ecosistema Go. Investigadores han identificado un módulo malicioso alojado en GitHub que se hace pasar por la librería oficial golang.org/x/crypto y que introduce código para capturar contraseñas, abrir accesos persistentes por SSH y, finalmente, desplegar un backdoor sobre sistemas Linux.

El repositorio detectado, ubicado en github.com/xinfeisoft/crypto y todavía visible en pkg.go.dev, aprovecha la confusión entre nombres de espacio y la práctica habitual de tratar a GitHub como espejo de los subrepositorios de Go. Según el equipo de Socket, el actor malicioso explota precisamente esta ambigüedad para que la dependencia parezca legítima en los grafos de dependencias y pasar desapercibida en revisiones superficiales; puedes leer el análisis completo en el blog de Socket aquí.

Un módulo malicioso en Go que se hace pasar por golang.org/x/crypto roba contraseñas y despliega un backdoor en Linux
Imagen generada con IA.

Lo que hace el código malicioso es sencillo y particularmente peligroso: modifica el archivo equivalente a la implementación del terminal para la función que lee contraseñas en modo oculto. Cada vez que una aplicación invoca esa rutina para solicitar entradas sensibles, el módulo intercepta lo introducido por el usuario y lo envía a un servidor controlado por el atacante. Esa información no se queda en el repositorio: a continuación el módulo obtiene desde un recurso externo un script de shell que actúa como etapa inicial de intrusión.

Ese script descargado funciona como un stager típico: añade la clave SSH del atacante al fichero de autorizaciones del usuario (por ejemplo, /home/ubuntu/.ssh/authorized_keys), intenta relajar políticas de firewall para facilitar comunicaciones entrantes y descarga cargas adicionales disfrazadas con la extensión .mp5. Una de esas cargas parece ser un pequeño programa de asistencia que verifica la conectividad y trata de hablar con un servidor remoto en la dirección 154.84.63.184 a través del puerto TCP 443; su comportamiento encaja con el de un componente de reconocimiento o cargador que prepara el terreno para fases posteriores.

La segunda carga es especialmente preocupante: se trata de Rekoobe, un troyano para Linux conocido desde hace años. Hay registros públicos y análisis que documentan la presencia de Rekoobe desde al menos 2015, y publicaciones técnicas han detallado cómo este backdoor permite ejecutar comandos a distancia, descargar nuevos binarios, robar archivos y establecer shells inversos. Varios informes han relacionado sus variantes con grupos vinculados a operaciones de espionaje, incluidos actores con motivaciones estatales; puedes consultar investigaciones sobre Rekoobe en fuentes como Dr.Web, Intezer y análisis técnicos como el de TechEvo.

Este caso ilustra dos vectores peligrosos combinados: por un lado la suplantación de un módulo de alto valor —uno que reside en un punto crítico como la lectura de contraseñas en consola— y por otro el uso de hosting dinámico (raw.githubusercontent.com y recursos externos) como mecanismo de rotación para la infraestructura maliciosa. Según los investigadores, ese patrón es barato de implementar para los atacantes y con alto impacto, por lo que es probable que veamos imitaciones que apunten a otras bibliotecas responsables de manejar credenciales: auxiliares SSH, prompts de CLI para autenticación o conectores de bases de datos, entre otros.

Un módulo malicioso en Go que se hace pasar por golang.org/x/crypto roba contraseñas y despliega un backdoor en Linux
Imagen generada con IA.

La comunidad y los mantenedores del ecosistema Go han reaccionado bloqueando el paquete malicioso en los puntos de control conocidos, pero el incidente sirve como recordatorio: la mera presencia de un módulo en un índice público no garantiza su integridad. Las dependencias transitorias pueden abrir brechas críticas, y los equipos deben asumir que cualquier interfaz que toque secretos merece protección adicional.

Para desarrolladores y responsables de seguridad esto implica, entre otras cosas, validar y fijar versiones de dependencias, revisar con atención cambios en módulos de terceros que interactúan con credenciales, usar proxies y mecanismos de verificación de suma (go.sum) y vigilar alertas de seguridad sobre paquetes impersonados. También es importante auditar canales de suministro externo (scripts descargados por curl | sh, contenidos en raw.githubusercontent.com, etc.) y reducir la confianza en descargas sin firma ni comprobación.

En definitiva, el episodio es una llamada a reforzar prácticas de higiene en la cadena de suministro de software: cuando una librería toca el borde donde se tratan secretos, una pequeña modificación maliciosa puede convertirse rápidamente en una intrusión completa. Las publicaciones de los equipos de investigación y los repositorios que documentan estas campañas son recursos valiosos para entender la técnica y prepararse mejor; consulta el informe de Socket para detalles técnicos y ejemplos de cómo se llevó a cabo la campaña aquí, y los análisis sobre Rekoobe si quieres profundizar en las capacidades del backdoor en campo en los enlaces anteriores.

Cobertura

Relacionadas

Mas noticias del mismo tema.