تحقیقات OpenSourceMalware نشان می‌دهد یک کمپین تایپواسکوات جدید در RubyGems با بهره‌گیری از بدافزاری ویندوزی به‌نام StubMaker توسعه‌دهندگان را هدف قرار داده است. این کمپین در ۱۵ اوت ۲۰۲۶ شناسایی شد و شامل ۱۶ بسته تایپواسکوات‌شده بود که نسخه‌های مخرب منتشر می‌کردند.

بسته‌های مخرب و روش پخش

کمپین شامل ۱۶ بسته است که نام‌های محبوب روبی را با اشتباهات تایپی تقلید کرده‌اند. فهرست بسته‌ها:

  • ubnuler
  • ubnlder
  • ri18nr
  • reaker
  • rakier
  • orakw
  • joxn
  • ise18n
  • ioe18n
  • ie18u
  • iai8n
  • i1l8n
  • i18om
  • activesupmport
  • brumdler
  • brundlef

این بسته‌ها توسط حساب‌های «mod8rz41mje» و «rbq95bwt6q» منتشر شده بودند و تا زمان گزارش اولیه از RubyGems حذف شده‌اند.

زنجیره حمله و تکنیک‌های فنی

هوک extconf.rb و لودر نوشته‌شده با Rust

عامل تهدید از فایل نصب هوک‌شده extconf.rb استفاده کرده تا بلافاصله در فرایند نصب gem کدی اجرا شود. این هوک یک لودر ۲۲ مگابایتی نوشته‌شده با Rust را از یک release در GitHub دانلود می‌کند و سپس یک payload مبتنی بر Go با نام wincfg را اجرا می‌کند.

DLL استخراج‌کننده و اهداف داده‌ای

بارِ مخرب شامل یک DLL با نام abe_payload.dll است که برای استخراج مدارک از مرورگرهای مبتنی بر Chromium طراحی شده است. مرورگرهای هدف شامل Google Chrome، Microsoft Edge، Brave، Opera، Opera GX، Vivaldi، Yandex، Avast Browser، AVG Browser و CCleaner Browser هستند. بدافزار تلاش می‌کند مکانیزم‌های محافظتی رمزنگاری مرتبط با اپلیکیشن (App-Bound Encryption - ABE) را دور بزند تا به داده‌های حساس دسترسی پیدا کند.

مواردی که StubMaker جمع‌آوری می‌کند شامل مدارک ورود ذخیره‌شده در مرورگر، داده‌های افزونه‌ها، تاریخچه مرور، شماره کارت‌های پرداخت، کیف‌پول‌های رمزارزی و عبارات بازیابی (seed phrases)، داده‌های Telegram Desktop و اطلاعات سیستم است. برای تعیین آدرس IP عمومی قربانی از سرویس api.ipify.org استفاده می‌شود.

نمایی از نمونه کدهای مخرب در هوک extconf.rb

نحوه خروج داده‌ها و سرور فرمان‌دهی

داده‌های سرقت‌شده در یک آرشیو ZIP محافظت‌شده با رمز قرار می‌گیرند و نسخه فشرده روی سرویس اشتراک‌گذاری فایل Gofile بارگذاری می‌شود. لینک دانلود سپس از طریق یک کانال HTTP غیررمزنگاری به دامنه‌ای که عامل تهدید کنترل می‌کند فرستاده می‌شود. استفاده از HTTP ساده تشخیص و جلوگیری شبکه‌ای را ساده‌تر می‌کند، اما تا زمان نصب بسته و اجرای کد مخرب، فرایند مخرب بدون هشدار ادامه می‌یابد.

سوءاستفاده از ضعف‌های طراحی RubyGems

قابلیت‌هایی در RubyGems که برای تسهیل توسعه طراحی شده‌اند، این‌جا به ابزار سوءاستفاده تبدیل شده‌اند: امکان بازپس‌گیری namespace پس از yank شدن تمام نسخه‌های یک gem و فیلد Author بدون اعتبارسنجی. مهاجمان می‌توانند پس از یانک شدن بسته نام را دوباره ثبت و نسخه مخرب جدیدی منتشر کنند و با تغییر نام نویسنده، ظاهری غیرمرتبط به بسته‌ها بدهند.

این رفتار نشان می‌دهد محافظت‌های فعلی در رجیستری‌های بسته برای مقابله با تایپواسکواتینگ کافی نیستند. برای مرور ساختار رجیستری‌ها و مفاهیم پایه می‌توانید صفحه ویکی‌پدیا درباره RubyGems را مطالعه کنید.

شماتیک زنجیره حمله StubMaker و نقاط استخراج داده

راهنمای گام‌به‌گام برای توسعه‌دهندگان

  • پیش از نصب هر بسته، مالکیت و تاریخچه انتشار را در صفحه بسته در RubyGems بررسی کنید؛ این موضوع برای بسته‌هایی با تعداد دانلود پایین اهمیت بیشتری دارد.
  • نسخه‌ها را پین کنید و به‌جای نصب latest، از نسخه‌های مشخص و تأییدشده استفاده کنید.
  • فایل‌های نصب مانند extconf.rb و پوشه‌های ext/ را با دقت بررسی کنید و اجرای بی‌گمان کد بومی را محدود کنید.
  • محیط‌های توسعه و CI را ایزوله نگه دارید؛ ابتدا بسته‌ها را در محیط تست نصب و اسکن کنید.
  • از ابزارهای تحلیل وابستگی و اسکنرهای امنیتی برای شناسایی رفتارهای مشکوک استفاده کنید.
  • در صورت شک به نصب بسته مخرب، گذرواژه‌ها، کلیدها و عبارات بازیابی را فوراً تغییر دهید و دسترسی‌ها را بررسی و محدود کنید.

سایر کمپین‌های زنجیره تأمین مرتبط

همزمان با افشای StubMaker، بازیگران تهدید چندین کمپین دیگر در اکوسیستم‌های بسته اجرا کرده‌اند؛ از جمله یک خوشه ۲۱تایی در npm که نام‌های باینری CLI را تایپواسکوات کرده و مجموعه‌ای از فورک‌های Baileys با رفتار مخرب. گزارش‌های بیشتر را می‌توان در منابع خبری امنیتی مثل The Hacker News دنبال کرد.

پیامدها و چشم‌انداز

حمله StubMaker نشان می‌دهد مهاجمان فراتر از کپی ساده نام بسته عمل می‌کنند و از ضعف‌های طراحی رجیستری برای بازنشر بسته‌های یانک‌شده سوءاستفاده می‌کنند. تقویت سیاست‌های انتشار، اعتبارسنجی فیلدهای متادیتا و مکانیزم‌های احراز هویت مالکیت بسته، از اقدامات کلیدی برای کاهش این تهدیدها است.

تا زمانی که اکوسیستم‌های متن‌باز مقاوم نشوند، بهترین دفاع احتیاط در نصب وابستگی‌ها، ایزوله کردن محیط‌ها و بررسی دقیق کدهای نصب‌شونده است. نظارت فعال روی رجیستری‌ها و به‌روزرسانی سریع پروتکل‌های انتشار می‌تواند از تکرار کمپین‌هایی مانند StubMaker جلوگیری کند.