شناسایی حفرههای امنیتی PHP با ابزار جدید php۲shell-checker
حفرههای امنیتی PHP: در روش اول، اگر به تنظیمات داخلی سرور دسترسی دارید، میتوانید از فرمان phpcheck-server استفاده کنید.
امنیت سرورهای وب به شدت به بهروز بودن نسخههای مفسر زبان بستگی دارد. زبان PHP به عنوان یکی از ستونهای اصلی وب، همواره هدف حملات سایبری قرار میگیرد. ابزار php۲shell-checker که اخیراً در تاریخ ۲۹ مهر ۱۴۰۵ (۲۱ اکتبر ۲۰۲۶) بر اساس گزارشهای امنیتی بهروزرسانی شده، راهکاری برای سنجش آسیبپذیری سایتها در برابر حملات تزریق کد و دسترسی به شل (Shell) فراهم کرده است.
ابزار php۲shell-checker چیست؟
ابزار php۲shell-checker یک اسکریپت مبتنی بر Node.js است که نسخههای نصبشده PHP را با فهرست نسخههای اصلاحشده توسط توسعهدهندگان اصلی مقایسه میکند. این ابزار به مدیران سیستم کمک میکند تا بدون ارسال کدهای مخرب یا تستهای نفوذ سنگین، تنها با بررسی نسخه (Version Checking)، متوجه شوند که آیا سرور آنها در برابر حفرههای امنیتی اخیر مصون است یا خیر. استفاده از این ابزار برای کسانی که مدیریت چندین وبسایت را بر عهده دارند یا از خدمات هوش مصنوعی سازمانی برای پایش زیرساخت خود استفاده میکنند، یک گام پیشگیرانه ضروری محسوب میشود.
چطور از این ابزار برای بررسی امنیت سایت استفاده کنیم؟
این ابزار به دو روش اصلی کار میکند. در روش اول، اگر به تنظیمات داخلی سرور دسترسی دارید، میتوانید از فرمان phpcheck-server استفاده کنید. این دستور مستقیماً نسخه اجرایی PHP را روی سیستمعامل بررسی میکند و دقیقترین پاسخ را ارائه میدهد.
در روش دوم که برای بررسی وبسایتهای زنده به کار میرود، فرمان phpcheck-url استفاده میشود. در این حالت، ابزار با ارسال درخواستهای HEAD یا GET به نشانی وبسایت، سرآیندهای X-Powered-By و Server را تحلیل میکند. برای مثال، اگر بخواهید وضعیت یک دامنه ایرانی را بررسی کنید، دستور به شکل زیر اجرا میشود:
node phpcheck.js "https://example.ir"
خروجی این دستور یکی از سه حالت «امن» (ok)، «احتمالاً آسیبپذیر» (potentially_vulnerable) یا «نامشخص» (unknown) خواهد بود. اگر نسخه PHP سایت مخفی شده باشد، ابزار وضعیت را نامشخص اعلام میکند.
کدام نسخههای PHP در خطر هستند؟
طبق مستندات منتشر شده در اکتبر ۲۰۲۶، نسخههای قدیمیتر PHP شامل شاخههای ۵.۴ تا ۵.۶، تمامی نسخههای سری ۷.۰ تا ۷.۴ و حتی نسخههای ۸.۰ و ۸.۱ آسیبپذیر شناخته میشوند. حتی اگر از آخرین وصلههای جانبی در این نسخهها (مانند نسخه ۸.۱.۳۵) استفاده کنید، باز هم هشدار آسیبپذیری دریافت خواهید کرد، زیرا این شاخهها دیگر پشتیبانی رسمی دریافت نمیکنند.
نسخههایی که اصلاحات امنیتی را دریافت کردهاند و از نظر این ابزار امن محسوب میشوند عبارتند از:
- نسخه ۸.۲.۳۵ و بالاتر
- نسخه ۸.۳.۳۶ و بالاتر
- نسخه ۸.۴.۲۷ و بالاتر
- نسخه ۸.۵.۱۲ و بالاتر
محدودیتهای شناسایی نسخه از طریق هدر چیست؟
باید توجه داشت که بررسی از طریق سرآیندهای HTTP همیشه قطعی نیست. بسیاری از توزیعهای لینوکس، اصلاحات امنیتی را روی نسخههای قدیمی «بکپورت» (Backport) میکنند. در این حالت، سرور ممکن است نسخه ۸.۱ را گزارش دهد اما وصله امنیتی روی آن نصب شده باشد. ابزار php۲shell-checker نمیتواند این تغییرات داخلی را تشخیص دهد و فقط بر اساس شماره نسخه اعلام شده قضاوت میکند. بنابراین، وضعیت ok تنها به معنای تایید شماره نسخه است و به معنای تضمین ۱۰۰ درصدی امنیت کل پیکربندی سرور نیست.
نکات کلیدی
- نسخههای ۸.۲.۳۵، ۸.۳.۳۶ و ۸.۴.۲۷ به عنوان نسخههای امن و اصلاحشده شناخته میشوند.
- ابزار از درخواستهای HEAD استفاده میکند و در صورت دریافت خطای ۴۰۵ یا ۵۰۱ به درخواست GET تغییر وضعیت میدهد.
- خروجی ماشینخوان با پرچم --json برای استفاده در سیستمهای مانیتورینگ خودکار در دسترس است.
- نسخههای PHP سری ۵ و ۷ به طور کامل ناامن تلقی میشوند و باید به نسخههای جدیدتر ارتقا یابند.
منبع: github.com