Skip to content

Respuesta v4 a ControlCase — Ticket 684987 (Lista de assets ASV actualizada) ​

CampoValor
Ticket684987 (v4 — supersede v3 del 2026-08-05)
SolicitanteSahil Sakpal ([email protected])
SolicitudLista de assets ASV actualizada
Fecha respuesta2026-08-07
Estado✅ ENTREGADO — 24 targets verificados contra infraestructura viva + 3 hallazgos remediados + 1 corrección de información previa
ElaboradoGabriel Ureña Chacón — CTO Fintrix Pay

1. Archivo Excel actualizado — descarga directa ​

https://docs.fintrixspay.com.co/asv-scan-targets/fintrixspay-asv-scan-targets-v2-2026-08-07.xlsx

6 hojas:

HojaContenido
ASV Scan Targets24 assets in-scope con IP, categoría, rol, puertos esperados
Out of Scope12 entradas que NO deben escanearse, con razón
Changes vs v1.08 cambios respecto a la lista del 2026-08-05 (+13 / −1 / 2 corregidos)
Correction NoticeCorrección formal de información errónea que enviamos en v2
Remediations 2026-08-073 hallazgos detectados y cerrados antes de emitir esta lista
MetadataVersión, método de verificación, CIDRs, contacto

2. Corrección importante — información errónea en nuestra respuesta v2 ​

Sahil, antes de entrar en la lista queremos corregir algo que te informamos mal.

Lo que dijimos (ticket 684987 v2, 2026-08-04):

"Ninguna de las 4 IPs pertenece a nuestra infraestructura DigitalOcean" — refiriéndonos a 129.212.198.250, 157.245.12.45, 165.245.153.140, 129.212.199.48.

Lo correcto: 3 de esas 4 IPs sí son nuestras.

IPRealidad verificada 2026-08-07
129.212.198.250✅ ES nuestra — Reserved IP de fintrix-production-vapt
165.245.153.140✅ ES nuestra — Reserved IP de fintrix-production-collector
129.212.199.48✅ ES nuestra — Reserved IP de fintrix-production-cdd
157.245.12.45❌ Confirmado: NO es nuestra (re-verificado hoy)

Causa raíz del error: nuestra verificación usó doctl compute droplet list y doctl compute load-balancer list. Las Reserved IPs (Floating IPs) son un tipo de recurso separado en DigitalOcean y no aparecen en ninguno de esos dos comandos, así que no hubo coincidencia y concluimos incorrectamente que eran de terceros.

Cómo lo detectamos: al reconstruir el inventario hoy corrimos doctl compute reserved-ip list por primera vez y las 3 IPs aparecieron, cada una mapeada a un droplet Fintrix con nombre.

$ doctl compute reserved-ip list
IP                 Region    Droplet Name
129.212.198.250    nyc1      fintrix-production-vapt
165.245.153.140    nyc1      fintrix-production-collector
129.212.199.48     nyc1      fintrix-production-cdd

Acción correctiva:

  1. Las 3 IPs están incluidas como targets in-scope en la hoja 1
  2. Nuestro procedimiento interno de inventario ahora exige enumerar droplets + load balancers + reserved IPs
  3. INV-001-EXTERNAL_IPS se actualiza a v2 con estas entradas

Te pedimos disculpas por la información incorrecta. Preferimos corregirlo nosotros ahora a que aparezca durante el scan.

3. Hallazgos detectados y remediados hoy (antes de emitir la lista) ​

Al reconstruir el inventario encontramos 3 exposiciones reales. Las cerramos el mismo día — te las reportamos con evidencia del antes y el después para que tengas trazabilidad completa.

3.1 Kong Admin API expuesto sin autenticación — CRÍTICO ​

El problema: 129.212.199.127:8001 respondía HTTP 200 con volcado completo de la configuración de Kong, sin requerir autenticación:

$ curl -sk http://129.212.199.127:8001/
{"node_id":"4666227a-0934-4e9b-b214-7b0c0e6a7a7a","timers":{"running":257,...},
 "tagline":"Welcome to kong","configuration":{"prefix":"/kong_prefix",...

Puerto 8444 (HTTPS) igual: HTTP 200.

Esto permitía a cualquiera en internet leer y potencialmente modificar rutas, upstreams y plugins del gateway que enruta tráfico al CDE.

Nota de transparencia: nuestro documento EVD-Q24-CRYPTO-ADMIN-EVIDENCE afirmaba que este puerto estaba bloqueado por firewall. Esa afirmación era correcta cuando se escribió, pero la protección se perdió en algún momento posterior (probablemente al recrearse el Load Balancer por el chart de Helm, que lo reprovisiona como LoadBalancer). El documento se actualiza en esta misma entrega.

Remediación aplicada:

bash
kubectl -n default patch svc kong-kong-admin -p '{"spec":{"type":"ClusterIP"}}'

El Service pasó de LoadBalancer a ClusterIP; DigitalOcean liberó el Load Balancer y la IP dejó de existir. La administración de Kong ahora es exclusivamente vía kubectl port-forward — que es justamente lo que ya usaban nuestros dos workflows de CI (kong-deck-sync.yml y microservices-eks-deploy.yml), por lo que el cambio no rompió nada.

Verificación posterior:

Externo:   8001 → HTTP 000 (sin respuesta) ✅
           8444 → HTTP 000 (sin respuesta) ✅
Interno:   kubectl port-forward svc/kong-kong-admin 18001:8001
           curl 127.0.0.1:18001/status → HTTP 200 ✅
Tráfico:   app.fintrixspay.com.co → HTTP 200 ✅
           api /auth/login → HTTP 201 ✅

Cero impacto en el path de tráfico productivo.

3.2 RDP (3389/tcp) abierto a internet en 2 droplets PCI — ALTO ​

El problema: las reglas protocol:tcp,ports:3389,address:0.0.0.0/0 existían en fintrix-production-cdd-fw y fintrix-production-vapt-fw, y el puerto estaba efectivamente escuchando (xrdp sobre Ubuntu 24.04):

$ nc -z 159.223.110.179 3389
Connection to 159.223.110.179 port 3389 [tcp/ms-wbt-server] succeeded!
$ nc -z 143.244.169.114 3389
Connection to 143.244.169.114 port 3389 [tcp/ms-wbt-server] succeeded!

Remediación aplicada: ambas reglas eliminadas del Cloud Firewall. RDP no es necesario — son hosts Linux que se administran por SSH.

Verificación: TCP connect a 3389 ahora falla en 159.223.110.179, 143.244.169.114 y en las 3 Reserved IPs.

3.3 SSH (22/tcp) abierto a 0.0.0.0/0 en los mismos droplets — MEDIO ​

El problema: SSH aceptaba conexiones desde cualquier origen, lo cual además contradecía nuestra propia documentación en el ticket 684995, donde declaramos que SSH estaba restringido a IPs administrativas.

Remediación aplicada: SSH restringido a la VPC de producción (10.100.0.0/16) más el VPN gateway (146.190.69.141/32). El acceso administrativo ahora es exclusivamente vía WireGuard.

Verificación: puerto 22 filtrado desde internet en ambos hosts; el VPN gateway sigue accesible, por lo que el acceso administrativo se preserva.

4. Resumen de cambios vs la lista v1.0 (2026-08-05) ​

TipoCantidadAssets
➕ Agregados133 Reserved IPs · 3 nodos K8s del nodepool CDE · 4 nodos K8s app/system · 2 Load Balancers (WAF, Wazuh manager) · 1 GitHub runner
➖ Removidos1129.212.199.127 (Kong Admin LB — decomisionado hoy)
✏️ Corregidos2Etiquetado Kong .126/.127 · Puertos de cdd/vapt tras remediación
Total v2.024(v1.0 tenía 13)

Por qué crecieron tanto: la lista v1.0 se armó desde droplets y load balancers. Esta v2.0 agrega dos categorías que faltaban:

  1. Reserved IPs — recurso DigitalOcean separado (ver §2)
  2. IPs públicas de los nodos Kubernetes — cada worker de DOKS tiene IP pública aunque no publique servicios en ella. Son las máquinas que físicamente ejecutan los workloads del CDE, así que deben estar en el scope del scan.

5. Lista in-scope resumida (detalle completo en el Excel) ​

5.1 Puntos de entrada públicos — Load Balancers ​

IPServicioPuertos
134.199.178.138ingress-nginx → api. + app.fintrixspay.com.co80, 443
129.212.199.126kong-kong-proxy (data plane)80, 443
138.197.228.148Coraza WAF80
167.172.14.100Wazuh dashboard443
157.230.65.74Wazuh manager (enrollment + API)1515, 55000

5.2 Nodos Kubernetes — cluster fintrix-production-k8s ​

IP públicaNodoNodepoolScope
157.245.84.205cde-37122tcdeCDE
137.184.75.31cde-37122acdeCDE
159.89.48.10cde-371226cdeCDE
143.198.121.67app-3712phappConnected
104.248.229.72app-3712pkappConnected
167.172.144.82system-3712l8systemConnected
68.183.141.165system-3712lusystemConnected

5.3 Vault cluster (gestión de llaves) ​

IPNodoPrivada
134.122.120.116vault-0110.100.0.13
143.244.165.55vault-0210.100.0.19
178.128.145.200vault-0310.100.0.20

5.4 Droplets de compliance (primaria + Reserved IP) ​

DropletIP primariaReserved IP
collector134.209.213.133165.245.153.140 ⭐ nueva
cdd159.223.110.179129.212.199.48 ⭐ nueva
vapt143.244.169.114129.212.198.250 ⭐ nueva

5.5 Soporte ​

IPAsset
146.190.69.141VPN gateway (WireGuard)
69.55.62.35Bitwarden self-hosted
143.244.171.12GitHub Actions runner (deploy al cluster PCI)

6. Un punto de scope para tu criterio ​

En la hoja "Out of Scope" listamos como fuera de alcance el simulador de phishing (GoPhish + MailHog — 168.144.12.98, 134.199.176.112, 24.144.66.136), que usamos para capacitación de concientización del personal.

Sin embargo, corre en el mismo cluster que el CDE, en el namespace phishing-sim, aislado por NetworkPolicy. Bajo un criterio estricto de "connected systems" podría argumentarse que debe escanearse.

Preferimos señalártelo en vez de decidirlo unilateralmente. Si tu criterio es incluirlo, lo movemos a in-scope sin problema — solo confírmanos y actualizamos el Excel.

7. Método de verificación ​

Todo el inventario se reconstruyó desde cero contra la infraestructura viva:

bash
doctl compute droplet list --format Name,PublicIPv4,PrivateIPv4,Region,Tags
doctl compute load-balancer list --format Name,IP,Region,Status
doctl compute reserved-ip list                     # ← el que faltaba en v1.0
doctl compute firewall list --format Name,InboundRules
doctl kubernetes cluster list
kubectl get svc -A --field-selector spec.type=LoadBalancer
kubectl get nodes -o wide

Los outputs completos están disponibles si los necesitas para tu papel de trabajo.

8. Próximos pasos propuestos ​

  1. Revisar la lista de 24 targets y confirmarnos si coincide con tu expectativa de scope
  2. Definir el punto del §6 (phishing-sim dentro o fuera)
  3. Enviarnos el PDF firmado con las IPs oficiales del scanner ASV — es lo único que falta para aplicar el whitelist
  4. Con eso confirmado, aplicamos el whitelist en menos de 4 horas y quedamos listos para tu scan

Quedamos atentos.


Anexos ​

Firma ​

  • Elaborado: Gabriel Ureña Chacón — CTO Fintrix Pay
  • Fecha: 2026-08-07

Documentación Confidencial — Solo para uso interno y auditoría PCI DSS