گراک بیلد از طریق آپلود مخزن گیت، کل مخزن به‌همراه تاریخچه کامل کامیت‌ها را به فضای ذخیره‌سازی xAI ارسال کرد

اشتراک گذاری

آپلود مخزن گیت
❞ ابزار رابط خط فرمان (CLI) کدنویسی هوش مصنوعی گراک بیلد (Grok Build) متعلق به شرکت xAI، به‌جای ارسال تنها فایل‌های موردنیاز برای انجام وظایف برنامه‌نویسی، کل مخازن گیت (Git) کاربران را به‌همراه تاریخچه کامل کامیت‌ها در یک باکت ذخیره‌سازی واقع در سرویس ذخیره‌سازی ابری گوگل (Google Cloud Storage) آپلود می‌کرد.

ابزار رابط خط فرمان (CLI) کدنویسی هوش مصنوعی گراک بیلد (Grok Build) متعلق به شرکت xAI، به‌جای ارسال تنها فایل‌های موردنیاز برای انجام وظایف برنامه‌نویسی، کل مخازن گیت (Git) کاربران را به‌همراه تاریخچه کامل کامیت‌ها در یک باکت ذخیره‌سازی واقع در سرویس ذخیره‌سازی ابری گوگل (Google Cloud Storage) آپلود می‌کرد. بررسی‌های جدید نشان می‌دهد آپلود مخزن گیت بدون اطلاع شفاف کاربران انجام می‌شد و حتی با غیرفعال بودن گزینه آموزش مدل نیز ادامه داشت؛ موضوعی که نگرانی‌ها درباره آپلود مخزن گیت و حفاظت از کدهای اختصاصی، اطلاعات حساس و داده‌های باقی‌مانده در تاریخچه مخازن را افزایش داده است.

رهگیری ترافیک شبکه، آپلود کامل مخزن گیت را آشکار کرد

پژوهشگری با نام مستعار cereblab هنگام بررسی نسخه 0.2.93 ابزار گراک بیلد، موفق شد یکی از فرآیندهای انتقال داده را رهگیری کند. او با استخراج فایل باندل گیت (Git Bundle) از درخواست رهگیری‌شده، فایلی را بازیابی کرد که به عامل هوش مصنوعی صراحتاً دستور داده شده بود هرگز آن را باز نکند. این یافته نشان می‌دهد فرآیند آپلود مخزن گیت برای انجام وظیفه تنها به فایل‌های موردنیاز محدود نبوده است.

تحلیل ترافیک شبکه نشان داد مسیر انتقال داده به فضای ذخیره‌سازی، مستقل از کانال ارتباطی مدل با سرور عمل می‌کرد. برای مثال، در آزمایشی روی یک مخزن گیت  با حجم 12 گیگابایت که مدل هوش مصنوعی هیچ‌یک از فایل‌های آن را نخوانده بود، اختلاف قابل‌توجهی در حجم داده‌های ارسالی مشاهده شد:

  • حجم ترافیک ارسالی به مسیر /v1/responses تنها حدود 192 کیلوبایت بود.
  • در مقابل، مسیر /v1/storage بیش از 10 گیبی‌بایت (GiB) داده را منتقل کرد.

این اختلاف نشان می‌دهد حجم داده‌های ارسالی به فضای ذخیره‌سازی حدود 27 هزار و 800 برابر بیشتر از میزان داده‌ای بوده که مدل برای انجام پردازش به آن نیاز داشت.

داده‌ها در ده‌ها بخش مجزا به فضای ذخیره‌سازی xAI ارسال شدند

مطابق یافته‌های این پژوهش، گراک بیلد داده‌ها را در 73 بخش (Chunk) مجزا که هرکدام حدود 75 مگابایت حجم داشتند، به سرور ارسال می‌کرد. تمام این درخواست‌ها نیز با کد وضعیت HTTP 200 با موفقیت پردازش شدند. همچنین بررسی‌ها نشان داد حجم داده‌های ارسالی با افزایش اندازه مخزن گیت، به همان نسبت افزایش پیدا می‌کرد.

تحلیل فایل باینری و فایل متادیتا با نام metadata.json نیز نشان داد مقصد این داده‌ها، یک باکت ذخیره‌سازی با نام grok-code-session-traces بوده است. افزون بر این، در فایل metadata.json مسیر ذخیره‌سازی فایل‌ها با آدرس gs://grok-code-session-traces/ ثبت شده بود که مقصد نهایی داده‌ها را مشخص می‌کرد.

فایل خوانده‌نشده نیز در مخزن ارسالی وجود داشت

پژوهشگر برای انجام این آزمایش، فایل src/_probe/never_read_canary.txt را با یک نشانگر منحصربه‌فرد (Canary Marker) در مخزن قرار داد. او پس از استخراج باندل گیت از داده‌های رهگیری‌شده، همان فایل را بدون هیچ تغییری به‌همراه تاریخچه کامل کامیت‌ها بازیابی کرد. تکرار این آزمایش روی یک مخزن مستقل دیگر نیز نتایج مشابهی به همراه داشت و نشان داد آپلود مخزن گیت تنها به فایل‌هایی که عامل هوش مصنوعی با آن‌ها تعامل داشته، محدود نبوده است.

به گفته پژوهشگر، این بررسی صرفاً انتقال، پذیرش و ذخیره‌سازی داده‌ها را تأیید می‌کند و هیچ مدرکی مبنی بر استفاده xAI از این اطلاعات برای آموزش مدل (Model Training)، دسترسی کارکنان این شرکت به محتوای مخازن یا مشاهده مستقیم کدها ارائه نمی‌دهد. همچنین مشخص نیست فایل‌های Gitignored (فایل‌هایی که توسط گیت نادیده گرفته می‌شوند) نیز همواره در داده‌های ارسالی قرار می‌گیرند یا خیر. آنچه بررسی ترافیک شبکه اثبات می‌کند، انتقال فایل‌های رهگیری‌شده به‌همراه تاریخچه کامل آن‌ها است.

فایل‌های حاوی اطلاعات محرمانه بدون حذف داده‌های حساس ارسال شدند

بررسی‌های پژوهشگر نشان داد مسیر انتقال اطلاعات محرمانه، از فرآیند آپلود مخزن گیت مستقل بوده است. هر بار که گراک فایلی را می‌خواند، محتوای آن مستقیماً در درخواست ارسالی به مدل قرار می‌گرفت. در این آزمایش، فایل .env  نیز بدون هیچ‌گونه حذف داده‌های حساس ارسال شد و مقادیر آزمایشی API_KEY و DB_PASSWORD نیز بدون هیچ تغییری در آن وجود داشت.

علاوه بر این، همین اطلاعات در آرشیو وضعیت نشست که برای ذخیره‌سازی ارسال می‌شد نیز ثبت شده بودند. هرچند مقادیر استفاده‌شده در این آزمایش ساختگی بودند و هیچ اطلاعات واقعی افشا نشد، اما این موضوع نشان داد فایل‌های حاوی اعتبارنامه‌ها بدون حذف داده‌های حساس به سرور ارسال می‌شوند؛ موضوعی که از دیدگاه امنیتی، ریسک افشای ناخواسته اطلاعات محرمانه را افزایش می‌دهد.

غیرفعال کردن آموزش مدل، مانع ارسال مخزن نمی‌شد

نتایج بررسی‌ها نشان داد غیرفعال کردن گزینه بهبود مدل (Improve the Model) نیز تأثیری بر ارسال مخزن به سرورهای xAI نداشت. حتی پس از غیرفعال شدن این قابلیت، پاسخ دریافتی از مسیر /v1/settings همچنان مقدار trace_upload_enabled: true را نشان می‌داد؛ موضوعی که بیانگر فعال بودن قابلیت ثبت و ارسال داده‌های ردیابی بود.

پژوهشگران تأکید کردند این گزینه تنها مشخص می‌کند که داده‌های کاربران برای آموزش مدل مورد استفاده قرار بگیرند یا خیر و هیچ ارتباطی با ارسال کدها از دستگاه کاربر به سرور ندارد. به گفته آن‌ها، این دو قابلیت کاملاً مستقل از یکدیگر هستند، اما کاربران تنها به تنظیمات مربوط به آموزش مدل دسترسی داشتند و کنترلی بر قابلیت ارسال داده‌ها نداشتند.

گراک بیلد با سایر ابزارها چه تفاوتی داشت؟

ارسال بخشی از کد به یک مدل ابری برای انجام پردازش، عملکردی رایج در ابزارهای کدنویسی مبتنی بر هوش مصنوعی است؛ اما آپلود مخزن گیت به‌همراه تاریخچه کامل آن، دامنه بسیار گسترده‌تری از دسترسی به داده‌ها را ایجاد می‌کند.

یک مخزن گیت می‌تواند شامل اطلاعات حساسی مانند موارد زیر باشد:

  • کدهای اختصاصی
  • آدرس‌های داخلی سامانه‌ها
  • اطلاعات مشتریان
  • اعتبارنامه‌هایی که از فایل‌های فعلی پروژه حذف شده‌اند، اما همچنان در تاریخچه کامیت‌هاباقی مانده‌اند.

مقایسه انجام‌شده توسط cereblab نشان داد که کلود کد (Claude Code) و کودکس (Codex) هیچ باندل مخزنی  را به سرور ارسال نکردند. همچنین جمینای (Gemini) نیز در آزمایش اولیه هیچ باندل مخزنی ارسال نکرد، اما اجرای سناریوی آزمایشی کامل آن پیش از اتمام، به‌دلیل عبور از سقف مجاز استفاده متوقف شد.

در میان ابزارهای بررسی‌شده، گراک بیلد  تنها ابزاری بود که کل فضای کاری (Workspace) را به سرور ارسال می‌کرد. اگرچه همه ابزارهای کدنویسی ابری، فایل‌های موردنیاز برای انجام وظایف خود را به مدل ارسال می‌کنند، اما ارسال کل مخزن و محتوای فضای کاری، قابلیتی بود که در این بررسی فقط در گراک بیلد مشاهده شد.

xAI ارسال مخازن به فضای ذخیره‌سازی را از سمت سرور متوقف کرد

در 13 جولای، همان نسخه 0.2.93 دیگر هیچ درخواستی به فضای ذخیره‌سازی ارسال نمی‌کرد. cereblab این آزمایش را شش بار دیگر تکرار کرد و در هیچ‌یک از آن‌ها درخواستی به مسیر /v1/storage مشاهده نشد. علاوه بر این، پاسخ سرور نشان می‌داد مقدار disable_codebase_upload: true فعال شده و مقدار trace_upload_enabled: false نیز نمایش داده می‌شود؛ موضوعی که نشان می‌داد قابلیت آپلود مخزن گیت از سمت سرور غیرفعال شده است.

یکی از توسعه‌دهندگان، اعلام کرد همین مقادیر برای حساب کاربری او نیز نمایش داده شده است. این موضوع نشان می‌دهد غیرفعال شدن این قابلیت تنها به آزمایش cereblab محدود نبوده است.

همچنین بررسی‌ها نشان داد نسخه آزمایش‌شده همچنان 0.2.93 باقی مانده بود، اما تنظیمات سمت سرور تغییر کرده بودند. ازاین‌رو، پژوهشگران نتیجه گرفتند این تغییر مستقیما از سمت سرور اعمال شده و ناشی از انتشار نسخه جدید یا به‌روزرسانی نرم‌افزار نبوده است. با این حال، xAI هنوز تأیید نکرده که این تغییر برای همه حساب‌های کاربری اعمال شده یا به‌صورت دائمی باقی خواهد ماند.

xAI درباره آپلود مخزن گیت در شبکه ایکس توضیح داد

 

xAI تاکنون تنها از طریق شبکه اجتماعی ایکس (X) به گزارش‌های مربوط به آپلود مخزن گیت واکنش نشان داده و هنوز هیچ اطلاعیه امنیتی (Security Advisory) یا توضیحی در فهرست تغییرات (Changelog) منتشر نکرده است.

حساب کاربری @SpaceXAI اعلام کرد برای تیم‌های سازمانی که از قابلیت عدم ذخیره‌سازی داده (Zero Data Retention – ZDR) استفاده می‌کنند، هیچ‌یک از کدهای منبع یا داده‌های ردیابی در سرورهای xAI ذخیره نمی‌شود. همچنین استفاده از کلیدهای API نیز از سیاست ZDR پیروی می‌کند.

بر اساس اعلام xAI، کاربران عادی که قابلیت ZDR را فعال نکرده‌اند، می‌توانند با اجرای دستور /privacy در رابط خط فرمان (CLI)، ذخیره داده‌های خود را غیرفعال کرده و اطلاعاتی که پیش‌تر با سرور همگام‌سازی (Sync) شده‌اند را حذف کنند.

ایلان ماسک نیز اعلام کرد تمام داده‌هایی که پیش از این توسط کاربران بارگذاری شده‌اند، به‌طور کامل و بدون باقی ماندن هیچ اثری حذف خواهند شد.

به کاربرانی که پیش‌تر از گراک بیلد استفاده کرده‌اند توصیه می‌شود منتظر انتشار توضیحات یا اقدامات بعدی xAI نمانند. هر اعتبارنامه‌ یا اطلاعات محرمانه‌ای که احتمال دارد این ابزار آن را خوانده یا به سرور ارسال کرده باشد، باید در اسرع وقت تغییر داده شود. این موضوع فقط به فایل‌هایی که گراک به آن‌ها دسترسی داشته محدود نیست؛ هر اطلاعات حساسی که در فایل‌های رهگیری‌شده  یا تاریخچه گیت وجود داشته است، حتی اگر بعداً از مخزن حذف شده باشد، باید به‌عنوان اطلاعاتی با احتمال افشای بالا در نظر گرفته شود.

حذف فایل از مخزن، آن را از تاریخچه گیت پاک نمی‌کند

بررسی‌ها نشان داد فایل‌هایی که گیت آن‌ها را ردیابی نمی‌کند و هرگز کامیت نشده‌اند، در باندل مخزن قرار نمی‌گیرند. اما اگر فایلی حتی یک‌بار کامیت شده باشد، نسخه آن همچنان در تاریخچه کامیت‌ها باقی می‌ماند و حذف آن از نسخه فعلی پروژه، سابقه آن را از تاریخچه گیت پاک نمی‌کند. به همین دلیل، آپلود مخزن گیت می‌تواند فایل‌ها و اطلاعات حساسی را که در گذشته کامیت شده‌اند، حتی پس از حذف از مخزن، ارسال کند.

پرسش‌های مهم همچنان بی‌پاسخ مانده‌اند

xAI با وجود اعمال این تغییرات، هنوز توضیحی درباره چند پرسش کلیدی ارائه نکرده است؛ از جمله اینکه چرا ارسال کامل مخازن گیت به‌صورت پیش‌فرض فعال بوده، این داده‌ها چه مدت ذخیره شده‌اند و این رخداد چه تعداد از کاربران را تحت تأثیر قرار داده است.

پژوهشگران در پایان تأکید کردند غیرفعال کردن استفاده از داده‌ها برای آموزش مدل، به معنای آن نیست که کدهای کاربران هرگز از محیط توسعه آن‌ها خارج نمی‌شوند. به گفته آن‌ها، توسعه‌دهندگان باید همواره بررسی کنند چه اطلاعاتی از محیط توسعه آن‌ها به سرویس‌های ابری منتقل می‌شود و تنها به غیرفعال بودن قابلیت آموزش مدل اکتفا نکنند.

منابع

دیدگاهتان را بنویسید

مطالب مرتبط