پژوهشگران یک ضعف امنیتی در کیت توسعه نرمافزار (SDK) پایتون سرویس Vertex AI گوگل را شناسایی کردهاند که به مهاجمان اجازه میدهد بدون دسترسی به پروژه قربانی، سرقت اعتبارنامه، اجرای حملات فیشینگ یا حتی دستیابی به دسترسی اولیه، فرآیند آپلود مدلهای یادگیری ماشین (ML) را ربوده و کد دلخواه خود را در زیرساخت سروینگ (Serving) گوگل اجرا کنند. بررسیها نشان میدهد آسیبپذیری Vertex AI گوگل ناشی از نحوه انتخاب باکتهای موقت ذخیرهسازی برای آپلود مدلها بوده و در شرایط خاص میتواند فایلهای مدل را به یک باکت تحت کنترل مهاجم هدایت کند.
این آسیبپذیری Vertex AI گوگل توسط تیم Unit 42 شرکت Palo Alto Networks شناسایی شده و از طریق برنامه باگ بانتی گوگل گزارش شده است. محققان این زنجیره حمله را Pickle in the Middle نامگذاری کردهاند. طبق تحلیلها، مهاجم برای اجرای این حمله تنها به یک پروژه گوگل کلاد (Google Cloud) تحت مالکیت خود و شناسه پروژه قربانی نیاز دارد؛ شناسهای که در بسیاری از موارد بهصورت عمومی در دسترس است. از سوی دیگر، گوگل تأکید کرده است که تا به این لحظه هیچ گزارشی مبنی بر سوءاستفاده واقعی از این ضعف وجود ندارد و پچهای امنیتی لازم در نسخه 1.148.0 و نسخههای جدیدتر SDK اعمال شده است.
آسیبپذیری Vertex AI گوگل در مدیریت باکتهای موقت
بررسیها نشان میدهد ریشه آسیبپذیری Vertex AI گوگل در نحوه انتخاب باکتهای موقت ذخیرهسازی ابری (Cloud Storage Buckets) برای آپلود مدلها قرار داشته است. در صورتی که کاربر باکت موردنظر خود را بهصورت دستی مشخص نمیکرد، SDK بهطور خودکار نامی قابل پیشبینی را بر اساس شناسه پروژه و منطقه جغرافیایی تولید میکرد؛ برای مثال:
project-vertex-staging-regionاین مشکل از آنجا ناشی میشد که SDK صرفاً وجود باکت را بررسی میکرد و هیچ مکانیزمی برای احراز مالکیت آن در نظر نمیگرفت.
از آنجا که نام باکتها در گوگل کلاد باید در سطح جهانی یکتا (Globally Unique) باشند، مهاجم میتوانست پیش از قربانی باکت مورد انتظار را در پروژه خود ایجاد کند. در چنین شرایطی، فایلهای مدل بهجای بارگذاری در باکت مربوط به پروژه قربانی، مستقیماً به باکت تحت کنترل مهاجم منتقل میشدند. در ادامه، مهاجم میتوانست مدل آپلودشده را با نسخهای دستکاریشده جایگزین کند. این سناریو نمونهای از تکنیک باکت اسکواتینگ (Bucket Squatting) است؛ روشی که در آن مهاجم با سوءاستفاده از نامهای قابل پیشبینی در منابع ذخیرهسازی ابری، کنترل مسیر آپلود یا دسترسی به دادهها را در اختیار میگیرد.
اجرای کد از طریق فایلهای pickle و joblib
بخش مهمی از زنجیره حمله به نحوه ذخیره مدلهای یادگیری ماشین در پایتون مربوط میشود. بسیاری از مدلها با استفاده از فرمتهای pickle یا joblib ذخیره میشوند. این فرمتها در زمان بارگذاری فایل میتوانند کد دلخواه را اجرا کنند.
به همین دلیل، پس از جایگزینی فایل مدل، زمانی که سرویس Vertex AI مدل را بارگذاری میکرد، کد مهاجم در داخل کانتینر سروینگ اجرا میشد.
رقابت زمانی برای جایگزینی مدل
اجرای موفق حمله به سرعت مهاجم وابسته بود. محققان Unit 42 فاصله زمانی بین آپلود مدل توسط قربانی و خواندن آن توسط Vertex AI را حدود 2.5 ثانیه اندازهگیری کردهاند.
در نمونه اثبات مفهومی (PoC)، مهاجم از یک Cloud Function (تابع ابری) استفاده میکرد که پس از آپلود فایل فعال میشد و مدل را در 1.4 ثانیه با نسخه مخرب جایگزین میکرد. این زمان برای سوءاستفاده از آسیبپذیری Vertex AI گوگل کافی بود و به مهاجم اجازه میداد پیش از پردازش فایل توسط سرویس، مدل را دستکاری کند.
سرقت توکن OAuth و دسترسی به منابع ابری
پس از اجرای پیلود، کد مخرب یک توکن OAuth را از سرور متادیتای کانتینر سروینگ استخراج کرده و آن را برای مهاجم ارسال میکرد.
در محیط آزمایشی Unit 42 مشخص شد این توکن تنها به همان استقرار محدود نبود و میتوانست به منابع مختلفی در همان پروژه چندمستاجری (Tenant Project) مدیریتشده توسط گوگل دسترسی پیدا کند. این منابع شامل موارد زیر بودند:
- آرتیفکتهای سایر مدلها
- یک مدل کامل TensorFlow به همراه پارامترهای آموزشدیده
- متادیتای BigQuery
- لیستهای کنترل دسترسی
- لاگهای محیط چندمستاجری
- نام کلاسترهای GKE
- مسیرهای داخلی ایمیجهای کانتینری
این دسترسیها نشان میدهد که آسیبپذیری Vertex AI گوگل میتوانست منجر به سرقت مدلها یا افشای دادههای حساس شود.
شرایط لازم برای موفقیت حمله
این حمله تنها در شرایط مشخصی قابل اجرا بود. برای سوءاستفاده از آسیبپذیری Vertex AI گوگل لازم بود دو شرط بهطور همزمان برقرار باشد:
- باکت موقت پیشفرض در آن منطقه از قبل ایجاد نشده باشد.
- پارامتر staging_bucket توسط توسعهدهنده بهصورت دستی تنظیم نشده باشد.
شرط نخست معمولاً در پروژههای جدید Vertex AI که بهتازگی در یک منطقه ایجاد شدهاند مشاهده میشود. شرط دوم نیز زمانی رخ میدهد که توسعهدهنده به عملکرد پیشفرض SDK اتکا کرده و بهجای تعریف یک باکت اختصاصی، از همان تنظیمات پیشفرض استفاده کند.
نحوه شناسایی و پچ آسیبپذیری Vertex AI
تیم Unit 42 این آسیبپذیری را در تاریخ 5 مارس 2026 از طریق برنامه پاداش شناسایی آسیبپذیری گوگل (VRP) گزارش کرده است. این تیم نسخههای 1.139.0 و 1.140.0، یعنی جدیدترین نسخههای موجود در آن زمان را مورد بررسی قرار داده و اعلام کرده است که هر دو نسخه در برابر این ضعف آسیبپذیر هستند.
گوگل نخستین پچ امنیتی را در نسخه 1.144.0 در تاریخ 31 مارس منتشر کرد. در این بهروزرسانی، یک مقدار تصادفی uuid4 به نام باکت اضافه شد تا پیشبینیپذیری نامها کاهش یابد. سرانجام در 15 آوریل، نسخه 1.148.0 منتشر شد که با افزودن مکانیزم احراز مالکیت باکت به تابع Model.upload()، راه را برای حملات باکت اسکواتینگ مسدود کرد.
تا زمان انتشار این گزارش، نه Unit 42 و نه بولتنهای امنیتی Vertex AI گوگل هیچ شناسه CVE برای این آسیبپذیری ثبت نکردهاند.
توصیههای امنیتی
توسعهدهندگانی که از سرویس Vertex AI استفاده میکنند باید اقدامات زیر را برای کاهش ریسک سوءاستفاده از این آسیبپذیری در نظر بگیرند:
- بهروزرسانی کتابخانه google-cloud-aiplatform به نسخه 1.148.0 یا بالاتر
- تعیین صریح پارامتر باکت موقت بارگذاری هنگام آپلود مدلها
- استفاده از باکت ذخیرهسازی ابری که بهصورت کامل تحت مالکیت سازمان باشد
از آنجا که منطق این ضعف در کیت توسعه سمت کلاینت (Client SDK) قرار دارد، بررسی نسخه این کتابخانه باید در تمامی محیطهای اجرایی انجام شود، از جمله:
- نوتبوکهای توسعه
- پایپلاینهای آموزش مدل
- وظایف یکپارچهسازی و استقرار مداوم (CI/CD Jobs)
- سرویسهای عملیاتی
اجرای این اقدامات برای کاهش سطح حمله و جلوگیری از سوءاستفاده از آسیبپذیری Vertex AI گوگل ضروری است.
سابقه آسیبپذیریهای مشابه در Vertex AI
این دومین آسیبپذیری مرتبط با نامگذاری قابل پیشبینی باکتها در Vertex AI طی سال جاری است. گوگل در فوریه 2026 آسیبپذیری CVE‑2026‑2473 را در سرویس Vertex AI Experimentsپچ کرد. این ضعف امنیتی امکان اجرای کد بین محیطهای چندمستاجری، سرقت مدلهای یادگیری ماشین و دستکاری دادههای آموزشی را فراهم میکرد.
همچنین تحقیقات پیشین Unit 42 درباره مجوزهای پیشفرض سرویس عاملهای Vertex AI نشان داده بود که چگونه یک عامل هوش مصنوعی (AI Agent) مستقرشده میتواند در برخی سناریوها به دادههای مشتریان و منابع محیطهای چندمستاجری دسترسی پیدا کند.