أسبوع واحد وأربعة أنظمة: حوادث PHP وNode.js وPython في أكتوبر 2026
بين 14 و22 أكتوبر 2026 أصدرت PHP وNode.js في اليوم نفسه تحديثات أمنية لثغرات تنفيذ كود عن بُعد، وأُلغيت مفاتيح وسيطة لجهة إصدار شهادات، وأفصحت منصة استضافة عن وصول طرف ما إلى متغيرات البيئة لدى عملائها، وظهرت تقارير عن حزمتين، واحدة على npm وأخرى على PyPI، تحملان كودًا يسرق بيانات الاعتماد. لكل قصة منها مقال مستقل في هذه المدونة. هنا أضعها على خط واحد، لأن قراءتها معًا تقود إلى قائمة قصيرة من العادات تغطي معظمها.
الأسبوع بالترتيب
قبلها بأسبوع، في 8 أكتوبر، يذكر متتبّع الحوادث pwn.watch أن الحزمة tensorlake 0.5.144 نُشرت على npm من مستودعها الحقيقي وبشهادة مصدر provenance، وهي تحمل دودة تسرق بيانات الاعتماد (شهادة المصدر ليست أمانًا). في 14 أكتوبر، بحسب المتتبّع نفسه، أصدرت Vercel النسختين Next.js 16.4.1 و15.5.28 خارج الجدول المعتاد لإصلاح ثغرتين حرجتين لتنفيذ الكود دون مصادقة، ويقيّم تنبيه GitHub ثغرة SVG منهما بدرجة 9.5 (مقال Next.js). وفي 18 و19 أكتوبر، وفق المتتبّع، تبيّن أن مفاتيح وسيطة لدى eMudhra ضعيفة فأُلغيت، وتقول الشركة إنها ألغت الجهات المتأثرة خلال 14 ساعة من اكتشاف المشكلة (مخازن الثقة).
في 20 أكتوبر نشر موقع php.net خبرًا بعنوان يعلن عن إصدار أمني حرج قادم، ويقول المتتبّع إن التفاصيل كانت قد تسرّبت مبكرًا. وفي 21 أكتوبر أصلحت النسخ PHP 8.5.12 و8.4.27 و8.3.36 و8.2.35 ثغرتين حرجتين لتنفيذ الكود دون مصادقة (حدّث PHP الآن)، وأصلحت Node.js 26.12.1 و24.22.1 و22.23.4 عشر ثغرات بينها تنفيذ كود عبر مفكّك Brotli (إصدار Node.js، وإصلاحان أصغر). وفي اليوم نفسه أفصحت Railway عن أن طرفًا ثالثًا ربما حصل على متغيرات بيئة مفكوكة التشفير لعملائها (تدوير الأسرار)، وذكر المتتبّع إصدارًا مخترقًا LiteLLM 1.107.0 على PyPI وDocker (حزمة واحدة وكل مفاتيحك). وفي 22 أكتوبر أعلنت eMudhra خروجها من سوق شهادات TLS، وأظهر مسح W3Techs أن 34.7% من مواقع PHP التي يستطيع رصدها ما زالت على PHP 7 أو أقدم (نهاية دعم PHP).
أربعة أنماط
هذه أنماط أقرؤها عبر المصادر، وليست أسبابًا أكّدها أحد.
الإصلاح رقم إصدار. ردّت PHP وNode.js بنسخ مُصلَحة، وكلتاهما تقول إن الفروع المنتهية الدعم خارج الحساب: يقول php.net إن 8.1 وما قبلها لم تعد تتلقى تحديثات من المشروع، ويقول Node.js إن النسخ المنتهية الدعم متأثرة دائمًا عند كل إصدار أمني. إن لم تكن تعرف أي نسخة تعمل في الإنتاج، فلن تعرف إن كنت قد أصلحت.
الثقة طبقات، وهي تُشحن مع الكود. قائمة جهات الشهادات المضمّنة في بيئة التشغيل (حدّثت Node.js مكوّن ca-cert بسبب eMudhra)، وحزمة مبنية بشهادة مصدر، ومخزن أسرار لدى منصة، وخط بناء الإصدارات. كل طبقة شيء تثق به دون أن تنظر، ولهذا قد ينتقل اختراق في إحداها بهدوء إلى التي تليها.
بيانات الاعتماد هي الغنيمة. ثلاث من الحوادث، دودة npm وإصدار LiteLLM وإفصاح Railway، تدور حول جمع الأسرار لا حول كسر كود التطبيق نفسه. وتقول Railway إنها تعتقد أن حادثتها جزء من سلسلة هجمات تهدف إلى الوصول لمزوّدي تشغيل نماذج الذكاء الاصطناعي.
العادات المملة تجيب عن معظمها. وهذا هو الخبر الجيد، وهو القسم الأخير.
قائمة هذا الأسبوع
ابدأ بالنسخ في كل مكان تختبئ فيه: خادم الويب، وسطر الأوامر، وصورة Docker الأساسية، والتكامل المستمر. من سطر الأوامر:
php -v
node -v
composer audit
npm ls next sharp
تذكّر أن php -v يعرض نسخة سطر الأوامر، وقد تختلف عن النسخة التي تخدم طلبات الويب. بعد ذلك: حدّث PHP إلى 8.5.12 أو 8.4.27 أو 8.3.36 أو 8.2.35، وNode.js إلى 26.12.1 أو 24.22.1 أو 22.23.4؛ وخطّط للخروج من أي فرع لم يعد يتلقى إصلاحات؛ واكتب قائمة الأسرار التي يحملها تطبيقك وطريقة تدوير كل منها؛ وأبقِ أسرار الإنتاج بعيدًا عن أجهزة المطورين، حيث تبحث عنها البرمجيات الخبيثة وقت التثبيت. وإن لم تفعل اليوم إلا شيئًا واحدًا، فاعرف أي نسختي PHP وNode.js تعملان في إنتاجك فعلًا.
مقالات سابقة تتعمق في هذه العادات: الدقائق العشر الأولى بعد تسرّب مفتاح، والبرمجيات الخبيثة وقت التثبيت، وملفات قفل سير العمل، وعزل وكيل البرمجة.
المصدر: أرشيف أخبار php.net لعام 2026، وكل مقال مرتبط يذكر مصدره الأساسي.
ملاحظات القراء