نگاهی به شبکهی کوپایلوت با یه پروکسی MITM
خلاصهٔ کاملتر
نویسنده این مقاله برای فهمیدن اینکه اپهای مبتنی بر Electron مثل VS Code و GitHub Copilot پشت صحنه چه ترافیکی رد و بدل میکنن، ترافیک شبکهشونو از پشت یه پروکسی MITM به اسم mitmproxy رد کرد. چون سورسکد Copilot و خیلی از این اپها بستهست، بهجای خوندن کد رفت سراغ رصد مستقیم درخواستها.
به گفتهی نویسنده، قبل از اینکه کاربر حتی یه کلید بزنه، Copilot یه سری درخواست برای احراز هویت OAuth، بررسی مجوزها و کشف مدلهای در دسترس میفرسته (شامل یه اندپوینت جدا برای مدلهای ایجنتیک). بعد از هر پیام هم یه درخواست به /models/session/intent میره که قصد کاربر رو تشخیص میده و مدل مناسب رو انتخاب میکنه.
نویسنده یه سکرت ساختگی تو فایل .env گذاشت و دید ویرایش خود اون فایل هیچ درخواستی نمیفرسته، اما وقتی تو یه فایل کاملاً بیربط دیگه شروع به تایپ کرد، محتوای همون خط .env بهعنوان بخشی از «فایلهای اخیراً ویرایششده» تو context درخواست تکمیل کد فرستاده شد.
جالبترین کشف نویسنده یه دیتابیس SQLite محلی به اسم session-store.db بود که Copilot ازش برای پاسخ به سوالایی مثل «این هفته چیکار کردم» استفاده میکنه. با بررسی کد سورس VS Code هم تایید شد که پیامهای کاربر و پاسخهای مدل، بدون هیچ رمزگذاری یا پاکسازی سکرت، بهصورت متن ساده رو دیسک ذخیره میشن:
INSERT INTO turns (session_id, turn_index, user_message, assistant_response, timestamp)
VALUES (?, ?, ?, ?, ?)نویسنده نتیجه میگیره که تفاوت اصلی ابزارهای کدنویسی هوش مصنوعی داره از خود مدل به سمت نحوهی جمعآوری و مدیریت context جابهجا میشه؛ هرچی context بیشتری جمع بشه، هم کیفیت کار بهتر میشه و هم نگرانیهای حریم خصوصی بیشتر.
نکات کلیدی:
- Copilot قبل از هر پیام درخواستهای احراز هویت و تشخیص قصد کاربر میفرسته
- تکمیل کدها میتونه محتوای فایلهای دیگه، حتی خطهای ویرایشنشده رو بهعنوان context بفرسته
- تاریخچهی چتها تو یه دیتابیس SQLite محلی و بدون رمزگذاری ذخیره میشه
- کنترل دسترسی به فایلهای حساس مثل .env فقط تو پلنهای Business/Enterprise وجود داره




