Saltar al contenido

Temas

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.

IntermedioEn progreso 4 min de lectura1 oct 2026#reconocimiento#pivote#jupyter#mlflow#defensa#mitre-atlas#shadowray

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:

  1. Un notebook Jupyter (en Azure ML) llega a ser accesible y contiene, en una celda, las credenciales en claro de un servidor MLflow.
  2. Con ellas se entra al MLflow Tracking Server: experimentos, métricas, parámetros.
  3. Su registro de modelos lista cada versión con la URI del artefacto.
  4. 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.

Cadena de pivotes en infraestructura de IA
RED PLANA · CONFIANZA IMPLÍCITAAtacanteJupyter:8888MLflow:5000RegistroversionesBucket S3pesos .ptsin tokencred. en una celdaURI del artefactomodelos exfiltradosauth + proxy: cadena cortadaGET /apicred.modelss3://

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

arranque inseguro
jupyter notebook --ip=0.0.0.0 --no-browser \
--NotebookApp.token='' --NotebookApp.password=''
arranque razonable
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).

  1. Marca, en cada flecha, qué credencial o confianza implícita permite el salto.
  2. Elige el eslabón más barato de cortar y di qué control aplicarías.
  3. 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.

Referencias#

Notas relacionadas

ESC
↑↓ para navegar↵ para abriresc para cerrar