PHP2Shell: آپدیت کردی، ولی آیا قبلش هک شدی؟
خلاصهٔ کاملتر
PHP برای PHP2Shell وصله منتشر کرده؛ دو باگ use-after-free (یعنی استفاده از حافظهای که قبلاً آزاد شده) با شناسههای CVE-2026-109618 و CVE-2026-109619. هر دو امتیاز CVSS برابر ۹.۲ دارن، به لاگین نیاز ندارن و با یه درخواست multipart/form-data فعال میشن که PHP قبل از اجرای حتی یه خط از کد برنامهت پارسش میکنه. کد آسیبپذیر از PHP 5.4 وجود داشته و هم mod_php هم PHP-FPM با تنظیمات پیشفرض درگیرن.
نسخههای وصلهشده 8.5.12، 8.4.27، 8.3.36 و 8.2.35 هستن. نسخهی 8.1 و قدیمیتر پشتیبانی نمیشن و برای 7.4 تا 8.1 فقط وصلهی سورس منتشر شده، نه پکیج رسمی. نکتهی نگرانکننده اینه که Cloudflare اولین حملهها رو ساعت 07:43 UTC دیده، یعنی بیشتر از شش ساعت قبل از انتشار وصله تو ساعت 14:00. به قول نویسنده، وصله در رو میبنده ولی کسی که قبلاً اومده تو رو بیرون نمیکنه.
این باگ دو جور سوءاستفاده داره. اولی نشت حافظهست: حافظهی worker ممکنه تو کوکی PHPSESSID برگرده و توش رمز، توکن سشن، کلید API یا حتی کلید خصوصی TLS باشه. این تقریباً هیچ ردی روی دیسک نمیذاره. دومی اجرای کد از راه دوره که معمولاً رد به جا میذاره: فایلهای تغییرکرده، cron جدید، کلید SSH یا اتصالهای خروجی عجیب. بهترین نشونهی فعلی یه عالمه خطای Allowed memory size exhausted تو لاگ FPM حدود ۲۱ اکتبره.
نویسنده یه اسکریپت bash فقطخواندنی ساخته که هیچ چیزی رو تغییر نمیده و فقط لاگها رو میخونه و فایلها رو لیست میکنه. خودش تأکید میکنه این یه بررسی اولیهست، نه تحلیل جرمشناسی کامل؛ مهاجمی که ردش رو پاک کرده میتونه ازش قایم بشه. نویسنده توصیه میکنه اسکریپت رو اول دانلود کنید و بخونید، بعد اجرا کنید، نه اینکه مستقیم از اینترنت بفرستیدش به شل با دسترسی root.
اسکریپت پنج بخش رو بررسی میکنه: نسخهی باینریهای CLI و مخصوصاً FPM، تعداد خطاهای کمبود حافظه تو لاگها (حتی فایلهای .gz)، پرترافیکترین مسیرهای POST تو ۲۱ اکتبر، فایلهای PHP غیرمنتظره تو public/ یا storage/ همراه با git status، و نشونههای ماندگاری مثل cron، authorized_keys و لاگینهای SSH. نویسنده میگه هشدار روی سرور عمومی طبیعیه (مثلاً اسکنرهای اینترنتی یا لاگین خود Forge) و چیزی که باید دنبالش باشید یه FLAG واقعیه.
چند نکتهی دیگه هم هست: پکیجهای رسمی Debian، Ubuntu و RHEL معمولاً وصله رو بدون عوض کردن شمارهی نسخه اعمال میکنن، پس باید changelog رو دنبال شمارهی CVE بگردید. اگه پشت Cloudflare هستید، مطمئن بشید سرور اصلی مستقیم در دسترس نیست. در آخر، چون نشت حافظه قابل اثبات نیست، نویسنده توصیه میکنه APP_KEY، رمز دیتابیس، کلیدهای API و کلید TLS رو عوض کنید و کلید قبلی رو تو APP_PREVIOUS_KEYS بذارید تا دادههای رمزشده و سشنها خراب نشن.
نکات کلیدی:
- PHP2Shell شامل دو باگ با CVSS ۹.۲ هست که بدون لاگین و از PHP 5.4 به بعد قابل سوءاستفادهان.
- نسخههای امن: 8.5.12، 8.4.27، 8.3.36 و 8.2.35.
- حملهها از 07:43 UTC شروع شدن، بیشتر از شش ساعت قبل از وصله.
- نشت حافظه از طریق کوکی PHPSESSID تقریباً ردی روی دیسک نمیذاره.
- بعد از آپدیت، APP_KEY و بقیهی رمزها رو عوض کنید و کلید قبلی رو تو APP_PREVIOUS_KEYS بذارید.




