Una vulnerabilidad, bautizada como “Pickle in the Middle” por Palo Alto Networks Unit 42, fue descubierta en el SDK de Python de Google Cloud Vertex AI. Esta falla permitía a un atacante, sin necesidad de acceso directo al proyecto de la víctima, secuestrar la carga de modelos de Machine Learning (ML) y ejecutar código arbitrario dentro de la infraestructura de servicio de Google. Afortunadamente, no se detectó explotación de esta vulnerabilidad en la naturaleza y Google ya ha implementado una solución.
La falla residía en la forma en que el SDK seleccionaba un bucket temporal de Cloud Storage para las cargas de modelos. Si el usuario no especificaba un bucket, el SDK generaba un nombre predecible a partir del ID del proyecto y la región, como project-vertex-staging-region. El SDK verificaba la existencia del bucket, pero no su propiedad. Esto permitía a un atacante crear primero el bucket esperado en su propio proyecto (ya que los nombres de bucket son globalmente únicos). Cuando la víctima subía su modelo, este terminaba en el bucket del atacante, quien podía reemplazarlo rápidamente por un modelo malicioso.
Dado que muchos modelos de Python ML se guardan con pickle o joblib, los cuales pueden ejecutar código al ser cargados, el código malicioso del atacante se ejecutaba dentro del contenedor de servicio de Google Vertex AI cuando este cargaba el modelo manipulado. El ataque dependía de la velocidad, con Unit 42 demostrando que la sustitución del modelo podía realizarse en 1.4 segundos antes de que Vertex AI leyera el archivo. El payload malicioso podía robar tokens OAuth del servidor de metadatos del contenedor de servicio, obteniendo acceso potencial a otros artefactos del modelo, metadatos de BigQuery, listas de acceso, registros del inquilino y nombres de clústeres GKE dentro del mismo proyecto administrado por Google.
Google ha corregido esta vulnerabilidad a través de dos actualizaciones del SDK. La versión 1.144.0, lanzada el 31 de marzo, introdujo un uuid4 aleatorio en el nombre del bucket para mitigar la predictibilidad. La solución completa se implementó en la versión 1.148.0, disponible desde el 15 de abril, que agregó la verificación de propiedad del bucket a la función Model.upload() para bloquear el bucket squatting. Aunque no se ha asignado un CVE específico, es crucial actualizar el SDK de google-cloud-aiplatform a la versión 1.148.0 o posterior en todos los entornos donde se utilice, incluyendo notebooks, trabajos de CI y pipelines de entrenamiento. Asimismo, se recomienda explícitamente configurar el parámetro staging_bucket a una ubicación de Cloud Storage bajo su control al cargar modelos.
Qué significa para tu empresa: Las vulnerabilidades en plataformas de nube, incluso en componentes aparentemente menores como los SDK, pueden tener implicaciones de seguridad significativas. En Ingeniería Telemática S.A.S., entendemos que la gestión de la seguridad en entornos de nube híbrida, como Google Cloud, requiere una atención constante a las configuraciones y actualizaciones. Nuestra experiencia en la implementación y gestión de soluciones de nube híbrida en plataformas como AWS, Azure y Google Cloud, nos permite asesorar a nuestros clientes en las mejores prácticas de seguridad para proteger sus cargas de trabajo y datos críticos contra este tipo de amenazas, asegurando configuraciones robustas y el cumplimiento de políticas de seguridad.
Fuente original: The Hacker News — ver artículo →