ثغرات PHP2Shell واختراق LiteLLM: تعمل إيه النهارده
يوم 21 أكتوبر 2026 PHP صلّحت ثغرتين خطيرين بيخلّوا المهاجم يشغّل كود على سيرفر الويب من غير login. وفي نفس اليوم اتكشف إن LiteLLM 1.107.0 بتسرق المفاتيح. الجزء الأول للكل، والتاني للي عنده موقع PHP أو بيستخدم LiteLLM.
إيه اللي حصل؟
- PHP شغالة على حوالي 70% من المواقع (69.3% من المواقع اللي لغة السيرفر بتاعتها معروفة، W3Techs (بيفتح في تاب جديد)، 21 أكتوبر 2026).
- ثغرتين في محرك PHP نفسه، CVE-2026-109618 وCVE-2026-109619، الاتنين تقييمهم 9.2 (critical). بيسمحوا بتنفيذ كود عن بعد (RCE) من غير login. الباحثين سمّوهم PHP2Shell.
- الخبر اتسرب على Hacker News يوم 20 أكتوبر 2026، وPHP نزّلت الإصلاح يوم 21 أكتوبر 2026 الساعة 14:00 UTC.
- الهجمات بدأت بسرعة: watchTowr بتقول إن الـhoneypots بتاعتها شافت استغلال in the wild يوم 21 أكتوبر، وCloudflare شافت attack traffic.
- الـCISA الأمريكية والـNCSC البريطاني والـFBI Cyber Division قالوا لكل اللي بيستخدم PHP: حدّث دلوقتي.
- وفي نفس اليوم، الـPython package اللي اسمها LiteLLM (حوالي 23 مليون تحميل في الأسبوع) نزلت منها نسخة ملغومة، 1.107.0، بتسرق المفاتيح والباسوردات. شوف جزء LiteLLM تحت.
الجزء الأول: لو إنت بتستخدم المواقع بس
الثغرات في سيرفرات المواقع، مش في موبايلك أو اللابتوب بتاعك. إنت مش هتقدر تصلّح مواقع غيرك، بس تقدر تقلّل الضرر لو موقع منهم سرّب بياناتك:
باسورد مختلف لكل موقع، وسيب الـpassword manager يفتكرهم.
شغّل التحقق على خطوتين (2FA) في كل حتة تقدر، خصوصًا الإيميل والبنك.
ما تفتحش أي link مفاجئ، حتى لو الرسالة شكلها جاية من موقع إنت بتستخدمه.
شغّل تنبيهات البنك، وما تكلّمش غير الأرقام الرسمية اللي على الكارت أو على موقع البنك.
عندك موقع WordPress أو غيره عند شركة hosting؟ اسألهم هل PHP بتاعة موقعك اتحدّثت، أو شوف نسخة PHP في لوحة التحكم (الأجزاء اللي جاية).
الجزء التاني: إنت متأثر؟
- تقريبًا كل نسخ PHP من 5.4 وطالع متأثرة بثغرة واحدة على الأقل. WordPress وDrupal وJoomla وLaravel وأي app بـPHP كلهم شغالين على نفس المحرك، فتحديث الـapp لوحده مش كفاية.
- Apache مع mod_php مؤكد إنه متأثر. وPHP-FPM كمان مؤكد، عن طريق مسارات في الـapp. وphp-cgi وFrankenPHP وLiteSpeed كمان في الليستة.
- النسخ المصلّحة: 8.5.12 و8.4.27 و8.3.36 و8.2.35. أي نسخة أقدم منها على نفس الفرع فيها الثغرة، إلا لو توزيعة لينكس بتاعتك عملت backport للإصلاح (النقطة اللي جاية).
- PHP 8.1 و8.0 و7.4 مالهمش نسخة رسمية جاهزة، فيه بس source patches للي بيبني PHP بنفسه. توزيعات لينكس بتنزّل الإصلاح في الـpackages بتاعتها: Debian DSA-6574-1 (بيفتح في تاب جديد) بتنزّل النسخ المصلّحة 8.4.27 و8.2.35، وUbuntu USN-8948-1 (بيفتح في تاب جديد) بتعمل backport للإصلاح وبتسيب الرقم القديم (8.3.6 على Ubuntu 24.04، و8.1.2 على 22.04). يعني سيرفر متصلّح ممكن يطلّع رقم قديم: قارن نسخة الـpackage (مثلًا
apt policy php8.3) بإعلان التوزيعة بتاعتك. - PHP 7.3 وأقدم: مفيش إصلاح رسمي ولا patch. خطّط إنك تنقل لنسخة مدعومة.
اعرف موقعك شغال بأنهي نسخة بجد
- Shared hosting: افتح لوحة التحكم (cPanel أو Plesk أو لوحة الشركة) ودوّر على صفحة PHP version أو PHP selector.
- سيرفرك الخاص: الأمر اللي تحت بيوريك PHP بتاعة الـTerminal. الموقع ممكن يكون شغال بـPHP تانية (Apache أو PHP-FPM)، فاتأكد كمان من لوحة التحكم أو من صفحة phpinfo، وامسح الصفحة دي بعدها.
php -vالـphp2shell-checker (بيفتح في تاب جديد) المجاني من OpenAI بيقرا النسخة اللي الموقع بيعلنها في الـheaders، ويرد بـOK أو VULNERABLE أو UNKNOWN. UNKNOWN مش معناها إنك آمن، وOK بتقارن رقم النسخة بس، والـbackport ممكن يطلّع VULNERABLE على سيرفر متصلّح أصلًا.
حدّث PHP
لوحة التحكم
اختار 8.5.12 أو 8.4.27 أو 8.3.36 أو 8.2.35 (أو أحدث) من صفحة نسخة PHP. لو شركة الـhosting لسه ما نزّلتش نسخة مصلّحة، اسألهم إمتى.
سيرفر Ubuntu أو Debian
نزّل التحديثات من التوزيعة:
sudo apt update && sudo apt upgradeاعمل restart للسيرفر عشان يحمّل PHP الجديدة. الـprocesses القديمة بتفضل شغالة بالكود القديم لحد ما تعمل كده. لـApache:
sudo systemctl restart apache2لـPHP-FPM، حط نسختك في الاسم (هنا 8.3):
sudo systemctl restart php8.3-fpm
Docker
الإصلاح بييجي في الـimages الرسمية بتاعة PHP بعد ما بتتبني من جديد. نزّل الـimages الجديدة، ابني الـimages بتاعتك عليها من تاني، واعمل restart. الـimage المتثبّتة على tag أو digest قديم بتفضل بـPHP القديمة، فثبّتها على نسخة مصلّحة.
docker compose pull --ignore-buildable && docker compose build --pull && docker compose up -dلو مش هتقدر تحدّث النهارده
مفيش حل مؤقت كامل: التحديث هو الحل الآمن الوحيد. الـCISA (بيفتح في تاب جديد) بتقول إن السيستم اللي مش هيتحدّث على طول، أو شغال بـPHP 8.1 أو أقدم، يتقفل لحد ما يتصلّح. والـNCSC البريطاني (بيفتح في تاب جديد) بيقول طبّق الحلول المؤقتة، ولو مش قادر، فكّر تقفل السيستم.
حلول مؤقتة
- اقفل
session.upload_progress.enabled. - قلّل
post_max_sizeوmax_input_nesting_level. - خلّي workers بتوع PHP-FPM يتجددوا بعد كل request بـ
pm.max_requests = 1. - امنع الـmultipart uploads في الأماكن اللي موقعك مش محتاجها فيها، وحط حد لحجم الـrequest قبل ما يوصل لـPHP.
- ما تستخدمش
RLIMIT_ASأوRLIMIT_DATAعشان تحدد الميموري: الـadvisory بيقول إنهم بيشغّلوا نفس المسار اللي فيه الثغرة. - الـWAF أو الـCDN بيساعد، بس مش كفاية لوحده.
اتأكد إن محدش دخل
- احتفظ بالـlogs بتاعة السيرفر واقراها، وبص على العلامات اللي في php2shell.com (بيفتح في تاب جديد).
- لو شاكك إن السيرفر اتخترق: اعزله، احتفظ بالـlogs، غيّر كل باسورد ومفتاح السيرفر كان يقدر يقراه، واعمل sign out لكل المستخدمين.
نزّلت LiteLLM 1.107.0؟
LiteLLM 1.107.0 على PyPI (نزلت يوم 21 أكتوبر 2026 الساعة 11:39 UTC) والـDocker images الرسمية بتاعتها (tags v1.107.0 وlatest وmain-latest وmain-stable) كانت ملغومة. الكود بيشتغل أول ما Python تفتح، من غير أي import، وبيسرق مفاتيح الـcloud ومفاتيح الـAPI ومفاتيح SSH وlogins أدوات الـAI وبيانات المتصفح.
اتأكد من غير ما تشغّل Python دي: الكود الملغوم بيشتغل كل ما Python تفتح، حتى مع
pip. في فولدر المشروع، لو الـenvironment اسمه.venv:ls .venv/lib/python3*/site-packages | grep -i -e litellm -e cook.pthعلى ويندوز، افتح
.venv\Lib\site-packagesفي File Explorer ودوّر على نفس الأسامي.لو لقيت
litellm-1.107.0.dist-infoأوcook.pth، أو نزّلت واحد من الـDocker tags دول اليوم ده، اعتبر الجهاز مكشوف وما تشغّلش Python في الـenvironment ده تاني.امسح الـenvironment ده (أو الـcontainer). لو سطّبت LiteLLM برة أي virtual environment، أأمن حل إنك تعمل الجهاز من الأول؛ وعلى الأقل امسح LiteLLM و
cook.pthوالـsitecustomize.pyاللي ضافه.بعدها غيّر كل مفتاح وباسورد الجهاز ده كان يقدر يقراه: الـcloud، شركات الـAI، GitHub، SSH، مفاتيح GPG وTLS، بيانات دخول الـLiteLLM proxy، وأي logins متسجّلة في المتصفح.
اعمل environment جديد وسطّب النسخة السليمة:
pip install "litellm==1.106.2"
المصادر (بالإنجليزي)
- نسخ PHP الرسمية (بيفتح في تاب جديد)
- إعلان ثغرة CVE-2026-109618 (بيفتح في تاب جديد)
- إعلان ثغرة CVE-2026-109619 (بيفتح في تاب جديد)
- PHP2Shell: التفاصيل والحلول المؤقتة وعلامات الهجوم (بيفتح في تاب جديد)
- تحذير CISA (بيفتح في تاب جديد)
- تحذير NCSC البريطاني (بيفتح في تاب جديد)
- أسئلة watchTowr (بيفتح في تاب جديد)
- php2shell-checker من OpenAI (بيفتح في تاب جديد)
- Ubuntu USN-8948-1 (بيفتح في تاب جديد)
- Debian DSA-6574-1 (بيفتح في تاب جديد)
- W3Techs: نسبة PHP (بيفتح في تاب جديد)
- اختراق LiteLLM (Socket) (بيفتح في تاب جديد)
- اختراق LiteLLM (Wiz) (بيفتح في تاب جديد)
اتراجع على الإعلانات الرسمية يومي 21 و22 أكتوبر 2026. ممكن يكون فيه جديد من ساعتها، فشوف المصادر.