كل المقالات

برمجيات خبيثة تعمل وقت التثبيت، وما الذي يفحصه جدار الحزم من ⁨GitHub⁩

الأمان · 4 دقيقة قراءة ·

اعتدنا أن نتخيل الاعتمادية الخبيثة ككود يؤذي حين يشغّله التطبيق. لكن ⁨GitHub⁩ تقول في إعلانها يوم 20 أكتوبر 2026 إن عددًا متزايدًا من الهجمات لا ينتظر ذلك: الضرر يقع أثناء تثبيت الحزمة نفسه، فتُجمَع بيانات الدخول من خادم التكامل المستمر أو من جهاز المطوّر، دون أن ينفّذ تطبيقك سطرًا واحدًا من كود الحزمة. حين يبدأ أول اختبار، يكون الرمز قد خرج بالفعل. ردّ ⁨GitHub⁩ هو جدار حماية للحزم في معاينة عامة، ومن المفيد أن تعرف ما يفعله، وكم هو ضيق نطاقه حتى الآن.

خادم تشغيل سير العمل وكيل برمجة جدار حماية الحزم فترة انتظار قاعدة التحذيرات تراجع الشهادات سجل حزم الجافاسكربت طلبات البيانات الوصفية والتنزيلات تمر كلها عبره
الجدار يحمي فقط الأجهزة التي توجّهها إليه. خادم ما زال يكلّم السجل مباشرة يبقى خارجه.

ما الذي يفحصه الجدار

بحسب وصف ⁨GitHub⁩، يقف الجدار بين نقاط الطرف، أي خوادم ⁨Actions⁩ ووكلاء البرمجة، وبين سجل الحزم الأصلي، ويفحص طلبات البيانات الوصفية والتنزيلات معًا. السياسات المتاحة اليوم: فترة انتظار قابلة للضبط، وفحص الحزم مقابل ⁨GitHub Advisory Database⁩ بحثًا عن تحذيرات برمجيات خبيثة أو ثغرات، وفحوص لسلسلة التوريد مثل تراجع مستوى الشهادة. ويجب ضبط كل نقطة طرف لتستخدم الجدار بدل السجل مباشرة، وإن حُجبت حزمة بالخطأ يمكنك طلب استثناء.

ما الذي لا يغطيه

كن دقيقًا في النطاق قبل أن تبني عليه خطة. تقول ⁨GitHub⁩ إن المعاينة لعملاء ⁨Enterprise Cloud⁩، بما فيه خيار إقامة البيانات، وإنها تدعم حزم ⁨npm⁩ فقط حاليًا. أي أن من يعمل على خطة ⁨Free⁩ أو ⁨Team⁩ لا يملكه، وفي مشروع ⁨PHP⁩ لا يمر شيء من تثبيت ⁨Composer⁩ عبره. وهو مجاني خلال المعاينة، وتقول ⁨GitHub⁩ إنه سيُحتسب لاحقًا بطريقة مشابهة لفوترة ⁨Actions⁩.

جهة النشر تشدّدت في الشهر نفسه

تغييران من ⁨npm⁩ في 2 أكتوبر يضغطان من الطرف الآخر. صار npm stage publish قادرًا على إنشاء حزمة جديدة تمامًا: يدخل إصدارها الأول طابورًا مرحليًا، ولا يصبح قابلًا للتثبيت حتى يرقّيه أحد المشرفين. والإعدادات غير المؤكَّدة للنشر الموثوق تنتهي الآن بعد 48 ساعة من إنشائها، وهذا يقلّل خطر الثقة في اسم مستودع أو مشروع ينتقل لاحقًا إلى مالك آخر، ويتأكد الإعداد بأول نشر ناجح. كما ترفض ⁨npm⁩ الآن رموز النشر الموثوق القادمة من أحداث issue_comment، إلى جانب القيد القائم على pull_request_target، وتوجّهك إلى أحداث ⁨push⁩ أو ⁨release⁩ أو ⁨workflow_dispatch⁩ بدلًا منها.

ثبّت فقط ما يقوله ملف القفل انتظر أيامًا قبل الإصدارات الجديدة تمامًا افحص التحذيرات في التكامل المستمر لا أسرار طويلة العمر حيث يجري التثبيت أعمق الطبقة الأخيرة تحدّ مما يسرقه تثبيت سيئ
ممارسة عامة، وليست جزءًا من منتج ⁨GitHub⁩. كل طبقة تلتقط ما فاتته التي فوقها.

ما تستطيع فعله على أي خطة

ما يلي إرشاد عام، لا ادعاء عن الجدار. احفظ ملفات القفل في المستودع وثبّت منها: npm ci في الجافاسكربت، وcomposer install مقابل composer.lock في ⁨PHP⁩. شغّل فحص التحذيرات في التكامل المستمر. الخيار --ignore-scripts يتخطى سكربتات دورة حياة ⁨npm⁩، لكنه ليس دفاعًا كاملًا، لأن هجمات وقت التثبيت ليست كلها سكربتات، وبعض الحزم تحتاجها فعلًا. وفترة الانتظار اليدوية تعني ألا ترقّي إلى إصدار نُشر في الأيام القليلة الماضية، لأن أغلب الإصدارات الخبيثة تُكتشف بسرعة. أما الطبقة الأهم: لا تشغّل التثبيت على جهاز يحمل بيانات دخول طويلة العمر.

npm ci
composer install --no-interaction
composer audit
افترض أن أي تثبيت يستطيع قراءة كل سر على الجهاز الذي يعمل عليه، وقرّر ما يوجد على ذلك الجهاز على هذا الأساس.

هذا الموقع مبني على ⁨Laravel⁩ مع قليل من أدوات الجافاسكربت، أي أن الجدار لن يغطي منه إلا النصف الأصغر. وفي جانب ⁨PHP⁩ البديل بسيط: ثبّت من composer.lock المحفوظ في المستودع، وشغّل composer audit في التكامل المستمر، ولا تدع تحديثًا يدخل دون أن يقرأه أحد. وإن كنت على ⁨Enterprise Cloud⁩، فوجّه خادمًا واحدًا إلى الجدار، وراقب ما يحجبه أسبوعًا، ثم وسّع. المصدر: سجل تغييرات ⁨GitHub⁩ عن جدار حماية الحزم.

ملاحظات القراء

  1. لا توجد ملاحظات بعد. الأولى دائمًا الأجرأ.
باغي دير حاجة بحال هذي؟ نقدر نعاونك. راسلني على واتساب