نسخهای آلوده از یکی از پرطرفدارترین افزونههای برنامهنویسی با هوش مصنوعی، از مسیر فروشگاه خودِ Cursor به دست برنامهنویسان رسید. این شرکت روز ۲۹ اکتبر فاش کرد که نسخهٔ 2.1.313 افزونهٔ Anthropic.claude-code در فروشگاه افزونههای VS Code آن، بستهای مخرب بوده که Anthropic آن را نساخته است و حداکثر ۵۰۰۰ کاربر آن را نصب یا به آن بهروزرسانی کردهاند. Cursor میگوید با تکتک این کاربران مستقیماً تماس میگیرد.
به گفتهٔ Cursor، بستهٔ دستکاریشده تقریباً از ساعت ۲:۲۷ بامداد تا ۱:۳۵ بعدازظهر به وقت اقیانوس آرام در دسترس بود. این بسته به محض بارگذاری، نام دستگاه و کاربر، سیستمعامل، معماری پردازنده، پوشههای خانگی و کاری، نام متغیرهای محیطی، نشانی ایمیل تنظیمشده در Git و نشانی IP عمومی را گردآوری میکرد. سپس تلاش میکرد کلیدی در اختیار مهاجم را به فایل authorized_keys بیفزاید، سرویس SSH محلی را روشن کند و یک تونل SSH معکوس به سروری دوردست باز کند؛ هر دقیقه یک بار دوباره تلاش میکرد و وضعیت خود را از راه HTTP به نقطهٔ دریافتی روی درگاه 8099 گزارش میداد.
این بدافزار برای ماندن پس از راهاندازی دوباره هم برنامه داشت. در macOS یک LaunchAgent با نامی شبیه اجزای اپل ثبت میکرد و در Windows میکوشید وظیفهای زمانبندیشده با سطح دسترسی SYSTEM بسازد و اگر نمیشد، اسکریپتی در پوشهٔ Startup میگذاشت. گروه OpenSourceMalware که بسته را جداگانه بررسی کرد، یک بارگذار ۶۶ خطی یافت که پیش از کد اصلی در ابتدای فایل JavaScript افزونه جاسازی شده بود. چون این بخش همان لحظهٔ بارگذاری ماژول اجرا میشد، قربانی حتی لازم نبود گفتوگویی با Claude باز کند. پژوهشگران شاخهای برای Linux هم پیدا کردند که هنگام راهاندازی ورودیای به crontab میافزاید و یادآور شدند که در مرحلهٔ شناسایی، نام حداکثر ۴۰ متغیر محیطی شبیه کلید، توکن یا رمز ثبت میشد، نه مقدار آنها.
دامنهٔ آسیب محدود بود. به گفتهٔ Cursor، روشن کردن سرویس SSH به دسترسی مدیر سیستم نیاز دارد که افزونه در بیشتر رایانههای macOS و Windows ندارد و خطاهای خود کد مخرب هم باعث میشد این گام جز در پیکربندیهای غیرعادی شکست بخورد؛ بنابراین مهاجم معمولاً نمیتوانست از راه تونل وارد شود. با این حال، کلید ناخواسته، اسکریپتهای ماندگاری و گزارش مشخصات دستگاه نوشته یا ارسال شدند. Cursor افزود که با همکاری ارائهدهندهٔ میزبانی، سرور مهاجم را از دسترس خارج کرده و به این ترتیب هم تونل و هم ارسال اطلاعات از کار افتاده است.
واکنش Cursor به حذف همان یک نسخه محدود نماند. شرکت میگوید توزیع را متوقف کرد، از سر احتیاط کل فروشگاه افزونههای VS Code را خاموش کرد، دسترسیها را حسابرسی کرد، مطمئن شد افزونهٔ دیگری دستکاری نشده، کلیدهایش را عوض کرد و فروشگاه را پیش از بازگشایی از نو ساخت. اما توضیح نداده که مهاجم چگونه توانست بستهٔ تغییریافته را منتشر کند. خبرگزاری Reuters در گزارش خود Cursor را شرکتی متعلق به SpaceX معرفی کرد و نوشت Anthropic بلافاصله به درخواست اظهارنظر پاسخ نداد.
به کسانی که در آن بازهٔ زمانی نسخهٔ 2.1.313 را از فروشگاه Cursor نصب کردهاند توصیه شده در فایل authorized_keys به دنبال کلیدی با برچسب svc-telemetry بگردند، هر دستگاهی را که نشانهای از بدافزار دارد جدا کنند، اسکریپتهای پاکسازی Cursor را اجرا کنند و اعتبارنامهها را از یک سیستم مطمئن عوض کنند. Cursor هشدار داده که حذف افزونه کافی نیست، چون اسکریپتهای ماندگاری مستقل باقی میمانند، و گردآوری محدود دادهها احتمال سرقت بعدی اعتبارنامهها از راه درِ پشتی را منتفی نمیکند.
گزارشهای عمومی اولیه دربارهٔ منشأ نسخهٔ آلوده همنظر نبودند. شرکت امنیتی Phorion آن را نفوذ به افزونه در Open VSX توصیف کرد، اما OpenSourceMalware پس از تماس Cursor تحلیل خود را اصلاح کرد و نوشت منشأ ماجرا فروشگاه Cursor بوده و نسخهٔ Open VSX، بستهٔ npm و نسخهٔ فروشگاه مایکروسافت آلوده نبودهاند. خود Cursor میگوید شاهدی در دست ندارد که نسخههای دیگر یا توزیع رسمی آسیب دیده باشند.