StyleSmuggler نامی است که شرکت Sansec بر آسیبپذیری روز‑صفر جدید در Magento و Adobe Commerce گذاشته است. مهاجمان از اوایل سپتامبر با ارسال درخواستهای هدفمند قادر به اجرای کد روی سرور فروشگاههای آنلاین بدون نیاز به احراز هویت شدهاند و نمونههای فعال حمله تا کنون ثبت شدهاند.
مرور کلی
Sansec گزارش داده همهٔ نسخههای کنونی Magento Open Source از جمله 2.4.9 آسیبپذیر هستند و زنجیرهٔ کامل اکسپلویت روی نصبهای پاک 2.4.7 تا 2.4.9 بازتولید شده است. تا زمان نگارش این متن، ادوبی شناسهٔ CVE، وصله یا اصلاح موقت رسمی منتشر نکرده است.
تکنیک بهرهبرداری (StyleSmuggler)
شرح فنی
- حمله در دو مرحله انجام میشود: ابتدا مهاجم با نوشتن کد PHP در فایلی که Magento بهطور معمول تولید میکند (مثلاً فایل گزارش خطا) بدافزار را قرار میدهد، سپس با تحریک یک ایمیل سیستمی (مثلاً «یادآوری تراکنش ناموفق») باعث میشود Magento آن فایل را رندر و اجرا کند.
- Sansec تأکید کرده نیازی نیست گیرندهٔ ایمیل پیام را باز کند؛ اجرا در زمان رندر پیام رخ میدهد و حتی در صورت شکست تحویل ایمیل نیز ممکن است اکسپلویت موفق باشد.
شواهد و تحلیلهای مستقل
شرکت میزبانی و پاسخدهندهٔ حادثه Disrex Group گزارش کرده دو فروشگاه در 5 سپتامبر مورد نفوذ قرار گرفتهاند و یک مورد دیگر حمله را تجربه کرده اما نفوذ کامل رخ نداده است. باینری نصبشده یک برنامهٔ نوشتهشده با Rust است که بهصورت استاتیک و stripped تهیه شده و حدود 1.9 مگابایت برای معماریهای x86-64 و arm64 گزارش شده است.
پنهانسازی و تداوم حضور مهاجم
- ایمپلنت بهعنوان فرایند پسزمینهای با نام ماسکشده
[kworker/u:8:0]اجرا میشود تا شبیه تردهای هستهٔ لینوکس بهنظر برسد. - باینری در مسیر
~/.local/share/.gvfsd/gvfsd-userنصب میشود، یعنی زیر دایرکتوری خانگی کاربر سایت قرار میگیرد نه در روت وب سرور. - یک ورودی cron که هر 5 دقیقه ایمپلنت را ریاستارت میکند مستقیماً در
/var/spool/cron/crontabs/نوشته میشود؛ به همین دلیل لاگها تغییرات crontab را نمایش نمیدهند. - در یک نمونه، همان خط cron بیش از 1,700 بار تکرار شده و ایمپلنت ظرف یک ثانیه پس از حذف دوباره آن را بازمیافزود.
تعامل با Redis و رفتار شبکه
در یکی از نمونههای بررسیشده، ایمپلنت اتصال خروجی به سرور دانلود یا فرمان‑و‑کنترل برقرار نکرد و در عوض تا 28 اتصال داخلی به نمونهٔ Redis روی پورت 6379 ایجاد کرده بود. ایمپلنت نشستهای (session) Magento را از Redis میخواند که نشان میدهد حمله میتواند بدون ارتباط خارجی فعال بماند و از منابع داخلی سرور سوءاستفاده کند.
توصیههای فوری برای مدیران فروشگاه
پیشنهادات زیر جمعبندی اقداماتی است که باید فوراً اجرا شوند:
- در صورت امکان GraphQL را غیرفعال کنید تا زنجیرهٔ اکسپلویت موجود نتواند اجرا شود. اطلاعات پایه دربارهٔ GraphQL در ویکیپدیا قابل دسترس است.
- دسترسی به سرویسهای داخلی مانند Redis را محدود کنید و قواعد فایروال/شبکه را طوری تنظیم کنید که تنها سرویسهای مجاز بتوانند به Redis متصل شوند.
- اعتبارنامههای Magento، کلیدهای API و دسترسیهای SSH را بهسرعت بازنشانی نمایید و حسابهای مشکوک را غیرفعال کنید.
- لاگهای cron و مسیر
/var/spool/cron/crontabs/را برای ورودهای غیرعادی بررسی کنید و بهدنبال فایلها و مسیرهای مخفی مشابه~/.local/share/.gvfsd/gvfsd-userبگردید. - روی سرورها اسکن بدافزار و بررسی بستههای نصبشده را اجرا کنید و از پشتیبانهای سالم برای بازیابی استفاده نمایید.
- در صورتی که امکان استفاده از Sansec Shield یا ابزارهای مشابه وجود دارد، آنها را فعال کنید؛ در غیر این صورت مانیتورینگ لاگها و ترافیک داخلی را تشدید نمایید.
چکفهرست سرعتبخش
- غیرفعالسازی GraphQL (در صورت امکان)
- مسدودسازی دسترسی مستقیم به Redis از خارج
- بررسی و پاکسازی ورودیهای cron غیرعادی
- تعویض کلیدها و رمزعبورهای حساس
- تهیه پشتیبان و اسکن کامل سیستم
وضعیت وصلهها و انتظار برای بهروزرسانی
ادوبی انتشار بعدی بولتن امنیتی را برای 8 سپتامبر زمانبندی کرده، اما مشخص نیست آیا آن بهروزرسانی این نقص را پوشش خواهد داد. فهرست بولتنهای امنیتی Adobe Commerce در سایت ادوبی در دسترس است.
عملیات و اولویتهای تیم امنیتی
وجود حملات فعال و گزارشهای مستقل از نصب درِ پشتی نشان میدهد این نقص باید در فهرست اولویتها قرار گیرد. تیمهای امنیتی باید مانیتورینگ Redis، لاگهای cron، فرایندهای مشکوک و مسیرهای فایل سیستم مرتبط با نصبهای کاربری را در صدر بررسیها قرار دهند و برای دریافت وصلهٔ رسمی آماده باشند.
Sansec وعده داده تحلیل کامل زنجیرهٔ اکسپلویت، dropper و ایمپلنت را در بهروزرسانی بعدی منتشر کند؛ تا آن زمان قطع بردارهای حمله و واکنش سریع بهترین دفاع است.
منابع
- Sansec — اطلاعیه و تحلیل اولیه
- Adobe Commerce Security Bulletin
- Magento (Wikipedia)
- GraphQL (Wikipedia)





