{"id":1213,"date":"2026-06-16T20:25:35","date_gmt":"2026-06-16T20:25:35","guid":{"rendered":"https:\/\/cybercolombia.co\/index.php\/2026\/06\/16\/la-falla-del-sdk-de-google-vertex-ai-permite-a-los-atacantes-secuestrar-cargas-de-modelos-a-traves-de-bucket-squatting-cyberdefensa-mx\/"},"modified":"2026-06-16T20:25:35","modified_gmt":"2026-06-16T20:25:35","slug":"la-falla-del-sdk-de-google-vertex-ai-permite-a-los-atacantes-secuestrar-cargas-de-modelos-a-traves-de-bucket-squatting-cyberdefensa-mx","status":"publish","type":"post","link":"https:\/\/cybercolombia.co\/index.php\/2026\/06\/16\/la-falla-del-sdk-de-google-vertex-ai-permite-a-los-atacantes-secuestrar-cargas-de-modelos-a-traves-de-bucket-squatting-cyberdefensa-mx\/","title":{"rendered":"La falla del SDK de Google Vertex AI permite a los atacantes secuestrar cargas de modelos a trav\u00e9s de Bucket Squatting \u2013 CYBERDEFENSA.MX"},"content":{"rendered":"<div id=\"articlebody\">\n<p>Una falla en el SDK de Google Cloud Vertex AI para Python permiti\u00f3 a un atacante sin acceso al proyecto de una v\u00edctima secuestrar el modelo de aprendizaje autom\u00e1tico de la v\u00edctima, cargar y ejecutar c\u00f3digo dentro de la infraestructura de servicio de Google.<\/p>\n<p>Unidad 42 de Palo Alto Networks, que encontr\u00f3 y <a href=\"https:\/\/unit42.paloaltonetworks.com\/hijacking-vertex-ai-model\/\" target=\"_blank\">reportado<\/a> El error a trav\u00e9s del programa de recompensas por errores de Google, llama a la t\u00e9cnica \u00ab<b>Pepinillo en el medio<\/b>\u00bb y dijo que no vio ninguna explotaci\u00f3n en la naturaleza. Google lo ha parcheado; si usa el SDK, actualice a la versi\u00f3n 1.148.0 o posterior.<\/p>\n<p>El atacante solo necesitaba un proyecto propio de Google Cloud y el ID del proyecto de la v\u00edctima, que suele ser p\u00fablico. Sin credenciales, sin phishing, sin punto de apoyo en el objetivo.<\/p>\n<p>La falla estaba en c\u00f3mo el SDK eligi\u00f3 un dep\u00f3sito temporal de Cloud Storage para la carga de modelos. Si un usuario no configur\u00f3 un dep\u00f3sito, el SDK gener\u00f3 un nombre predecible a partir del ID del proyecto y la regi\u00f3n, como <i>regi\u00f3n-ensayo-v\u00e9rtice-del-proyecto<\/i>. Comprob\u00f3 si ese cubo exist\u00eda, pero no si la v\u00edctima era su propietario.<\/p>\n<p>Debido a que los nombres de los dep\u00f3sitos son globalmente \u00fanicos, un atacante podr\u00eda crear primero el dep\u00f3sito esperado en su propio proyecto. El SDK de la v\u00edctima luego cargar\u00eda los archivos del modelo en el dep\u00f3sito del atacante. Luego, el atacante podr\u00eda reemplazar el modelo cargado por uno malicioso.<\/p>\n<div class=\"dog_two clear\">\n<div class=\"cf\"><a href=\"https:\/\/thehackernews.uk\/ai-cant-stop-d\" rel=\"nofollow noopener sponsored\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"lazyload\" alt=\"Ciberseguridad\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjPEV6-530TOlxG6PjrmdlY623wpBwduZ7t1HV6flcmO5R4q4AmfixDUzW0CrhlvMVNWbhvOIso-UDNTka4W_W9Chrdj_dglwBZwi7DuePM2IMIl-hfUYVIqBXgfpr_2619K8Gptb4LzwJ6gUbi7lWl2M8AFQJsHEaw63Q7tZ6708YGruiHrr0Y2W9YYxLQ\/s728-e100\/ThreatLocker-d.png\" width=\"729\" height=\"91\"\/><\/a><\/div>\n<\/div>\n<p>Muchos modelos de Python ML se guardan con <a href=\"https:\/\/docs.python.org\/3\/library\/pickle.html\">conservar en vinagre<\/a> o <a href=\"https:\/\/joblib.readthedocs.io\/en\/stable\/\">biblioteca de trabajo<\/a>que puede ejecutar c\u00f3digo cuando se carga un archivo. Cuando Vertex AI carg\u00f3 m\u00e1s tarde el modelo intercambiado, el c\u00f3digo del atacante se ejecut\u00f3 dentro del contenedor de servicio.<\/p>\n<p>El ataque depend\u00eda de la velocidad. La Unidad 42 midi\u00f3 aproximadamente 2,5 segundos entre la carga de la v\u00edctima y Vertex AI leyendo el archivo. En su prueba de concepto, el atacante utiliz\u00f3 una funci\u00f3n en la nube que se activ\u00f3 despu\u00e9s de la carga y reemplaz\u00f3 el modelo en 1,4 segundos, antes de que Vertex AI lo leyera.<\/p>\n<p>Luego, la carga \u00fatil rob\u00f3 un token OAuth del servidor de metadatos del contenedor de servicio y lo envi\u00f3 al atacante. En el entorno de prueba de la Unidad 42, ese token no se limit\u00f3 a la implementaci\u00f3n comprometida. Podr\u00eda acceder a otros artefactos del modelo en el mismo proyecto de inquilino administrado por Google, incluido un modelo TensorFlow completo con pesos entrenados, as\u00ed como metadatos de BigQuery, listas de acceso, registros de inquilinos, nombres de cl\u00fasteres de GKE y rutas de im\u00e1genes de contenedores internos.<\/p>\n<div class=\"separator\" style=\"clear: both;\"><a href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEi44arRHIBKBINb19ia9izN1ZJEdRQb66daWeR8Q_rIie27guF-8nPTb_9ndCjSgscxjYfM3o4UjYP6rRfs2N4hV9jHjN69IGI0dqkkVtiUtJMtYfDtF48MORBQUcQeOWJCCbCmIDLfhqZWqIOavaonpG82K4yiGCYV2w11W_fqzdps5UUrFsrzZgQEXmA\/s1700-e365\/bucket.jpg\" style=\"clear: left; display: block; float: left;  text-align: center;\"><img decoding=\"async\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEi44arRHIBKBINb19ia9izN1ZJEdRQb66daWeR8Q_rIie27guF-8nPTb_9ndCjSgscxjYfM3o4UjYP6rRfs2N4hV9jHjN69IGI0dqkkVtiUtJMtYfDtF48MORBQUcQeOWJCCbCmIDLfhqZWqIOavaonpG82K4yiGCYV2w11W_fqzdps5UUrFsrzZgQEXmA\/s1700-e365\/bucket.jpg\" alt=\"\" border=\"0\" data-original-height=\"1110\" data-original-width=\"972\"\/><\/a><\/div>\n<p>El ataque solo funcion\u00f3 bajo condiciones espec\u00edficas: el dep\u00f3sito de preparaci\u00f3n predeterminado de la v\u00edctima no exist\u00eda a\u00fan en esa regi\u00f3n y la v\u00edctima abandon\u00f3 el <i>cubo_puesta en escena <\/i>par\u00e1metro desarmado. El primero es com\u00fan para un nuevo proyecto en Vertex AI en una regi\u00f3n.<\/p>\n<p>El segundo depende de que el desarrollador conf\u00ede en el valor predeterminado del SDK en lugar de nombrar su propio dep\u00f3sito.<\/p>\n<p>La Unidad 42 inform\u00f3 la falla a trav\u00e9s del Programa de recompensa por vulnerabilidades de Google el 5 de marzo de 2026. Prob\u00f3 las versiones 1.139.0 y 1.140.0, las \u00faltimas disponibles en ese momento, y encontr\u00f3 que ambas eran vulnerables.<\/p>\n<p>Google envi\u00f3 una soluci\u00f3n inicial en <a href=\"https:\/\/github.com\/googleapis\/python-aiplatform\/compare\/v1.143.0...v1.144.0\">v1.144.0<\/a> el 31 de marzo, agregando un uuid4 aleatorio al nombre del dep\u00f3sito. Complet\u00f3 la soluci\u00f3n en <a href=\"https:\/\/github.com\/googleapis\/python-aiplatform\/releases\/tag\/v1.148.0\">v1.148.0<\/a> el 15 de abril, se agreg\u00f3 la verificaci\u00f3n de propiedad del dep\u00f3sito para bloquear la okupaci\u00f3n del dep\u00f3sito en Model.upload(). Al momento de su publicaci\u00f3n, ni Unit 42 ni los boletines de seguridad Vertex AI de Google enumeran un CVE para el problema.<\/p>\n<div class=\"dog_two clear\">\n<div class=\"cf\"><a href=\"https:\/\/thehackernews.uk\/vpn-threat-report-m\" rel=\"nofollow noopener sponsored\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"lazyload\" alt=\"Ciberseguridad\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEhFlTC7RrRZGiFAgASS0noWSL0qsQGFVp8-Hvuw9yp3X3VKRuTcb5SsPX09wJzrdIM6pu1_5lS4EeZp7Sx4iYBpNJkrGnpr08yyaS1HQ5_5TxaCsP6O0OtHNuOkesn6CbNjao1GPulCJk-uljYMSfMZfBYNrngpe669t7jlRn1FqiEnXhsFD1WVkpaYIVgh\/s728-e100\/ai-d.jpg\" width=\"729\" height=\"91\"\/><\/a><\/div>\n<\/div>\n<p>Actualice a 1.148.0 o posterior para que la verificaci\u00f3n de propiedad est\u00e9 activa. Adem\u00e1s, establezca un staging_bucket expl\u00edcito en una ubicaci\u00f3n de Cloud Storage que controle al cargar modelos. Debido a que la l\u00f3gica defectuosa reside en el SDK del cliente, verifique la versi\u00f3n de google-cloud-aiplatform dondequiera que se ejecute, incluidos los cuadernos, los trabajos de CI y los canales de capacitaci\u00f3n, no solo los servicios de producci\u00f3n.<\/p>\n<p>Es la segunda falla con nombre de dep\u00f3sito predecible que surge en Vertex AI este a\u00f1o. Google parcheado <a href=\"https:\/\/cloud.google.com\/vertex-ai\/docs\/security-bulletins\">CVE-2026-2473<\/a> en febrero, un error separado en Vertex AI Experiments que tambi\u00e9n permiti\u00f3 la ejecuci\u00f3n de c\u00f3digo entre inquilinos, el robo de modelos y el envenenamiento.<\/p>\n<p>El trabajo anterior de la Unidad 42 sobre los permisos de agente de servicio predeterminados de Vertex AI traz\u00f3 una ruta relacionada desde un agente de IA implementado hasta los datos de clientes e inquilinos.<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Una falla en el SDK de Google Cloud Vertex AI para Python permiti\u00f3 a un atacante sin acceso al proyecto de una v\u00edctima secuestrar el modelo de aprendizaje autom\u00e1tico de la v\u00edctima, cargar y ejecutar c\u00f3digo dentro de la infraestructura de servicio de Google. Unidad 42 de Palo Alto Networks, que encontr\u00f3 y reportado El [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":752,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[25,5],"tags":[151,3148,1110,24,70,263,256,52,2993,265,311,268,3149,76,1421],"class_list":["post-1213","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-noticias","category-trending","tag-atacantes","tag-bucket","tag-cargas","tag-cyberdefensa-mx","tag-del","tag-falla","tag-google","tag-los","tag-modelos","tag-permite","tag-sdk","tag-secuestrar","tag-squatting","tag-traves","tag-vertex"],"_links":{"self":[{"href":"https:\/\/cybercolombia.co\/index.php\/wp-json\/wp\/v2\/posts\/1213","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cybercolombia.co\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cybercolombia.co\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cybercolombia.co\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cybercolombia.co\/index.php\/wp-json\/wp\/v2\/comments?post=1213"}],"version-history":[{"count":0,"href":"https:\/\/cybercolombia.co\/index.php\/wp-json\/wp\/v2\/posts\/1213\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cybercolombia.co\/index.php\/wp-json\/wp\/v2\/media\/752"}],"wp:attachment":[{"href":"https:\/\/cybercolombia.co\/index.php\/wp-json\/wp\/v2\/media?parent=1213"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cybercolombia.co\/index.php\/wp-json\/wp\/v2\/categories?post=1213"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cybercolombia.co\/index.php\/wp-json\/wp\/v2\/tags?post=1213"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}