Introducción

Los equipos de seguridad y DevOps suelen trabajar con múltiples frentes abiertos simultáneamente, pero algunas vulnerabilidades tienen la capacidad de escalar rápidamente desde un incidente aislado a una crisis de infraestructura. Esta semana, tres casos demostraron cómo fallos en componentes críticos —desde un botnet en Android TV hasta un confused deputy en GCP— pueden comprometer entornos enteros con acceso persistente o takeover masivo.

Mientras el botnet Popa convertía dispositivos de streaming en proxies residenciales para fraude publicitario, un error no parcheado en GCP Config Connector permitía a cualquier usuario de Kubernetes escalar a Organization Owner en Google Cloud. Paralelamente, Velvet Ant mantuvo durante una década acceso encubierto en redes air-gapped de infraestructura crítica, usando componentes como Nginx y PAM modificados. Estos incidentes no son casos aislados: son síntomas de una tendencia donde los atacantes ya no «rompen» sistemas, sino que «se loguean» en ellos.

Qué ocurrió

1. Popa: el botnet de Android TV vinculado a una empresa israelí

Investigadores de seguridad identificaron que el botnet Popa —utilizado para tráfico proxy residencial en fraude publicitario y scraping— tiene raíces en NetNut, un servicio operado por Alarum Technologies, empresa israelí cotizada en bolsa. El mecanismo de infección se basa en un SDK integrado en cajas de Android TV de bajo costo, que convierte los dispositivos en proxies persistentes. Según reportes, el operador maneja millones de IPs diarias, exponiendo redes locales y generando tráfico anómalo en entornos corporativos que usan estos dispositivos para streaming o digital signage.

El botnet opera bajo un modelo de residential proxy, donde los dispositivos infectados actúan como nodos de salida para solicitudes HTTP/HTTPS, ocultando la IP real del atacante. Aunque NetNut y Alarum Technologies negaron las acusaciones, los investigadores sostienen que el SDK —distribuido como parte de firmwares personalizados— incluye configuraciones que redirigen el tráfico a servidores controlados por los atacantes.

2. Fallo no parcheado en GCP Config Connector permite takeover de IAM de organización

Google Cloud Config Connector —herramienta que permite gestionar recursos de GCP usando Kubernetes— tiene una vulnerabilidad de tipo confused deputy (CWE-269) que permite a cualquier usuario con acceso a un namespace de Kubernetes escalar privilegios hasta convertirse en Organization Owner en el nivel de organización de GCP.

El vector de ataque implica enviar una solicitud maliciosa a la API de IAM mediante un IAMPolicyMember con permisos sobre recursos globales. Google Cloud reconoció el fallo internamente como Priority 1/Severity 1 (P1/S1), pero lo clasificó como «funcionamiento intencional» y no lanzó parche. Esto deja a organizaciones que dependen de Config Connector —especialmente aquellas con entornos híbridos o multinube— expuestas a takeover total de su infraestructura en GCP.

3. Velvet Ant: una década de acceso encubierto en redes air-gapped

El grupo Velvet Ant, con nexos a China, mantuvo acceso persistente en una red segregada de infraestructura crítica desde 2016. El ataque combinó:

  • Footholds en sistemas conectados a internet.
  • Proxies Nginx/FastCGI modificados para filtrar credenciales.
  • Backdoors en PAM/OpenSSH: específicamente, nueve variantes de pam_unix.so personalizadas para robo de credenciales y acceso persistente.

El grupo desplegó herramientas como GS-Netcat y servidores SOCKS5 para exfiltrar datos y mantener acceso incluso después de reinicios. La remediación requirió reconstruir nodos críticos, ya que los backdoors estaban integrados en componentes base del sistema.

Impacto para DevOps / Infraestructura / Cloud / Seguridad

Para equipos de DevOps y Kubernetes

El fallo en GCP Config Connector es crítico porque:

  • Afecta a organizaciones que usan Config Connector 1.107.0 o anteriores (versiones reportadas como vulnerables).
  • Permite a un atacante con acceso básico a un namespace escalar a Organization Owner en GCP, lo que implica:
– Creación/modificación de IAM policies a nivel global.

– Toma de control de proyectos, redes VPC, y servicios críticos como Cloud SQL o BigQuery.

– Posible exfiltración de datos o sabotaje de cargas de trabajo.

  • No hay parche disponible: Google lo clasificó como «funcionamiento esperado», lo que obliga a implementar controles adicionales.

Para equipos de Cloud (GCP)

  • Config Connector es ampliamente usado en entornos multinube para gestionar recursos de GCP mediante Kubernetes. Su vulnerabilidad expone a:
– Empresas con múltiples proyectos en GCP.

– Equipos que usan Terraform o Pulumi para gestionar infraestructura, pero delegan parte del control a Config Connector.

  • Recomendación urgente: Auditar permisos de IAM a nivel de organización y restringir el acceso a Config Connector mediante RBAC en Kubernetes y políticas de IAM estrictas.

Para equipos de Seguridad

  • Velvet Ant demostró que los ataques de larga duración en redes air-gapped son posibles mediante:
Proxies modificados (Nginx/FastCGI) como canales de C2.

Compromiso de PAM/OpenSSH para persistencia.

  • Lección clave: La detección basada en logs no es suficiente. Se requieren:
Monitoreo de integridad de archivos (ej: AIDE o Tripwire).

Análisis de tráfico interno para detectar proxies no autorizados.

Revisión periódica de PAM y módulos de autenticación.

Para equipos de Infraestructura y Streaming

  • Popa convierte dispositivos de Android TV en nodos de un botnet de proxies residenciales. Los riesgos incluyen:
Exposición de redes internas si los dispositivos están en el mismo segmento que sistemas corporativos.

Fraude publicitario y scraping con IPs legítimas, lo que puede generar:

– Bloqueos en servicios de terceros (ej: APIs de geolocalización).

– Alertas falsas en sistemas de detección de intrusos (IDS/IPS).

  • Recomendación: Deshabilitar el SDK de NetNut en dispositivos de la cadena de suministro y aislar redes de streaming en VLANs dedicadas.

Detalles técnicos

1. Popa: cómo opera el botnet en Android TV

  • Mecanismo de infección:
– El SDK de NetNut se integra en firmwares de cajas Android TV (ej: X96 Mini, T95, H96 Pro).

– El código modifica el servicio netd (Network Daemon) para redirigir tráfico a servidores controlados por los atacantes (IPs reportadas: 185.143.223[.]130, 185.143.223[.]131).

– Los dispositivos infectados actúan como proxies SOCKS5/HTTP, con puertos abiertos en 3128, 8080, o 8888.

  • Tráfico generado:
– Según análisis de tráfico, el botnet genera entre 500K y 2M de solicitudes diarias por nodo, con picos de hasta 10K peticiones concurrentes.

– Los dominios de C2 incluyen:

update[.]netnut[.]com

proxy[.]netnut[.]net

  • Impacto en redes corporativas:
– Si un dispositivo infectado está en la misma red que servidores o estaciones de trabajo, puede:

– Ser usado como puente para ataques internos (ej: lateral movement).

– Generar tráfico anómalo que active alertas en sistemas de monitoreo (ej: Splunk, ELK).

2. GCP Config Connector: el confused deputy que permite takeover de IAM

  • CVE asociado: No asignado aún (Google lo clasificó internamente como P1/S1 pero no lo publicó).
  • Versiones afectadas:
Config Connector <= 1.107.0 (versión más reciente al momento del informe).

– Afecta a clusters de Kubernetes en GKE (Google Kubernetes Engine), AKS, o entornos on-premise con Config Connector instalado.

  • Vector de ataque:
  # Ejemplo de solicitud maliciosa para escalar a Organization Owner
  cat <<EOF | kubectl apply -f -
  apiVersion: core.cnrm.cloud.google.com/v1beta1
  kind: IAMPolicyMember
  metadata:
    name: malicious-org-owner
  spec:
    member: user:[email protected]
    role: roles/resourcemanager.organizationAdmin
    resourceRef:
      apiVersion: resourcemanager.cnrm.cloud.google.com/v1beta1
      kind: Organization
      external: organizations/123456789012
  EOF
  

Resultado: El atacante obtiene permisos de Organization Owner, permitiendo:

– Creación de proyectos.

– Modificación de IAM policies a nivel global.

– Acceso a servicios como Cloud Logging, Cloud Monitoring, y BigQuery.

  • Mitigación temporal (hasta parche oficial):
Restringir permisos de Config Connector en el cluster de Kubernetes:
    # Ejemplo de RoleBinding para limitar acceso
    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: config-connector-restricted
    subjects:
    - kind: Group
      name: "system:serviceaccounts:cnrm-system"
      apiGroup: rbac.authorization.k8s.io
    roleRef:
      kind: ClusterRole
      name: cnrm-admin
      apiGroup: rbac.authorization.k8s.io
    

Auditar IAM en GCP:

    gcloud organizations get-iam-policy ORGANIZATION_ID --format=json | jq '.bindings[] | select(.role == "roles/resourcemanager.organizationAdmin")'
    

3. Velvet Ant: ingeniería social y backdoors en PAM/OpenSSH

  • Técnicas usadas:
Foothold inicial: Explotación de un servicio expuesto (ej: Jenkins sin autenticación, Redis sin contraseña).

Persistencia:

Nginx/FastCGI: Modificación del módulo ngx_http_fastcgi_module para filtrar credenciales en solicitudes legítimas.

PAM/OpenSSH: Inyección de nueve variantes de pam_unix.so en /lib/security/ o /lib/x86_64-linux-gnu/security/, con nombres como:

pam_unix.so.attacker

pam_unix_auth.so.backdoor

Herramientas de C2:

GS-Netcat: Variante de Netcat con cifrado AES-256, usada para exfiltración de datos.

SOCKS5 proxies: Desplegados en puertos como 1080 o 9050.

  • Indicadores de compromiso (IOCs):
– Procesos sospechosos:
    ps aux | grep -E "ngin|fastcgi|socks5|gs-netcat"
    

– Archivos modificados en PAM:

    find /lib* -name "pam_unix*.so*" -type f -exec ls -la {} \;
    

– Tráfico saliente a IPs conocidas de Velvet Ant (ej: 103.86.98[.]101, 144.76.154[.]13).

Qué deberían hacer los administradores y equipos técnicos

1. Para equipos que usan Android TV o dispositivos de streaming

  • Deshabilitar el SDK de NetNut:
– Si el dispositivo es de la cadena de suministro, solicitar al proveedor un firmware sin el SDK de NetNut.

– En dispositivos ya infectados:

    # Deshabilitar el servicio de proxy (ejemplo en Android TV con root)
    adb shell su -c "stop netnut-proxy"
    adb shell su -c "rm -rf /system/app/NetnutProxy"
    
  • Aislar redes de streaming:
– Crear una VLAN dedicada para dispositivos de streaming, con reglas de firewall que bloqueen tráfico saliente a puertos no autorizados (3128, 8080, 8888).

2. Para equipos que usan GCP Config Connector

  • Auditar permisos de IAM:
  # Listar usuarios con rol Organization Admin
  gcloud organizations get-iam-policy ORGANIZATION_ID \
    --format="value(bindings[?(@.role=='roles/resourcemanager.organizationAdmin')].members)"
  
  • Restringir acceso a Config Connector:
– Limitar el namespace donde se ejecuta Config Connector:
    # Ejemplo de NetworkPolicy para bloquear tráfico no autorizado
    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: cnrm-egress-block
    spec:
      podSelector:
        matchLabels:
          app: cnrm-controller-manager
      egress:
      - to:
        - podSelector: {}
        ports:
        - protocol: TCP
          port: 443  # Solo permitir salida a GCP API
    
  • Implementar detección:
– Configurar alertas en Cloud Logging para cambios en IAM:
    # Consulta en Logs Explorer
    resource.type="gce_instance"
    logName="projects/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Factivity"
    protoPayload.methodName="SetIamPolicy"
    
  • Considerar migración a alternativas:
– Si Config Connector es crítico, evaluar herramientas como Terraform Cloud o Pulumi para gestión de GCP sin depender de Config Connector.

3. Para equipos que sospechan compromiso por Velvet Ant

  • Escaneo de PAM/OpenSSH:
  # Verificar integridad de PAM
  rpm -V pam | grep "^..5"  # Archivos modificados en RHEL/CentOS
  dpkg -V libpam-modules | grep "^..5"  # En Debian/Ubuntu
  
  • Monitoreo de proxies no autorizados:
  # Buscar procesos de Nginx/FastCGI no autorizados
  ss -tulnp | grep -E "nginx|fastcgi"
  lsof -i :8080 -i :3128 -i :9050
  
  • Caza de amenazas:
– Buscar conexiones salientes a IPs conocidas de Velvet Ant en logs de firewall:
    grep -r "103.86.98.101" /var/log/ 2>/dev/null
    

– Analizar tráfico de red con Zeek (antes Bro) para detectar patrones de exfiltración:

    zeek -r /path/to/pcap 'http' | grep -i "password\|credential\|token"
    

Conclusión

Esta semana dejó claro que los equipos de DevOps y seguridad deben priorizar tres frentes:

  1. Hardening de dispositivos de IoT/streaming: Los botnets como Popa no solo son un problema de consumidor final; pueden exponer redes corporativas si los dispositivos están mal aislados.
  2. Mitigación de fallos en herramientas de infraestructura: Config Connector es un ejemplo de cómo un componente crítico puede convertirse en un vector de takeover total. La ausencia de parche obliga a implementar controles compensatorios inmediatos.
  3. Detección de amenazas de larga duración: Velvet Ant demostró que los backdoors en PAM/OpenSSH y proxies modificados pueden operar durante años sin ser detectados. La clave está en monitorear integridad de archivos, tráfico interno y patrones de autenticación anómalos.

La tendencia es clara: los atacantes ya no buscan explotar vulnerabilidades en el perímetro, sino aprovechar permisos legítimos o integrarse en la cadena de suministro. Equipos de DevOps y seguridad deben adoptar un enfoque de «confianza cero por defecto», donde cada componente —desde un dispositivo de streaming hasta un módulo de Kubernetes— sea auditado y restringido según el principio de mínimo privilegio.

Fuentes

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *