نهال

آسیب‌پذیری بحرانی 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) غیرعادی توصیه می‌شود.

نکات کلیدی

منبع: github.com

مقاله‌های مرتبط