یه کلیک روی GitHub.dev و کل ریپوهای خصوصیت لو میره
خلاصهٔ کاملتر
هر توسعهدهندهای که رو یه ریپوی گیتهاب دکمهٔ نقطه (.) رو زده و ادیتور مرورگریِ VS Code یعنی GitHub.dev براش باز شده، ناخواسته یه معامله رو قبول کرده: در ازای یه محیط کدنویسی سبک، گیتهاب بیسروصدا یه توکن OAuth رو به نشست میده که نه فقط به همون ریپو، بلکه به همهٔ ریپوهایی که کاربر بهشون دسترسی داره اجازهٔ خوندن و نوشتن میده. محقق امنیتی Ammar Askar نشون داده چطور یه لینک مخرب میتونه کل این توکنو بدزده.
به گفتهٔ نویسنده اکسپلویت با یه لینک ساختگیِ GitHub.dev شروع میشه که به ریپویی اشاره میکنه که یه فایل Jupyter Notebook مخرب توشه. وقتی قربانی کلیک میکنه، GitHub.com خودکار توکن OAuth رو به نشستِ GitHub.dev میفرسته. این توکن محدودیتِ دامنه نداره و روی همهٔ ریپوها، از جمله خصوصیها، اختیار کامل داره.
تو این مقاله اومده که داخل اون نوتبوک، یه قطعهٔ مخفیِ HTML با یه هندلر onerror کدِ جاوااسکریپتِ مهاجمو داخل یه iframe از نوع webview اجرا میکنه. VS Code از همین webviewها برای نمایش پیشنمایش Markdown و ویرایش نوتبوک استفاده میکنه. ایرادِ اصلی اینه که یه webview میتونه از طریق postMessage رویدادهای کیبورد (مثل keydown) رو تو پنجرهٔ اصلیِ ادیتور شبیهسازی کنه.
اینجوری پیلود چند ثانیه صبر میکنه تا VS Code یه نوتیفیکیشنِ نصب افزونه نشون بده، بعد یه میانبر شبیهسازیشده میزنه که معادل دستور «Accept Notification Primary Action»ـه و بیسروصدا نصب یه افزونهٔ تحت کنترل مهاجمو تأیید میکنه. اون افزونه بعدش توکن OAuth رو برمیداره و با صدا زدن GitHub API همهٔ ریپوهای خصوصیِ قربانی رو لیست میکنه.
نکتهٔ مهم اینه که چطور بررسیِ اعتماد دور زده میشه. معمولاً نصب یه افزونه یه پرامپتِ «اعتماد به ناشر» میاره، ولی اکسپلویت با قابلیتِ local workspace extensions این مرحله رو کامل رد میکنه: هر افزونهای که تو پوشهٔ .vscode/extensions ریپو باشه بدون دیالوگ اعتماد نصب میشه، چون VS Code اونو جزئی از workspace میدونه نه یه دانلودِ شخص ثالث. مهاجم حتی میتونه از package.jsonـِ افزونه میانبرهای دلخواه به دستورهای VS Code وصل کنه.
به گفتهٔ نویسنده این باگ مخصوصاً خطرناکه چون GitHub.dev توکن CSRF نداره، پس هر لینکی تو اینترنت میتونه کاربرو وارد مسیر حمله کنه و یه کلیک کافیه — بدون هیچ پرامپت یا هشدار قابلدیدن. وقتی توکن بیرون کشیده شد، مهاجم همون دسترسیِ قربانی رو داره: خوندن کدِ اختصاصی، تزریق بکدور تو پروژههای خصوصی، یا برداشتِ سکرتها از فایلهای کانفیگ.
نویسنده عمداً مسیر افشای هماهنگ رو نرفته و میگه تجربهٔ قبلیش با MSRC مایکروسافت — که یه باگشو بیاعتبار و بدون نام بردن ازش وصله کرده بوده — اونو دلسرد کرده. این افشا چند هفته بعد از حادثهای میاد که خودِ گیتهاب از طریق یه افزونهٔ آلودهٔ VS Code نفوذ خورد و حدود ۳٬۸۰۰ ریپوی داخلیش دزدیده شد. تا وقتی وصله نیومده، نویسنده توصیه میکنه موقع کلیک رو لینکهای ناآشنای GitHub.dev محتاط باشین، پوشهٔ .vscode/extensions ریپوها رو قبل از باز کردن چک کنین و دسترسیِ توکنهای OAuth رو بازبینی کنین.
نکات کلیدی:
- GitHub.dev بیسروصدا یه توکن OAuth با دسترسی کامل به همهٔ ریپوهای کاربر تزریق میکنه
- یه webview میتونه با postMessage رویدادهای کیبوردِ پنجرهٔ اصلی رو شبیهسازی کنه
- قابلیت local workspace extensions باعث میشه افزونهٔ داخل .vscode/extensions بدون تأیید اعتماد نصب شه
- نبودِ توکن CSRF یعنی هر لینکی با یه کلیک میتونه حمله رو شروع کنه
- مایکروسافت باگو تأیید کرده و روی وصله کار میکنه؛ VS Code دسکتاپ تحت تأثیر نیست




