آسیب پذیری امنیتی بحرانی در ماژولهای پرستاشاپ
این مقاله از سایت رسمی پرستاشاپ ترجمه شده است. برای مطالعه مقاله انگلیسی اینجا را کلیک کنید.
هکرها از یک آسیبپذیری در یک کتابخانه که توسط ماژولها استفاده میشود، میتوانند کنترل سایتهای پرستاشاپی را به دست بگیرند. برای جزئیات بیشتر، لطفا مقاله را به صورت کامل مطالعه کنید.
چه اتفاقی میافتد؟
ما متوجه شدیم که هکرها با استفاده از یک آسیب پذیری در PHPUnit میتوانند کدهای خود را در سرورهای پرستاشاپی اجرا و سواستفاده کنند. این مشکل در PHPUnit 7.5.19 و 8.5.1 حل شده است و با توجه به اطلاعات ما تمام نسخههای پیشین، حداقل با یک سری تنظیمات خاص سرور، این مشکل را دارند.
چطور متوجه شویم فروشگاه ما تحتتاثیر است؟
با FTP یا دسترسی shell به سرور/هاست خود متصل شوید و دنبال پوشه vendor در روت سایت و همچنین در هر کدام از ماژولهایتان باشید:
- <prestashop_directory>/vendor
- <prestashop_directory>/modules/<module_name>/vendor
اگر پوشه ای به اسم phpunit در مسیرهای بالا وجود داشته باشد، شما هم تحتتاثیر این مشکل هستید.
اگر شما هم تحتتاثیر هستید این کار را انجام بدید
PHPUnit یک کتابخانه به منظور توسعه (development) است و برای عملکرد نرمال سایت به آن نیازی ندارید؛ در نتیجه میتوانید تمام پوشههای “phpunit” که در مسیرهای بالا پیدا کردید، را حذف کنید.
در یک سرور لینوکسی به سرعت میتوانید با استفاده از دستور bash از پوشه modules/ فروشگاه، این کار را انجام دهید.
find . -type d -name "phpunit" -exec rm -rf {} \;
این دستور به دسترسی کاربری متناسب نیاز دارد.
همچنین میتوانید تمام پوشههای “phpunit” را به صورت دستی از طریق FTP حذف کنید.
آگاه باشید که حتی اگر این پاکسازی را انجام دهید، فروشگاه شما ممکن است تا الان مورد حمله قرار گرفته باشد.
با توجه به آمارهای ما، بیشتر هکرها یا فایلهای جدید را در filesystem قرار میدهند و یا فایلهای موجود، مثل AdminLoginController.php را ویرایش میکنند.
در اینجا یک لیست غیرجامع از فایلهای مخرب که ممکن است فروشگاه را به خطر بیاندازد، وجود دارد:
نام فایل | md5 |
XsamXadoo_Bot.php | 0890e346482060a1c7d2ee33c2ee0415 یا b2abcadb37fdf9fb666f10c18a9d30ee |
XsamXadoo_deface.php | 05fb708c3820d41c95e34f0a243b395e |
0x666.php | edec4c4185ac2bdb239cdf6e970652e3 |
f.php | 45245b40556d339d498aa0570a919845 |
شما میتوانید بررسی کنید که فایلهای هسته پرستاشاپ ویرایش شدهاند یا خیر. برای این کار در پنل مدیریت پرستاشاپ وارد صفحه «پارامترهای یپشرفته > اطلاعات» شوید و در پایین صفحه «لیست فایلهای ویرایش شده» را چک کنید. با این حال این بررسی ممکن است کافی نباشد زیرا ممکن است سایت شما به گونه دیگری به خطر افتاده باشد.
اگر فروشگاه شما به خطر افتاده است یا فکر میکنید که به خطر افتاده است:
- با دقت چک کنید هکر فایلی روی سرور قرار نداده باشد. مثلا یک فایل مخفی در بین فایلهای فروشگاه. برای این کار پیشنهاد میکنیم با یک متخصص در ارتباط باشید.
- از تمام کاربران سایتتان بخواهید که رمزعبورشان را تغییر دهند، این مورد نه تنها شامل کارمندان بخش مدیریت میشود، بلکه مشتریان در بخش فروشگاهی را هم شامل میشود. مطمئن شوید هیچکدام از فایلهای مذکور در فروشگاهتان باقی نماند.
اگر فکر میکنید که فروشگاهتان هک شده است، با یک متخصص در ارتباط باشید.
ماژولهای پرستاشاپی که تحتتاثیر این آسیبپذیری هستند:
بعضی از ماژولها تحتتاثیر قرار گرفتهاند:
- ماژول One Click Upgrade (autoupgrade): نسخه 4.0 بتا و بالاتر
- ماژول Cart Abandonment Pro (pscartabandonmentpro): نسخه 2.0.1~2.0.2
- ماژول Faceted Search (ps_facetedsearch): نسخه 2.2.1~3.0.0
- ماژول Merchant Expertise (gamification): نسخه 2.1.0 و بالاتر
- ماژول PrestaShop Checkout (ps_checkout): نسخه 1.0.8~1.0.9
ما (پرستاشاپ) نسخه آپدیتشده این ماژولها را منتشر کردیم که کاملا کتابخانههای مرتبط را از ماژول حذف میکند:
- One Click upgrade: نسخه 4.10.1
- Cart Abandonment Pro: نسخه 2.0.10
- Faceted Search: نسخه 3.4.1
- Merchant Expertise: نسخه 2.3.2
- PrestaShop Checkout: نسخه 1.2.9
توجه داشته باشید که اگر در گذشته نسخه تحت تأثیر این ماژولها را نصب کردهاید، ممکن است فایلهای PHPUnit هنوز در سرور شما وجود داشته باشند. فقط این نسخههای تازه منتشر شده بررسی میکنند که PHPUnit دیگر در دایرکتوری vendor خودشان وجود نداشته باشد.
ماژول و قالبهای ساخته شده با دیگر vendorها نیز ممکن است آسیب پذیر باشند. حتما اخبار بروزرسانی ماژول و قالبها را دنبال کنید.
پی نوشت:
ما از پرستاشاپ پرسیدیم که آیا این مشکل فقط برای پرستاشاپ ۱.۷ رخ داده است؟
جواب پرستاشاپ:
در فروشگاهی که با پرستاشاپ 1.6 ساخته شده است هم اگر ماژولی دایرکتوری phpunit را داشته باشد، میتواند آسیب پذیر باشد.
در پرستاشاپ 1.6، نیازی به چک کردن پوشه vendor در روت سایت ندارید، اما نیاز است پوشهی تمام ماژولها را به آدرس modules/module_name/vendor چک کنید. (پوشه modules در روت پرستاشاپ، سپس نام ماژول و در نهایت پوشه vendor در دایرکتوری ماژول)
ممنون از این که اطلاع رسانی کردید 🙂
سلام ممنون از اطلاع رسانی و ترجمه
در پوشه vendor پوشه ای با نام phpunit وجود ندارد اما در زیر شاخه های دیگر پوشه vendor فایل هایی با نام وفرمت زیر وجود دارد
phpunit.xml.dist
آیا این فایل ها باید پاک شوند یا خیر؟
خیر این فایل و حتی پوشه phpunit در دیگر پوشهها امن هستند و نباید پاک بشن. پوشه phpunit «فقط» در دو مسیر زیر نباید وجود داشته باشه:
1. روت سایت > پوشه vendor
2. روت سایت > دایرکتوری modules > «نام ماژول» > پوشه vendor