
Una falla en el SDK de Google Cloud Vertex AI para Python permite a un atacante sin acceso al proyecto de la víctima secuestrar las cargas del modelo de aprendizaje automático de la víctima y ejecutar código dentro de la infraestructura de prestación de servicios de Google.
La Unidad 42 de Palo Alto Networks, que descubrió e informó el error a través del programa de recompensas por errores de Google, llama a la técnica «Pickle in the Middle» y dijo que no ha visto ningún exploit en la naturaleza. Google lo ha parcheado. Si está utilizando el SDK, actualice a la versión 1.148.0 o posterior.
Todo lo que los atacantes necesitaban era su proyecto de Google Cloud y el ID del proyecto de la víctima, que a menudo está disponible públicamente. Sin credenciales, sin phishing, sin trampolines hacia el objetivo.
El problema estaba en la forma en que el SDK elige un depósito temporal de Cloud Storage para cargar el modelo. Si el usuario no configura un depósito, el SDK genera un nombre predecible a partir del ID del proyecto y la región, como project-vertex-staging-region. Se confirmó que el balde existía, pero no se confirmó que la víctima fuera su propietario.
Los nombres de los depósitos son únicos a nivel mundial, por lo que un atacante podría crear el primer depósito esperado en su proyecto. El SDK de la víctima carga el archivo del modelo en el depósito del atacante. Luego, el atacante podría reemplazar el modelo cargado por uno malicioso.
Muchos modelos de Python ML se guardan con pickle o joblib, lo que le permite ejecutar código cuando se carga el archivo. Luego, el código del atacante se ejecutó dentro del contenedor de servicio cuando Vertex AI cargó el modelo intercambiado.
Los ataques dependían de la velocidad. La Unidad 42 midió el tiempo que le tomó a Vertex AI leer el archivo desde el momento en que la víctima lo cargó hasta aproximadamente 2,5 segundos. En una prueba de concepto, el atacante utilizó una función en la nube que se activó después de la carga y reemplazó el modelo en 1,4 segundos antes de que Vertex AI pudiera leerlo.
Luego, la carga útil roba un token de OAuth del servidor de metadatos del contenedor de servicio y lo envía al atacante. En el entorno de prueba de la Unidad 42, ese token no se limitó a implementaciones comprometidas. Puede acceder a otros artefactos del modelo dentro del mismo proyecto de inquilino administrado por Google. Esto incluye el modelo completo de TensorFlow con pesos entrenados, metadatos de BigQuery, listas de acceso, registros de inquilinos, nombre del clúster de GKE y ruta de la imagen del contenedor interno.

Este ataque sólo funcionó bajo ciertas condiciones. Esto significa que el depósito de preparación predeterminado de la víctima aún no existe en esa región y la víctima dejó el parámetro staging_bucket sin configurar. El primero es común a los nuevos proyectos en Vertex AI dentro de una región.
El segundo depende de que los desarrolladores no nombren sus propios depósitos, sino que dependan de los valores predeterminados del SDK.
La Unidad 42 informó esta falla el 5 de marzo de 2026 a través del Programa de recompensa por vulnerabilidad de Google. Probamos las versiones 1.139.0 y 1.140.0, las últimas versiones disponibles en ese momento, y descubrimos que ambas eran vulnerables.
Google lanzó una solución inicial para v1.144.0 el 31 de marzo, agregando un uuid4 aleatorio al nombre del depósito. La solución se completó en la versión 1.148.0 el 15 de abril y se agregó la validación de propiedad del depósito para bloquear la ocupación del depósito en Model.upload(). En el momento de la publicación, ni Unit 42 ni el boletín de seguridad Vertex AI de Google enumeran ningún CVE para este problema.
Actualice a 1.148.0 o posterior para que las comprobaciones de propiedad estén activas. Además, cuando cargues tu modelo, establece un staging_bucket explícito en la ubicación de Cloud Storage que controlas. La lógica defectuosa reside en el SDK del cliente, así que verifique la versión de google-cloud-aiplatform dondequiera que se esté ejecutando, incluidos sus cuadernos, trabajos de CI y canales de capacitación, no solo sus servicios de producción.
Esta es la segunda falla predecible en el nombre del depósito que surge en Vertex AI este año. Google parchó CVE-2026-2473 en febrero. Este fue otro error que acaparó los depósitos en Vertex AI Experiments y que también permitió la ejecución de código entre inquilinos, el robo de modelos y el envenenamiento.
El trabajo previo de la Unidad 42 sobre los permisos de agente de servicio predeterminados de Vertex AI rastreó las rutas relevantes desde los agentes de IA implementados hasta los datos de clientes e inquilinos.
Source link
