محققان تیم DEVCORE، هفتم مِی 2024 در طول تحقیقات خود، یک آسیب پذیری RCE در PHP را کشف کردند. DEVCORE با توجه به استفاده گسترده از این زبان برنامه نویسی در اکوسیستم وب و سهولت بهره برداری از آن، شدت آن را بحرانی طبقه بندی کرد و به سرعت تیم رسمی PHP را مطلع ساخت.
توسعه دهندگان PHP نیز پچ مربوطه را در ششم ژوئن ۲۰۲۴ منتشر کردند. این آسیب پذیری جدید که با شناسه CVE-2024-4577 دنبال میشود، بر تمام نسخههای PHP 5.x تأثیر گذاشته و شمار زیادی از سرورهای ویندوز را در سراسر جهان در معرض حمله اجرای کد از راه دور (RCE) قرار میدهد.
متأسفانه، هنگامی که یک آسیب پذیری بحرانی در چنین مقیاس وسیعی شناسایی میشود، مهاجمان سایبری و محققان بلافاصله شروع به یافتن سیستمهای آسیب پذیر میکنند. بنیاد Shadowserver، در خصوص این نقص امنیتی (CVE-2024-4577) چندین آدرس IP را شناسایی کرده است که سرورهای آسیب پذیر را اسکن میکنند.
آسیب پذیری CVE-2024-4577، ناشی از عدم توجه و نادیده گرفتن ویژگی Best-Fit تبدیل کدگذاری کاراکتر در سیستم عامل ویندوز به هنگام اجرای PHP در حالت CGI است. CGI، یک معماری قدیمی میباشد.
این باگ، به مهاجمان احراز هویت نشده اجازه میدهد تا حفاظت قبلی CVE-2012-1823 را توسط توالی کاراکترهای خاص دور بزنند. کد دلخواه را میتوان از طریق حمله تزریق آرگومان بر روی سرورهای PHP از راه دور اجرا کرد.
چنانچه PHP در حالت CGI پیکربندی نشده باشد نیز ممکن است تا زمانی که فایلهای اجرایی PHP (به عنوان مثال php.exe یا php-cgi.exe) در دایرکتوری هایی قرار دارند که توسط وب سرور قابل دسترس هستند، CVE-2024-4577 قابل اکسپلویت و سوء استفاده باشد.
با توجه به پیکربندی پیشفرض XAMPP در ویندوز، احتمال میرود که تمام نصبهای XAMPP در ویندوز آسیب پذیر باشند.
این آسیب پذیری (CVE-2024-4577)، تمامی نسخههای PHP نصب شده بر روی سیستم عامل ویندوز را تحت تاثیر قرار میدهد. افرادی که از نسخههای PHP پشتیبانی شده استفاده میکنند، میبایست به نسخههای 8.3.8، 8.2.20 و PHP 8.1.29 به روزرسانی نمایند.
نسخههای PHP 8.0 (EoL) ، PHP 7.x (EoL) و PHP 5.x (EoL) نیز دیگر پشتیبانی نمیشوند. چنانچه از این نسخهها استفاده میکنید، میبایست به نسخه جدیدتر ارتقا دهید و یا از یک قانون mod_rewrite برای مسدود کردن حملات استفاده نمایید:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^%ad [NC]
RewriteRule .? – [F,L]
XAMPP هنوز فایلهای به روز رسانی مربوط به این آسیب پذیری را در زمان نگارش این مقاله منتشر نکرده است. چنانچه تأیید کردید که به ویژگی CGI نیاز ندارید، دستورالعمل” ScriptAlias” را در فایل پیکربندی آپاچی در مسیر «C:/xampp/apache/conf/extra/httpd-xampp.conf« پیدا و آن را (توسط #) کامنت کنید.
Adminها میتوانند با استفاده از تابع phpinfo() و بررسی مقدار ” Server API” در خروجی، تعیین کنند که آیا از PHP-CGI استفاده میکنند یا خیر. DEVCORE همچنین پیشنهاد میدهد که Adminهای سیستم به جای CGI، از موارد امن تر مانند FastCGI، PHP-FPM و Mod-PHP استفاده کنند.