ابزار خط فرمان کدنویسی گروک بیلد (Grok Build) شرکت xAI، مخازن کامل گیت (Git) شامل تاریخچه کامیت‌ها را به یک باکت گوگل کلاود استوریج (Google Cloud Storage) منتقل می‌کرد، در حالی که تنها فایل‌های مرتبط با وظیفه کدنویسی مورد نیاز مدل بودند. این مسئله توسط پژوهشگری به نام مستعار cereblab در نسخه ۰.۲.۹۳ این ابزار کشف و مستند شد.

آمار حیرت‌انگیز انتقال داده: ۲۷،۸۰۰ برابر بیش از نیاز

در تستی بر روی یک مخزن ۱۲ گیگابایتی که مدل هیچ‌یک از فایل‌های آن را نخوانده بود، ترافیک مربوط به پاسخ‌های مدل (/v1/responses) حدود ۱۹۲ کیلوبایت بود، در حالی که کانال ذخیره‌سازی (/v1/storage) بیش از ۵.۱۰ گیگابایت داده منتقل کرد. این یعنی شکافی حدود ۲۷،۸۰۰ برابر بین آنچه مدل برای استدلال نیاز داشت و آنچه از دستگاه کاربر خارج شد.

آپلودها به صورت ۷۳ تکه (chunk) حدود ۷۵ مگابایتی انجام می‌شدند، هر کدام با کد وضعیت HTTP 200 تایید می‌گردیدند. حجم انتقالی مستقیماً با اندازه کل مخزن هم‌راستا بود. باکت مقصد با نام grok-code-session-traces در باینری برنامه و در یک فایل metadata.json درج شده بود.

استثبات فایل‌ها و تاریخچه کامل: نه تنها فایل‌های خوانده‌شده

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

"چه چیزی رصدها ثابت می‌کنند؟ انتقال، پذیرش و ذخیره‌سازی. نه آموزش (training)." — cereblab

تحلیلیه исследователь ادعا نمی‌کند که xAI روی این کدها مدل آموزش داده، یا کارکنان آن را خوانده‌اند، یا فایل‌های .gitignore همیشه شامل شده‌اند. اما داده‌های ترافیک شبکه نشان می‌دهد که تمام فایل‌های ردیابی‌شده (tracked) به علاوه تاریخچه کامل آپلود شده‌اند.

خطر تصریح شده: رازها (Secrets) در فایل‌های .env بدون رداکشن

مسیر لو رفتن رازها جداگانه و ساده‌تر است. وقتی گروک بیلد یک فایل را می‌خواند، محتوای آن در نوبت مدل (model turn) قرار می‌گیرد. در تست، یک فایل .env ردیابی‌شده شامل مقادیر kanary برای API_KEY و DB_PASSWORD بدون هیچ‌گونه رداکشن (unredacted) ارسال شد. همین محتوا در یک آرشیو session_state که برای ذخیره‌سازی meant شده بود نیز قرار گرفت. هرچند رازها در تست جعلی بودند، اما رفتارِ ذخیره‌سازی اعتبارنامه‌های خوانده‌شده بدون پاک‌سازی، یک ضعف امنیتی جدی است.

تنظیم «بهبود مدل» کار نمی‌کرد: دو کنترل متفاوت

با غیرفعال بودن گزینه «Improve the model» (بهبود مدل)، گروک بیلد همچنان مخزن را آپلود می‌کرد. پاسخ سرور به درخواست /v1/settings همچنان trace_upload_enabled: true برمی‌گرداند. این سوئیچ تنها تعیین می‌کند که آیا داده‌های شما برای آموزش مدل استفاده می‌شود یا خیر؛ نه اینکه آیا کد شما دستگاه را ترک می‌کند. این دو کنترل متفاوت هستند و تنها یکی از آن‌ها برای کاربر قابل مشاهده بود.

مقایسه با رقبا: گروک بیلد ناهنجار (Outlier) بود

در مقایسه‌ای بین ابزارها توسط cereblab:

  • Claude Code و Codex هیچ باندل مخزنی نفرستادند.
  • Gemini در تست بی‌کاری (idle) چیزی نفرستاد، هرچند اجرای وظیفه واقعی قبل از اتمام به دلیل سهمیه (quota) مسدود شد.
  • Grok Build تنها ابزار بود که کل فضای کار (workspace) را به صورت انبوه جمع‌آوری و آپلود کرد.

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

واکنش xAI: قطع سمت سرور بدون اطلاع‌رسانی رسمی

در ۱۳ ژوئیه، همان باینری ۰.۲.۹۳ متوقف از ارسال درخواست‌های ذخیره‌سازی شد. cereblab شش بار مجدداً تست کرد و آپلود صفر /v1/storage رصد کرد. سرور اکنون disable_codebase_upload: true و trace_upload_enabled: false برمی‌گرداند. توسعه‌دهنده پیتر ددنه (Peter Dedene) نیز گزارش داد که همان پرچم برای حساب کاربری او فعال شده، بنابراین قطع تنها مشاهده تک‌ماشینه‌ای نبود. کلاینت تست‌شده روی ۰.۲.۹۳ باقی ماند در حالی که تنظیمات سرور تغییر کرد، بنابراین این یک سوئیچ سمت سرور (server-side switch) بود، نه تکی در باینری کلاینت.

xAI تا این لحظه از طریق یک پست در اکس (X) به جای یک مشاوره امنیتی (security advisory) یا یادداشت تغییرات (changelog) رسماً واکنش نشان داده است. اکانت @SpaceXAI اعلام کرد که تیم‌های سازمانی با política «صفر نگهداری داده» هرگز کد یا تریس‌هایشان آپلود نمی‌شوند، اما جزئیات برای کاربران عادیTransparent نیست.

دروس برای توسعه‌دهندگان: مدل ذهنی «فقط محلی» غلط است

این رویداد یادآوری می‌کند که هیچ‌کدام از ابزارهای کدنویسی ابریِ کنونی «فقط محلی» نیستند. همه فایل‌هایی را که باز می‌کنند به سرور می‌فرستند. اما جمع‌آوری انبوه کل مخزن و تاریخچه مختص گروک بیلد بود. توسعه‌دهندگان باید قبل از استفاده از چنین ابزاری، سیاست‌های نگهداری داده، مکانیزم‌های آپلود، و کنترل‌های موجود برای جلوگیری از خروج اطلاعات حساس را به دقت بررسی کنند.


منبع اصلی: گزارش فنی cereblab و پوشش خبری وسائل رسانه‌ای فناوری.