آسیبپذیری بحرانی php۲shell در هسته PHP؛ زنگ خطر برای سرورهای وب
آسیبپذیری php۲shell: در تاریخ ۲۸ مهر ۱۴۰۵ (۲۰ اکتبر ۲۰۲۶)، جزئیات دو نقص فنی بسیار خطرناک در هسته اصلی زبان برنامهنویسی PHP فاش شد.
خلاصه
آسیبپذیریهای جدید هسته PHP که با نام php۲shell شناخته میشوند، به مهاجمان اجازه میدهند بدون نیاز به احراز هویت، کدهای مخرب خود را روی سرور اجرا کنند. این نقص فنی ناشی از مدیریت نادرست حافظه در بخش ردیابی پیشرفت آپلود فایل (RFC۱۸۶۷) است. با توجه به امتیاز ۹.۲ از ۱۰ در معیار CVSS، مدیران سیستم باید بلافاصله با تغییر در فایل php.ini یا بهروزرسانی نسخههای پشتیبانیشده، از نفوذ به زیرساخت خود جلوگیری کنند.
ماجرای حفره امنیتی php۲shell چیست؟
در تاریخ ۲۸ مهر ۱۴۰۵ (۲۰ اکتبر ۲۰۲۶)، جزئیات دو نقص فنی بسیار خطرناک در هسته اصلی زبان برنامهنویسی PHP فاش شد. این آسیبپذیریها که با نامهای CVE-۲۰۲۶-۱۰۹۶۱۸ و CVE-۲۰۲۶-۱۰۹۶۱۹ رهگیری میشوند، مستقیماً بر نحوه پردازش درخواستهای ارسالی به سرور تأثیر میگذارند. مهاجم میتواند با ارسال یک درخواست POST دستکاریشده، کنترل کامل وبسرور را در دست بگیرد.
این مشکل در سطح «هسته» (Core) رخ میدهد، به این معنی که فرقی نمیکند شما از وردپرس استفاده میکنید یا یک سیستم مدیریت محتوای اختصاصی؛ اگر نسخه PHP سرور شما آسیبپذیر باشد و تنظیمات پیشفرض تغییر نکرده باشد، در معرض خطر هستید. ابزارهای هوش مصنوعی مانند هوش مصنوعی نهال میتوانند در تحلیل سریع فایلهای لاگ برای شناسایی الگوهای مشکوک به مدیران امنیت کمک کنند.
تحلیل فنی؛ چگونه حافظه سرور فریب میخورد؟
ریشه این بحران در بخش ۰ قرار دارد که مسئول ردیابی میزان آپلود شدن یک فایل است. در این فرآیند، PHP دو اشارهگر خام را در ساختارهای دادهای خود ذخیره میکند. مشکل زمانی رخ میدهد که در حین پردازش یک درخواست، حافظه اختصاصیافته به این بخش آزاد میشود (Free)، اما اشارهگرها همچنان به آن آدرس خالی اشاره میکنند.
مهاجم با استفاده از تکنیک Use-After-Free (UAF)، حافظه آزاد شده را با دادههای مخرب خود پر میکند. در نتیجه، وقتی PHP تلاش میکند تابع داخلی خود را فراخوانی کند، به جای اجرای کدهای استاندارد، دستورات مهاجم (مانند اجرای شل یا نصب بدافزار) را اجرا میکند. این فرآیند کاملاً پیش از مرحله ورود کاربر یا چک کردن دسترسیها اتفاق میافتد.
کدام نسخهها در خطر هستند؟
طبق گزارشهای فنی، تقریباً تمام نسخههای رایج PHP از جمله سری ۵، ۶، ۷ و ۸ تحت تأثیر این باگ قرار دارند. وضعیت پشتیبانی به شرح زیر است:
۱. نسخههای ۸.۲، ۸.۳ و ۸.۴: وصلههای امنیتی اضطراری برای این نسخهها منتشر شده است و باید فوراً آپدیت شوند. ۲. نسخههای پایانیافته (EOL): نسخههای قدیمی مانند ۷.۴ یا ۵.۶ که هنوز در بسیاری از سازمانهای ایرانی برای اتوماسیونهای قدیمی استفاده میشوند، هیچ وصله رسمی دریافت نخواهند کرد. برای این سرورها تنها راه، تغییر تنظیمات دستی یا ایزولهسازی کامل است.
چطور نشانههای نفوذ را شناسایی کنیم؟
بهترین راه برای تشخیص حمله، نظارت بر پردازههای فرزند (Child Processes) در وبسرور است. اگر پردازههایی مانند ۱ یا ۲ اقدام به اجرای دستورات زیر کردند، احتمالاً سرور شما هک شده است:
- اجرای مستقیم شل مانند ۳ یا ۴.
- استفاده از ابزارهای انتقال فایل مثل ۵ یا ۶ برای دانلود بدافزار.
- اجرای دستورات شناسایی سیستم مانند ۷ یا ۸ توسط کاربر وبسرور.
راهکارهای فوری برای ایمنسازی سرور
اگر امکان آپدیت فوری PHP را ندارید، باید از راهکار موقت (Workaround) استفاده کنید. این کار با غیرفعال کردن قابلیت ردیابی آپلود انجام میشود که معمولاً در اکثر وبسایتها کاربرد حیاتی ندارد.
کافی است در فایل تنظیمات ۹ مقدار زیر را تغییر دهید:
session.upload_progress.enabled = Off
پس از تغییر، حتماً سرویس PHP یا وبسرور (Nginx/Apache) را بازنشانی کنید. همچنین استفاده از دیوارهای آتش وب (WAF) با قوانین اختصاصی برای مسدود کردن درخواستهای چندبخشی (Multipart) غیرعادی توصیه میشود.
نکات کلیدی
- این آسیبپذیری با امتیاز ۹.۲، امکان اجرای کامل دستورات سیستمعامل را بدون نیاز به رمز عبور فراهم میکند.
- نسخههای قدیمی PHP (مانند ۵.x و ۷.x) وصله رسمی دریافت نمیکنند و باید به صورت دستی ایمن شوند.
- غیرفعال کردن گزینه ۱۱ در تنظیمات PHP سریعترین راه برای بستن این حفره امنیتی است.
- نظارت بر پردازههای سرور و بررسی لاگهای درخواست POST برای شناسایی حملات احتمالی ضروری است.
منبع: github.com