رک‌های سرور با نور بنفش و آبی در مرکز داده، نمادی از آسیب‌پذیری PHP در سرورهای وب

دو آسیب‌پذیری PHP با نام PHP2Shell این روزها خبر اول دنیای امنیت وب است. شناسه این دو باگ CVE-2026-109618 و CVE-2026-109619 است. هر دو به مهاجم بدون احراز هویت اجازه می‌دهند در شرایط خاص روی سرور کد اجرا کند.

پروژه PHP در ۲۱ اکتبر ۲۰۲۶ وصله این باگ‌ها را منتشر کرد. اما حالا گزارش‌ها از اجرای واقعی شل روی سرورهای طعمه خبر می‌دهند. بنابراین اگر سایت وردپرسی، فروشگاه اینترنتی یا هاست اشتراکی دارید، این مطلب را تا آخر بخوانید.

آسیب‌پذیری PHP2Shell دقیقاً چیست؟

طبق توضیح بنیاد PHP، هر دو باگ در بخش‌هایی از PHP قرار دارند که تقریباً هر درخواست از آن‌ها عبور می‌کند. یعنی مدیریت حافظه و مدیریت خطا.

اولین باگ، CVE-2026-109618، به لحظه پر شدن memory_limit مربوط است. اگر درخواست دقیقاً در لحظه نامناسب به سقف حافظه برسد، PHP داده نیمه‌کاره‌ای باقی می‌گذارد. سپس همان داده را معتبر فرض می‌کند و حافظه خراب می‌شود.

نکته مهم این است که روی Apache با mod_php، یک درخواست بدون احراز هویت می‌تواند این باگ را پیش از اجرای کد برنامه فعال کند. طبق گفته بنیاد PHP، پژوهشگران اجرای کامل کد از راه دور را با تنظیمات پیش‌فرض نشان داده‌اند. همچنین اجرای کد روی PHP-FPM هم از مسیرهای داخل برنامه تأیید شده است.

دومین باگ، CVE-2026-109619، از نوع use-after-free است. در این حالت یک خطای مرگبار، وضعیت داخلی را به حافظه درخواست قبلی وصل نگه می‌دارد. در نتیجه درخواست بعدی که همان worker پردازش می‌کند، از حافظه آزادشده استفاده می‌کند.

نسخه‌های امن و امتیاز واقعی

مسیرهای نورانی بنفش روی یک برد مدار که به تراشه مرکزی می‌رسند، نمادی از خطای حافظه در آسیب‌پذیری PHP

نسخه‌های اصلاح‌شده PHP این‌ها هستند:

  • PHP 8.5.12
  • PHP 8.4.27
  • PHP 8.3.36
  • PHP 8.2.35

امتیاز CVSS هر دو باگ ۹.۲ است. البته پیش از انتشار وصله، شناسه‌ها با امتیاز اشتباه ۱۰.۰ در شبکه‌های اجتماعی پخش شدند. بنیاد PHP این عدد را رد کرده است.

اگر هنوز روی شاخه‌های قدیمی‌تر هستید، کار سخت‌تر است. طبق گزارش جی‌بی‌هکرز، شاخه‌های قدیمی به بک‌پورت معتبر یا مهاجرت به نسخه پشتیبانی‌شده نیاز دارند. همچنین می‌توانید بسته وصله‌شده توزیع لینوکس خودتان را نصب کنید.

از اسکن انبوه تا اجرای واقعی شل

در ابتدا بیشتر ترافیک فقط اسکن بود. برای مثال، Fastly تا ظهر ۲۲ اکتبر حدود ۲۵۰ هزار درخواست از ابزارهایی با نام PHP2Shell ثبت کرد. این درخواست‌ها از حدود ۳۲۰۰ آدرس IP عمومی آمده بودند. با این حال، این عدد اسکنرهای دفاعی را هم شامل می‌شود.

اما ورق در ۲۴ اکتبر برگشت. طبق گزارش سکیوریتی‌ویک، عادل کریمی، پژوهشگر Perplexity، روی سه سرور طعمه یا هانی‌پات ۳۵ شل ثبت کرد. این شل‌ها از دو آدرس IP آمده بودند.

مهاجمان یک زنجیره چهارمرحله‌ای از درخواست‌های HTTP به کار بردند. ابتدا حافظه PHP را پر کردند. سپس محتوای حافظه را بیرون کشیدند. در نهایت یک فرمان شل اجرا کردند.

هانی‌پات‌های کریمی روی PHP 8.4.26 با Apache mod_php و فقط یک worker کار می‌کردند. به همین دلیل خودش هشدار داد که این نتیجه برای همه پیکربندی‌ها صادق نیست. همچنین در این گزارش، دانلود بدافزار مرحله دوم دیده نشد.

چرا به‌روزرسانی وردپرس کافی نیست؟

خیلی از مدیران سایت فکر می‌کنند با به‌روزرسانی وردپرس یا افزونه‌ها کار تمام است. اما این آسیب‌پذیری PHP زیر لایه برنامه قرار دارد. یعنی پیش از اجرای کد وردپرس یا هر CMS دیگری فعال می‌شود.

پس به‌روزرسانی CMS به‌تنهایی مشکل را حل نمی‌کند. علاوه بر آن، فایروال وب یا WAF فقط پوشش موقت می‌دهد. در واقع راه اصلی، ارتقای خود موتور PHP است. بنیاد PHP هم صریحاً می‌گوید هر کسی PHP اجرا می‌کند باید همین حالا به‌روزرسانی کند.

قبلاً هم در مطلب آسیب‌پذیری انجینکس دیدیم که باگ‌های لایه وب‌سرور، مستقل از نرم‌افزار سایت، کل سرور را در خطر قرار می‌دهند.

آسیب‌پذیری PHP و نشانه‌های حمله در لاگ‌ها

حلقه‌های نورانی بنفش و فیروزه‌ای دور یک هسته روشن، نمادی از ارتقای سرور پس از آسیب‌پذیری PHP

برای شکار حمله، چند نشانه مفید وجود دارد. طبق جی‌بی‌هکرز، رایج‌ترین ابزار درخواست POST به ‎/index.php یا ریشه سایت می‌فرستد. همچنین User-Agent آن php2shell-109618 است و از مرز multipart با مقدار B7kQpoc618 استفاده می‌کند.

با این حال، به این امضاها تکیه کامل نکنید. چون مقدار User-Agent سریع تغییر می‌کند و مهاجمان از پراکسی‌های مشترک استفاده می‌کنند. در عوض، درخواست‌های مشکوک را با این موارد مقایسه کنید:

  • خطاهای PHP-FPM در لاگ
  • کرش ناگهانی worker در Apache
  • اتصال خروجی غیرعادی از پروسه‌های PHP

نکته جالب دیگر این است که همه ابزارهای عمومی کار نمی‌کنند. طبق ارزیابی Sansec، اسکریپت‌های اثبات مفهوم عمومی روی نصب پیش‌فرض PHP جواب ندادند. اما هانی‌پات‌های کریمی نشان دادند که دست‌کم یک زنجیره کارآمد وجود دارد.

چک‌لیست فوری برای مدیران سرور ایرانی

بسیاری از سایت‌های ایرانی روی هاست اشتراکی با PHP و Apache کار می‌کنند. بنابراین این چک‌لیست را همین امروز اجرا کنید:

  • نسخه PHP همه سرورها و هاست‌ها را با دستور php -v بررسی کنید.
  • به یکی از نسخه‌های 8.5.12، 8.4.27، 8.3.36 یا 8.2.35 ارتقا دهید.
  • اگر هاست اشتراکی دارید، از شرکت میزبانی بخواهید نسخه PHP را تأیید کند.
  • سرورهایی که mod_php دارند را در اولویت اول قرار دهید.
  • لاگ‌ها را از ۲۱ اکتبر به بعد برای نشانه‌های بالا بررسی کنید.
  • پس از ارتقا، سرویس Apache یا PHP-FPM را دوباره راه‌اندازی کنید.

در نهایت، این آسیب‌پذیری PHP نشان می‌دهد که پیدا کردن باگ با کمک هوش مصنوعی سریع‌تر از همیشه پیش می‌رود. به همین دلیل باید وصله‌ها را سریع‌تر از قبل نصب کرد. اگر امروز ارتقا دهید، یک قدم از مهاجمان جلوتر هستید.

امکان درج دیدگاه بسته شده است