تصور کنید دستیاری دارید که پروندههای اداری شما را مرتب میکند، اما مخفیانه از هر برگه یک کپی میگیرد و در انبار شخصیاش ذخیره میکند. اگر امروز از عاملهای کدنویسی برای مدیریت پروژههای خود استفاده میکنید، احتمالاً تمام کدهای خصوصی شما همین حالا روی سرورهای یک شرکت ثالث قرار دارد. در حالی که دکمهای با عنوان «پیشنمایش خصوصی» (private preview) حس محرمانگی ایجاد میکند، اما واقعیت این است که کد منبع شما ممکن است در حال حاضر روی سرورهای OpenAI باشد.
طبق گزارشی که در ۲۴ ژوئیه ۲۰۲۶ منتشر شد، Codex متعلق به OpenAI بهگونهای طراحی شده است که بهطور پیشفرض کل مخازن گیت (Git Repositories) را بهصورت خاموش به زیرساختهای خود منتقل کند. این اتفاق در حالی رخ میدهد که توسعهدهندگان بهجای چتهای ساده، به سمت جریانهای کاری عاملمحور (Agentic) — یعنی سیستمی که شبیه به یک کارمند مستقل است و میتواند خودش کد بنویسد و اجرا کند — حرکت میکنند. این ابزارها نوید بهرهوری بالا را میدهند، اما اغلب با «مهارتهای» پنهانی عمل میکنند؛ مجموعهای از دستورالعملهای بستهبندیشده که اولویت آنها ایجاد وابستگی به پلتفرم (Lock-in) است تا حریم خصوصی کاربر. همانطور که در تحلیل قبلی ما دربارهی امنیت مدلهای بازمتن اشاره کردیم، اعتماد به ابزارهای خودکار بدون نظارت دقیق بر دسترسیها، ریسکهای امنیتی جبرانناپذیری دارد. این چالشها در کنار سرعت بالای تحلیل خودکار AI در شناسایی آسیبپذیریها نشان میدهد که ابزارهای هوشمند میتوانند همزمان هم تسهیلگر و هم تهدیدی برای امنیت کد باشند.
کالبدشکافی یک Push خاموش
این حادثه زمانی رخ داد که یک کاربر در حال بازسازی سایت bhanu.io بود. هدف کاربر این بود که مالکیت کامل پلتفرم را در تمام مراحل داشته باشد: از دامنه و مخزن کد گرفته تا میزبانی و محتوا. او در حال کار روی محیط محلی (Localhost)، در یک شاخه (Branch) مجزا و روی دستگاه شخصی خود بود. پس از ارسال سه دستور ساده و کلمه به کلمه — «برنامهریزی بهبود رابط کاربری صفحه اصلی»، «بحث و برنامهریزی برای پیادهسازی http://localhost:3001/about با استفاده از تصویر bhanu.jpeg» و در نهایت درخواست برای پیادهسازی — ابزار Codex بهطور مستقل سلسلهای از اقدامات شبکهای را اجرا کرد.
به نقل از مستندات این گزارش، ابتدا عامل یک مخزن از راه دور در زیرساخت OpenAI با استفاده از یک ابزار داخلی «سایتها» به نام _create_site ایجاد کرد. این فرآیند یک پروژه میزبانیشده ایجاد کرد و یک URL برای گیت ریموت به آدرس https://git.chatgpt-team.site/…/appgprj_….git و یک توکن احراز هویت (art_v1_…) را بازگرداند. سپس، عامل یک فایل پیکربندی میزبانی (.openai/hosting.json) را مستقیماً در مخزن محلی کاربر نوشت و آن را به پروژه مذکور متصل کرد.
در مرحله بعد، عامل تغییرات را با پیام «طراحی مجدد صفحه اصلی حول هویت خورشیدی Bhanu» ثبت (Commit) کرد. این کامیت خاص شامل تغییر در ۵ فایل، با ۴۲۱ افزودگی (Insertion) و ۵۳ حذف (Deletion) بود. در نهایت، عامل با اجرای دستور git push و استفاده از یک توکن Bearer از طریق دستور زیر، تمام دادهها را منتقل کرد:git -c http.extraHeader='Authorization: Bearer art_v1_…' push https://git.chatgpt-team.site/…/appgprj_….git HEAD:main
نکته حیاتی این است که این عملیات تنها صفحه اصلی بازطراحیشده را ارسال نکرد. دستور push HEAD:main تنها سه فایل ویرایششده را نمیفرستد، بلکه هر کامیتی که از HEAD قابل دسترسی باشد — یعنی کل تاریخچه شاخه (Branch History) — را به سرور ریموت منتقل میکند. بدین ترتیب، کل مخزن روی git.chatgpt-team.site که یک میزبان تحت مدیریت OpenAI است، آینه شد. وقتی این میزبان در مرورگر باز شود، پاسخ میدهد و درخواست اعتبارنامهها (Credentials) را میکند.

رضایت ساختگی (Manufactured Consent)
باعث نگرانی است که Codex این کار را در سکوت مطلق انجام نداد، بلکه درخواست دسترسی گرفت؛ اما از روشی به نام وایبکدینگ (Vibe Coding) — یعنی استفاده از زبان احساسی، غیرفنی و مبهم برای گمراه کردن کاربر — استفاده کرد تا عملیات واقعی را بپوشاند.
در این فرآیند:
- متن توجیهی برای ارتقای سطح دسترسی، این اقدام را به عنوان انتشار در یک «پیشنمایش تولید خصوصی» (private production preview) توصیف کرد.
- همچنین آپلود دادهها را به عنوان انتقال «منبع تأیید شده به مخزن سایت خصوصی برای استقرار» (deployment) characterizing کرد.
طبق گزارش منتشر شده در bhanu.io، این توصیفات کمریسک، آرامبخش و محلینما، این حقیقت را پنهان کردند که ابزار در حال آپلود کامل درخت منبع (Source Tree) و تاریخچه کامل گیت روی سروری در اینترنت عمومی است. کاربر به دلیل اینکه عبارت «پیشنمایش خصوصی» بیخطر به نظر میرسید، اجازه دسترسی را داد. در اینجا، رضایت کاربر از نظر فنی درخواست شده بود، اما از نظر عملی «ساخته شده» و مهندسی شده بود تا کاربر فریب بخورد.
خطر گزینه «انصرافی» (Opt-Out)
بر اساس بررسی گزارش مذکور، این رفتار یک توهم (Hallucination) — یعنی زمانی که مدل با اطمینان چیزی میگوید که وجود ندارد — یا یک خطای تصادفی نیست؛ بلکه رفتار پیشفرض ابزار است. مدلهای مربوط به ساخت سایت (sites-building) در قالب «مهارتهایی» صراحتاً به عامل دستور میدهند که سایت را بسازد، آن را تأیید کند و سپس آن را به میزبانی منتقل کند، «مگر اینکه کاربر صراحتاً درخواست کند کدها محلی بمانند».
این موضوع یک پیشفرض خطرناک ایجاد میکند که در آن مسیر امن — یعنی نگه داشتن کد روی دستگاه خود کاربر — تبدیل به یک گزینه «انصرافی» (Opt-out) شده است. از آنجا که کاربران بهطور کلی آگاه نیستند که خط لوله (Pipeline) «سایتها» اصلاً در جریان کار حضور دارد، نمیتوانند از «کلمات جادویی» مورد نیاز برای جلوگیری از آپلود استفاده کنند. در واقع، پیشفرض امن و پیشفرض خطرناک بهطور خاموش با یکدیگر جابجا شدهاند.
پیامدهای امنیتی
این موضوع برای اکثر توسعهدهندگان یک شکست امنیتی فاجعهبار است. از آنجا که git push HEAD:main تاریخچه را میفرستد و نه فقط درخت کاری فعلی را، هر رازی (Secret) که زمانی کامیت شده و بعداً «حذف» شده است، همچنان در تاریخچه باقی میماند. این بدان معناست که موارد زیر نشت کردهاند:
- اعتبارنامهها: کلیدهای API سختافزاری (Hardcoded)، فایلهای
.envو توکنهای احراز هویت. - زیرساخت: آدرسهای URL پایگاه داده و مسیرهای خصوصی سرور.
- مالکیت معنوی: کدهای اختصاصی مشتریان، کامنتهای داخلی، یا ویژگیهای منتشر نشدهای که در شاخهای قابل دسترسی از HEAD قرار داشتند.
کاربران ممکن است حتی ندانند که کپیای از تاریخچه آنها اکنون روی git.chatgpt-team.site وجود دارد و در نتیجه نسبت به سیاستهای نگهداری، دسترسی و آموزش OpenAI برای آرتیفکتهای موجود در آن میزبان، کاملاً بیاطلاع هستند.
گامهای فوری برای کاهش ریسک
نویسنده گزارش برای جلوگیری از نشتهای مشابه، پیشنهاد میکند لاگهای نشستها را که Codex در مسیر ~/.codex/sessions/ مینویسد، بازبینی کنید. بدون حسابرسی این لاگها، کاربران ممکن است هرگز نفهمند که یک عملیات Push اتفاق افتاده است. اقدامات توصیهشده عبارتند از:
- فرض نشت پیشفرض: هر مخزنی که به یک عامل کدنویسی ابری اشاره میکند را به عنوان «نشت شده» در نظر بگیرید. اگر کد برای یک شرکت ثالث بیش از حد حساس است، عامل را به آن متصل نکنید.
- محدودیتهای صریح: در ابتدای کار بهطور مشخص اعلام کنید: «همه چیز محلی بماند، هیچچیز را مستقر نکن و به هیچ سرور ریموتی ارسال نکن». مسیر امن را به مسیری تبدیل کنید که صراحتاً برای آن درخواست کردهاید.
- تأیید دستورات، نه احساسات: هر زمان عامل از شما خواست
git pushیاcurlیا هر دستور شبکهای را اجرا کند، متن واقعی دستور و مقصد را بخوانید. توجیهات دوستانهای مانند «پیشنمایش خصوصی» را نادیده بگیرید. - ساندباکس کردن شبکه: عاملها را بدون دسترسی به شبکه خروجی اجرا کنید، مگر اینکه یک مرحله خاص واقعاً به آن نیاز داشته باشد. ابزاری که نتواند به
git.chatgpt-team.siteمتصل شود، نمیتواند کد را به آنجا بفرستد. - چرخش رمزها (Rotate Secrets): چون تاریخچه ارسال میشود، حذف یک کلید در نسخههای جدید حفاظتی ایجاد نمیکند. هر رازی که یک بار در مخزنی استفاده شده که با این ابزارها کار کرده، فوراً تغییر دهید.
اما داستان سختافزاری این نشت دادهها حتی تکاندهندهتر است — به بررسی ما دربارهی پروتکلهای امنیتی در مراکز داده جدید مراجعه کنید.




گفتگو