
۲ آسیبپذیری امنیتی حیاتی در هسته PHP در تاریخ ۲۱ اکتبر برطرف شدند. در این مطلب توضیح میدهیم چه اتفاقی افتاده، این موضوع چه ارتباطی با پرستاشاپ دارد و اکنون چه اقداماتی باید انجام دهید.
امروز، ۲۱ اکتبر، تیم امنیت PHP نسخههای امنیتی جدیدی منتشر کرد که دو آسیبپذیری حیاتی در خود PHP را برطرف میکنند. هر دو آسیبپذیری امتیاز CVSS برابر با ۹٫۲ دارند. از آنجا که PHP زبان برنامهنویسی زیربنای پرستاشاپ است، تقریباً تمام فروشگاههای پرستاشاپ و همچنین بسیاری از برنامههای PHP در وب تحت تأثیر این موضوع قرار میگیرند.
نیازی به وحشت نیست، اما باید اقدام کنید. راهحل، بهروزرسانی PHP است که در بیشتر موارد توسط شرکت میزبانی وب انجام میشود. در این مقاله، اتفاق رخداده، ارتباط آن با پرستاشاپ و اقدامات پیشنهادی را توضیح میدهیم.
مطمئن شوید PHP سرور فروشگاه شما به یکی از نسخههای 8.5.12، 8.4.27، 8.3.36 یا 8.2.35 بهروزرسانی شده است؛ یا بستهای را اجرا میکنید که توزیع لینوکس یا شرکت میزبانی شما با اصلاحات امنیتی مربوطه ارائه کرده است. اگر مدیریت PHP بر عهده میزبان شماست، همین امروز با پشتیبانی آن تماس بگیرید و تأییدیه نصب بهروزرسانی را درخواست کنید.
چه اتفاقی افتاده است؟
در ۲۰ اکتبر، پروژه PHP اطلاعیهای مقدماتی درباره انتشار بهروزرسانی امنیتی در روز ۲۱ اکتبر، ساعت ۱۴:۰۰ به وقت UTC (ساعت ۱۶:۰۰ به وقت پاریس) منتشر کرد. این نسخهها اکنون منتشر شدهاند و اطلاعیه رسمی امنیتی PHP نیز در دسترس است.
این دو آسیبپذیری که پژوهشگران گزارشدهنده آنها (Calif.io، Wiz، OpenAI و Quarkslab) نام php2shell را برایشان انتخاب کردهاند، عبارتاند از:
- CVE-2026-109618: هنگامی که حافظه PHP تمام میشود، ممکن است اجرای آن در شرایطی متوقف شود که دادههای داخلی درخواست هنوز بهطور کامل مقداردهی اولیه نشدهاند. در این وضعیت، فرایند پاکسازی بعدی ممکن است این دادههای ناقص را معتبر در نظر بگیرد. جزئیات آسیبپذیری در GitHub
- CVE-2026-109619: بخشی از وضعیت داخلی مربوط به یک درخواست ممکن است پس از آزاد شدن حافظه آن باقی بماند. در نتیجه، درخواست بعدی که توسط همان پردازشگر PHP مدیریت میشود، ممکن است از این وضعیت قدیمی استفاده کند. جزئیات آسیبپذیری در GitHub
به زبان ساده، هر دو آسیبپذیری به نحوه مدیریت حافظه در موتور PHP مربوط هستند. مهاجم میتواند با ارسال درخواستهای HTTP دستکاریشده، پردازشهای PHP را از کار بیندازد، به دادههای حساس دسترسی پیدا کند یا در بدترین حالت، بدون نیاز به احراز هویت، کد دلخواه خود را روی سرور اجرا کند.
طبق اعلام تیم امنیت PHP، تمام نصبهایی که درخواستهای وب را پردازش میکنند در معرض خطر هستند؛ از جمله PHP-FPM، آپاچی با mod_php، php-cgi، FrankenPHP و LiteSpeed. خطر در حالت mod_php بیشتر است، زیرا بهرهبرداری موفق از آسیبپذیری میتواند پیش از اجرای هرگونه کد برنامه رخ دهد.
این موضوع چه ارتباطی با پرستاشاپ دارد؟
این آسیبپذیریها در خود پرستاشاپ یا هیچیک از ماژولهای آن قرار ندارند؛ بلکه مربوط به محیط اجرای PHP هستند که پرستاشاپ، وردپرس، مجنتو، دروپال، برنامههای لاراول و بسیاری از نرمافزارهای دیگر را اجرا میکند.
این موضوع دو نتیجه مهم دارد:
- بهروزرسانی پرستاشاپ یا ماژولهای آن این مشکل را برطرف نمیکند. هیچ وصلهای برای نصب در پرستاشاپ وجود ندارد. تنها راهحل کامل، بهروزرسانی PHP روی سرور است.
- حمله میتواند پیش از اجرای کد پرستاشاپ رخ دهد. بنابراین، تدابیر امنیتی در سطح برنامه، چه در هسته پرستاشاپ و چه در ماژولها، قادر به جلوگیری از این حمله نیستند. حفاظت باید از طریق بهروزرسانی PHP و تا زمان انجام آن، از طریق لایه سرور یا شبکه تأمین شود.
نکته مهم: اگر نسخه پرستاشاپ سایت شما پیش از نسخه ۱.۶ یا نسخه ۱.۷ پرستاشاپ باشد جهت استفاده بدون مشکل از PHP 8.2 و بالاتر لازم است تا سایت را به نسخههای پرستاشاپ ۸.۲.۸ یا بالاتر ارتقا دهید
از آنجا که این آسیبپذیریها از راه دور و بدون احراز هویت قابل بهرهبرداری هستند، نصب بهروزرسانی PHP باید برای تمام فروشگاهداران در اولویت قرار گیرد؛ صرفنظر از نسخه پرستاشاپ مورد استفاده.
فروشگاهداران چه اقداماتی باید انجام دهند؟
۱. نسخه PHP را بررسی کنید
در پنل مدیریت پرستاشاپ، به مسیر پارامترهای پیشرفته (Advanced Parameters) > اطلاعات (Information) بروید. نسخه PHP مورد استفاده فروشگاه در بخش اطلاعات سرور نمایش داده میشود.
نسخههای اصلاحشدهای که پروژه PHP منتشر کرده است، عبارتاند از:
| شاخه PHP | نسخه اصلاحشده |
|---|---|
| PHP 8.5 | 8.5.12 |
| PHP 8.4 | 8.4.27 |
| PHP 8.3 | 8.3.36 |
| PHP 8.2 | 8.2.35 |
توجه داشته باشید که توزیعهای لینوکس اغلب اصلاحات امنیتی را به نسخههای قبلی بازمیگردانند، بدون آنکه شماره نسخه اصلی را تغییر دهند. برای مثال، ممکن است بسته PHP در دبیان یا اوبونتو همچنان شمارهای از شاخه 8.2.x را نمایش دهد، اما اصلاح امنیتی موردنیاز را در خود داشته باشد.
بنابراین، اگر شماره نسخه شما از مقادیر جدول پایینتر است، لزوماً به این معنا نیست که آسیبپذیر هستید؛ اما باید وضعیت را از مسئول مدیریت سرور خود پیگیری کنید.
۲. با شرکت میزبانی وب تماس بگیرید
اگر از میزبانی اشتراکی، میزبانی مدیریتشده یا سرویسدهنده تخصصی پرستاشاپ استفاده میکنید، معمولاً مدیریت PHP بر عهده شرکت میزبان است. توزیعهای لینوکس و ارائهدهندگان نسخههای دارای پشتیبانی بلندمدت، اصلاحات را از قبل دریافت کردهاند؛ بنابراین بسیاری از شرکتهای میزبانی معتبر در حال انتشار بهروزرسانیها هستند.
با پشتیبانی شرکت میزبان تماس بگیرید و این سؤال را مطرح کنید:
آیا اصلاحات امنیتی مربوط به آسیبپذیریهایCVE-2026-109618وCVE-2026-109619برای نسخه PHP در حال اجرای فروشگاه من اعمال شدهاند؟
درخواست کنید پاسخ را بهصورت کتبی تأیید کنند.
۳. اگر مدیریت سرور بر عهده خودتان است
اگر شما یا تیم فنیتان مدیریت سرور مجازی (VPS)، سرور اختصاصی، نمونه ابری یا کانتینرها را بر عهده دارید، اقدامات زیر را در اسرع وقت انجام دهید:
- بستههای بهروزشده PHP را از مخزن توزیع لینوکس خود یا نسخههای رسمی PHP نصب کنید.
- پس از نصب بهروزرسانی، تمام پردازشهای PHP را مجدداً راهاندازی کنید؛ از جمله پردازشهای PHP-FPM، آپاچی، LiteSpeed و پردازشگرهای FrankenPHP. نصب بهروزرسانی بدون بارگذاری نسخه جدید، از سرور محافظت نمیکند.
- اگر به مخزن rpms.remirepo.net که توسط داوطلبان نگهداری میشود وابسته هستید، توجه کنید که پروژه PHP اعلام کرده است بهروزرسانیهای این مخزن در همان روز منتشر نمیشوند. برای نصب فوری اصلاحات، استفاده از بستههای توزیع لینوکس یا ساخت PHP از کد منبع توصیه شده است.
- اگر فروشگاه را در Docker اجرا میکنید، ایمیجها را با استفاده از ایمیج پایه بهروزشده مجدداً بسازید و استقرار جدید را انجام دهید.
اگر برای بهروزرسانی PHP روی سرور عملیاتی مهارت کافی ندارید یا همکاری شما با تیم فنی قبلی به پایان رسیده است، میتوانید از طریق پرتال متخصصان پرستاشاپ (PrestaShop Experts) یک شرکت یا متخصص مستقل پیدا کنید.
۴. اگر از PHP 8.1 یا نسخههای قدیمیتر استفاده میکنید
نسخههای PHP 8.1 و قدیمیتر دیگر بهروزرسانی رسمی را از پروژه PHP دریافت نمیکنند. این وضعیت در اکوسیستم پرستاشاپ رایج است، زیرا بسیاری از فروشگاههای مبتنی بر پرستاشاپ ۱.۷ و ۸.x همچنان از PHP 7.x یا 8.1 استفاده میکنند.
پروژه PHP اصلاحات حداقلی این آسیبپذیریها را برای PHP 7.4، PHP 8.0 و PHP 8.1 نیز منتشر کرده است. بسیاری از توزیعهای لینوکس و ارائهدهندگان نسخههای دارای پشتیبانی بلندمدت نیز بستههای اصلاحشدهای برای نسخههای تحت پشتیبانی خود ارائه میکنند. از شرکت میزبان خود بپرسید که آیا نسخه PHP شما اصلاح شده است یا خیر.
اولویت فوری، دریافت نسخه اصلاحشده PHP برای نسخهای است که اکنون اجرا میکنید. ارتقای پرستاشاپ موضوعی جداگانه و بلندمدت است؛ این ارتقا راهکار فوری برای آسیبپذیریهای مذکور نیست و نباید صرفاً به دلیل این رخداد، با عجله انجام شود.
با این حال، این اتفاق یادآوری میکند که استفاده از نسخه PHP خارجشده از چرخه پشتیبانی، شما را به دریافت اصلاحات امنیتی بازگرداندهشده از سوی دیگران وابسته میکند. اگر فروشگاه شما همچنان از پرستاشاپ ۱.۷ یا ۸.x استفاده میکند، بهتر است ارتقا به پرستاشاپ ۹ را برنامهریزی کنید؛ نسخهای که از PHP 8.1 تا PHP 8.5 پشتیبانی میکند.
همچنین توجه داشته باشید که پشتیبانی PHP 8.2 در تاریخ ۳۱ دسامبر ۲۰۲۶ به پایان میرسد. بنابراین، اگر اکنون از PHP 8.2 استفاده میکنید، برای انتقال به نسخه جدیدتر نیز برنامهریزی کنید.
ارتقای عمده پرستاشاپ مستلزم بررسی سازگاری قالب و ماژولهاست. این کار را با توجه به نتایج بررسی سازگاری و محدودیتهای کسبوکار برنامهریزی کنید. اگر تیم فنی ندارید، بهتر است از یک متخصص پرستاشاپ کمک بگیرید.
اگر فعلاً امکان بهروزرسانی PHP وجود ندارد
تیم امنیت PHP تأکید کرده است که هیچ راهکار جایگزین کاملی برای رفع خطر وجود ندارد و تنها انتخاب امن، بهروزرسانی است. اقدامات زیر صرفاً میزان مواجهه با برخی مسیرهای حمله را کاهش میدهند تا زمانی که بهروزرسانی انجام شود.
این راهکارها برای تیمهای فنی، شرکتهای میزبانی و متخصصان پرستاشاپ در نظر گرفته شدهاند و باید ابتدا در محیط آزمایشی (Staging) بررسی شوند.
برای آسیبپذیری CVE-2026-109618 (مدیریت اتمام حافظه)
- محدود کردن اندازه درخواستها: مقدار
post_max_sizeرا کاهش دهید. در اطلاعیه امنیتی، مقدار8Mبرای مواقعی که نیازی به بارگذاری فایل ندارید و32Mبرای مواقعی که بارگذاری فایل موردنیاز است پیشنهاد شده است. مقدارupload_max_filesizeنیز باید کمتر از آن باشد. در پرستاشاپ، مقادیر را با نیازهای واقعی فروشگاه هماهنگ کنید؛ از جمله تصاویر محصولات، ورود گروهی کالاها، نصب ماژولها و قالبها و ماژولهای جانبی دارای قابلیت بارگذاری فایل. محدودیت بیش از حد میتواند این قابلیتها را مختل کند. - اعمال محدودیت در سطح وبسرور یا پراکسی معکوس: محدودیت اندازه درخواستها را در این لایه نیز اعمال کنید.
- تنظیم پیشرفته برای مدیران باتجربه سرور: اطلاعیه امنیتی همچنین تنظیم
memory_limit=-1از طریقphp_admin_valueدر پیکربندی PHP-FPM یا آپاچی را توضیح میدهد. این تنظیم محدودیت حافظه داخلی PHP را حذف میکند؛ بنابراین هرگز نباید بدون پیکربندی و اعمال یک محدودیت حافظه خارجی مناسب، مانند محدودیتهای کانتینر یا cgroup، اجرا شود. در غیر این صورت، یک درخواست میتواند تمام حافظه موجود را مصرف کرده و سرور را از کار بیندازد.
برای این منظور از RLIMIT_AS یا RLIMIT_DATA استفاده نکنید، زیرا این محدودیتها ممکن است شرایط آسیبپذیر را فعال کنند.
برای آسیبپذیری CVE-2026-109619 (باقی ماندن وضعیت قدیمی بین درخواستها)
- پارامتر
session.upload_progress.enabled=0را در فایلphp.ini، تنظیمات PHP-FPM یا پیکربندی سرور اعمال کنید و سپس تمام پردازشگرهای PHP را مجدداً راهاندازی کنید. برای این کار بهini_set()یا فایلهای.user.iniاتکا نکنید. - در PHP 8.5، پارامتر
fatal_error_backtraces=0را نیز تنظیم کرده و پردازشگرها را مجدداً راهاندازی کنید.
مخفی کردن خطاها با استفاده از error_reporting، display_errors یا عملگر @ کمکی نمیکند. برای مشاهده فهرست کامل و معتبر اقدامات موقت، به اطلاعیه رسمی امنیتی PHP مراجعه کنید.
استفاده از فایروال برنامههای وب (WAF)
فایروال برنامههای وب یا WAF میتواند درخواستهای مخرب را پیش از رسیدن به PHP فیلتر کند. این قابلیت در این مورد اهمیت ویژهای دارد، زیرا حمله پیش از اجرای کد برنامه رخ میدهد.
برای مثال، Cloudflare قوانین اختصاصی WAF برای آسیبپذیری php2shell را از ۲۱ اکتبر، ساعت ۰۳:۰۲ به وقت UTC، بهصورت پیشفرض در طرحهای رایگان و پولی فعال کرده است. اگر از طرح پولی Cloudflare استفاده میکنید، بررسی کنید که مجموعه قوانین مدیریتشده در حالت مسدودسازی (Block) قرار داشته باشد.
توجه داشته باشید که WAF شرکت Cloudflare تنها از ترافیکی محافظت میکند که از طریق پراکسی آن عبور میکند. اگر سرور شما از طریق آدرس IP مستقیم یا نام میزبان دیگری نیز قابل دسترسی باشد، مهاجم میتواند WAF را دور بزند. مطمئن شوید سرور اصلی فقط درخواستهای وب دریافتی از ارائهدهنده WAF شما را میپذیرد.
WAF یک لایه حفاظتی بسیار مفید در فاصله زمانی تا نصب وصله امنیتی است؛ اما مانند سایر روشهای مبتنی بر امضای حمله، ممکن است با تغییر شکل درخواستهای مخرب دور زده شود. خود Cloudflare نیز از تغییر شکل درخواستها توسط مهاجمان گزارش داده است. بنابراین، WAF جایگزین بهروزرسانی PHP نیست.
پرستاشاپ چه اقداماتی انجام میدهد؟
از زمان انتشار اطلاعیه مقدماتی، وضعیت را از نزدیک دنبال کردهایم. تیمهای فنی و زیرساخت ما پیش از انتشار نسخههای امنیتی، شرایط را زیر نظر داشتند و اکنون در چارچوب فرایند استاندارد امنیتی خود، سرویسهایمان را بررسی و بهروزرسانی میکنند.
اگر اطلاعات جدیدی به دست آوریم که نیازمند اقدام مشخصی از سوی جامعه پرستاشاپ باشد، این مقاله را بهروزرسانی خواهیم کرد.
امنیت، تلاشی مستمر است
رخدادهایی از این دست یادآوری میکنند که امنیت موضوعی نیست که یک بار آن را تنظیم کنید و برای همیشه به فراموشی بسپارید. یک فروشگاه به لایههای مختلفی وابسته است؛ از سرور و PHP گرفته تا پرستاشاپ، قالب و تمام ماژولهای نصبشده. ضعف امنیتی در هر یک از این لایهها میتواند کل فروشگاه را در معرض خطر قرار دهد، حتی اگر منشأ مشکل خود پرستاشاپ نباشد.
هوش مصنوعی اهمیت این موضوع را دوچندان کرده است: این فناوری میتواند به شناسایی سریعتر آسیبپذیریها کمک کند، اما مهاجمان نیز میتوانند پس از افشای آنها، سریعتر از آسیبپذیریها سوءاستفاده کنند. در نتیجه، فرصت موجود برای نصب اصلاحات امنیتی روزبهروز کوتاهتر میشود.
به همین دلیل، بهروزرسانیهای منظم بیش از گذشته اهمیت دارند. بهروز نگه داشتن PHP، پرستاشاپ و ماژولها را به بخشی از برنامه نگهداری فروشگاه تبدیل کنید، نه اقدامی که فقط پس از بروز مشکل انجام میشود. همچنین شرکتهای میزبانی و همکارانی را انتخاب کنید که اصلاحات امنیتی را بهسرعت اعمال میکنند.
اگر ترجیح میدهید این کار را بهتنهایی انجام ندهید، یک متخصص پرستاشاپ میتواند در تنظیم یک برنامه منظم نگهداری و بهروزرسانی به شما کمک کند.
خلاصه نهایی
آسیبپذیریهای موردبحث در PHP قرار دارند، نه در پرستاشاپ؛ بنابراین راهحل، بهروزرسانی PHP است. نسخه PHP را بررسی کنید، با شرکت میزبانی خود تماس بگیرید یا در صورت مدیریت مستقیم سرور، PHP را بهروزرسانی کرده و پردازشهای آن را مجدداً راهاندازی کنید. در صورت امکان، از WAF نیز در مقابل فروشگاه خود استفاده کنید.
بهصورت جداگانه، اگر هنوز از نسخهای از PHP یا پرستاشاپ استفاده میکنید که دوره پشتیبانی آن به پایان رسیده است، از این فرصت برای برنامهریزی ارتقا در زمان مناسب استفاده کنید.
برای پیگیری اخبار امنیتی مرتبط با اکوسیستم پرستاشاپ، منابع زیر را دنبال کنید:
از تیم امنیت PHP و پژوهشگرانی که این مشکلات را گزارش کرده و فرایند افشای هماهنگ آنها را پیش بردند، سپاسگزاریم؛ زیرا این همکاری به کل اکوسیستم PHP فرصت داد تا برای مقابله با این آسیبپذیریها آماده شود.
این مقاله به زبان انگلیسی توسط کریستیان پودمسکی (Krystian Podemski) معاون فناوری و جامعه کاربری پرستاشاپ درتاریخ ۲۱ اکتبر ۲۰۲۶ نوشته شده است.