Cadena de pivotes y defensa del reconocimiento
Cómo un notebook abierto lleva a MLflow, al registro y al bucket de modelos, y qué controles (inventario, autenticación, segmentación, secretos, detección) cortan la cadena.
Un hallazgo de reconocimiento rara vez se queda solo. En infraestructura de IA los componentes se confían entre sí: el notebook conoce el MLflow, el MLflow conoce el registro, el registro apunta al bucket. Cada servicio asume que, si alguien llegó hasta él, es de los suyos. Así, comprometer uno compromete la cadena.
Una cadena real#
IBM X-Force documentó en su investigación sobre infraestructura de entrenamiento de ML una cadena de este tipo, que sirve de modelo:
- Un notebook Jupyter (en Azure ML) llega a ser accesible y contiene, en una celda, las credenciales en claro de un servidor MLflow.
- Con ellas se entra al MLflow Tracking Server: experimentos, métricas, parámetros.
- Su registro de modelos lista cada versión con la URI del artefacto.
- Esas URIs apuntan a buckets S3 con los archivos del modelo.
En ese caso el acceso inicial fue un correo de phishing a una persona de ciencia de datos, y el atacante usó MLOKit, una herramienta de código abierto de IBM X-Force Red pensada para reconocer y auditar plataformas MLflow. Automatizó la secuencia de inventario de modelos y metadatos de versiones; todo viajó por llamadas REST autenticadas que el servidor trató como normales. IBM ha ampliado la herramienta a SageMaker y otras plataformas, incluyendo capacidades que muestran qué más es posible con ese acceso (disparar código desde notebooks o sobrescribir artefactos), lo que justifica tratar el registro como un activo de escritura crítico, no solo de lectura.
Paso 1 de 5Notebook expuesto
El reconocimiento encuentra un Jupyter en el 8888 sin token. Es el primer eslabón: una terminal para cualquiera que llegue al puerto.
Fíjate en que ningún paso fue una «vulnerabilidad» de software: el fallo fue que cada servicio era accesible y las credenciales para encadenarlos estaban en una celda. Es movimiento lateral por configuración.
Qué gana el atacante al final#
- Robo de modelos: los pesos son propiedad intelectual (y coste de entrenamiento).
- Sustitución de un modelo en producción si el registro o el bucket permiten escritura: un modelo con puerta trasera (cadena de suministro).
- Exfiltración de datos de entrenamiento y de evaluación.
- Cómputo: GPUs para minar criptomonedas (los mineros de Monero fueron habituales en Jupyter y Ray expuestos).
Defensa en capas#
Vulnerable
Seguro
jupyter notebook --ip=0.0.0.0 --no-browser \ --NotebookApp.token='' --NotebookApp.password=''jupyter lab --ip=127.0.0.1 --no-browser# acceso por proxy con SSO / túnel SSH; token activo| Capa | Control |
|---|---|
| Inventario | Lista viva de servicios de IA: quién los lanzó, puerto, dueño. Busca tus rangos en Shodan/Censys. |
| Exposición | Escucha en 127.0.0.1 o red privada; nada de 0.0.0.0 por comodidad. Ingress con autenticación (SSO/mTLS). |
| Autenticación | Activa la del producto (MLflow auth, token de Jupyter, API keys de Qdrant, auth de Triton/gateway). No confíes en «está en la VPC». |
| Segmentación | Notebooks, MLOps, registro y almacenamiento en segmentos distintos con Security Groups mínimos. |
| Secretos | Nada de credenciales en celdas: gestor de secretos y roles de corta duración (mínimo privilegio). |
| Almacenamiento | Buckets de artefactos privados, con escritura restringida y versionado; firma y verificación de modelos. |
| Detección | Alertas por llamadas inesperadas a /api/, listados masivos, descargas de artefactos fuera de horario; honeytokens en notebooks. |
Dónde encaja en los marcos#
En MITRE ATLAS el reconocimiento es una táctica propia (Reconnaissance, antes de Resource Development y Initial Access), con técnicas como la búsqueda de repositorios y de infraestructura de ML expuesta. En OWASP Agentic / MCP aparece como la exposición de servidores MCP y de herramientas sin autenticación. Piénsalo como la capa que habilita al resto: es el paso previo que coloca al atacante en posición de lanzar las amenazas de las secciones de Amenazas y Privacidad.
Tu turno#
Tu turno
Corta la cadena
Dibuja la cadena jupyter → MLflow → registro → bucket de tu propio entorno (o de un ejemplo).
- Marca, en cada flecha, qué credencial o confianza implícita permite el salto.
- Elige el eslabón más barato de cortar y di qué control aplicarías.
- Añade un honeytoken en un notebook y define cómo te enteras si alguien lo usa.
Reto
¿Qué es un honeytoken y por qué ayuda?
▸Mostrar solución
Una credencial falsa (por ejemplo una clave de AWS sin permisos reales) colocada donde no debería mirar nadie legítimo. Si alguien la usa, el aviso es inmediato y sin falsos positivos: da la señal de que alguien está haciendo reconocimiento dentro.
En resumen#
- En infraestructura de IA, los componentes confían entre sí: un solo hallazgo se encadena hasta el bucket de modelos.
- Los saltos suelen ser configuración, no exploits: sin autenticación, secretos en celdas, permisos amplios.
- Al final: robo y sustitución de modelos, exfiltración de datos y cómputo gratis.
- Defensa: inventario, no exponer, autenticar, segmentar, secretos fuera de notebooks, buckets privados y detección.
- Haz tu propio reconocimiento antes que el atacante.