انكسرَت الثقة بالحِزم أولًا: نطاق انفجار لسلسلة التوريد بُني حول الأسرار
تُظهر عملية اختراق مُبلّغ عنها في npm وPyPI كيف يمكن لهجوم على الاعتمادات أن تكون أهميته أقل من عدد الحِزم نفسها، وأكثر من بيانات الاعتماد المخفية في أنظمة البناء والإصدار.
في المصادر المفتوحة، من المفترض أن تتحرك الثقة بسرعة. ولهذا بالضبط يمكن أن يصبح اختراق إحدى الحِزم خطيرًا بهذه السرعة. وترتبط حملة «Shai-Hulud: Here We Go Again» المُبلّغ عنها بأكثر من 170 حزمة npm مخترقة وعدة حِزم PyPI، مع برمجية خبيثة تستهدف بيانات اعتماد GitHub وAWS وKubernetes. العدد الرئيسي كبير، لكن السؤال الأكثر إثارة للاهتمام هو أين كانت تلك الأسرار، وما إذا كانت الأتمتة قادرة على الوصول إليها.
حقائق سريعة
- أُبلِغ عن اختراق أكثر من 170 حزمة npm.
- أُبلِغ أيضًا عن اختراق عدة حِزم PyPI.
- وُصفت البرمجية الخبيثة بأنها تستهدف بيانات اعتماد GitHub وAWS وKubernetes.
- قيل إن الحِزم المتأثرة تلقّت أكثر من 200 مليون تنزيل أسبوعيًا مجتمعة.
- لا تكمن المخاطرة الرئيسية في الكود المسموم فقط، بل أيضًا في الأشياء التي يمكن لذلك الكود الوصول إليها داخل تدفقات العمل الخاصة بـ CI والبناء والإصدار.
الخطر الحقيقي هو أين تعمل الحزمة
من منظور دفاعي، هذا النوع من الحوادث هو انقلاب في الثقة: من المفترض أن توزّع مستودعات الحِزم الشيفرة، لكن الحزمة المخترقة يمكن أن تصبح جسرًا إلى البيئات التي تثبّتها. إذا شغّل الكود الخبيث أثناء خطوات التثبيت أو البناء أو النشر، فقد يواجه متغيرات البيئة أو أسرار سير العمل أو رموز السحابة أو مواد حساب الخدمة الموجودة بالفعل على النظام.
ولهذا فإن بيانات اعتماد GitHub وAWS وKubernetes مهمة جدًا في هذا السياق. غالبًا ما تكون أسرار GitHub قريبة من أتمتة الإصدارات. ويمكن لمفاتيح وصول AWS أن تتصرف كبيانات اعتماد دائمة للحامل إذا كانت طويلة العمر. وقد تكون رموز حسابات خدمة Kubernetes، خاصة القديمة والثابتة منها، حساسة بالقدر نفسه إذا نُسخت خارج القناة المعتادة. الرموز قصيرة الأجل وتصميم أقل الصلاحيات يقللان تلك النافذة، لكن فقط إذا كانا مستخدمين فعليًا.
كما أن عدد الحِزم أقل أهمية مما يبدو للوهلة الأولى. فعدد أصغر من الاعتمادات المسمومة يمكن أن يخلق مع ذلك خطرًا واسعًا في المنظومة النهائية إذا كانت تلك الحِزم مدمجة في سلاسل بناء شائعة، أو في أجهزة المطورين المحمولة، أو في خطوط النشر. وبهذا المعنى، فإن سطح الهجوم ليس المستودع فقط؛ بل كل تدفق عمل يفترض أن كود المستودع آمن بطبيعته.
استنادًا إلى التفاصيل المتاحة، لم يثبت هنا المسار التقني الدقيق، ولا النطاق الكامل للمستخدمين المتأثرين، ولا ما إذا كانت أي أنظمة لاحقة قد تعرضت للاختراق. والقراءة الأكثر أمانًا هي تحليل للمخاطر: يمكن لاختراق في سلسلة التوريد أن يتحول إلى حدث لجمع بيانات الاعتماد إذا وصل الكود المسموم إلى مسار أتمتة خاطئ.
ما الذي ينبغي على المدافعين استخلاصه من هذا
ينبغي لفرق الأمن أن تتعامل مع موثوقية الحِزم بوصفها جزءًا من أمن الهوية، لا مجرد نظافة برمجية. وهذا يعني تدوير أي رموز GitHub أو مفاتيح AWS أو بيانات اعتماد المجموعات المكشوفة؛ وتقليل الأسرار الثابتة في CI/CD؛ وتفضيل المصادقة قصيرة الأجل المرتبطة بالحِمل حيثما أمكن. بالنسبة إلى Kubernetes، يمكن لتدوير رموز حسابات الخدمة وتجنب التمكين التلقائي غير الضروري أن يقللا التعرض. أما في نشر الحِزم، فالنشر الموثوق والأذونات الصريحة أكثر أمانًا بكثير من أسرار الرفع الدائمة.
والدرس الأوسع بسيط: اختراق الاعتمادات نادرًا ما يكون مجرد مسألة كود. فبمجرد أن تتمكن حزمة خبيثة من الوصول إلى الأسرار، ينتقل الحادث من سلامة البرمجيات إلى التحكم في الوصول، وهناك غالبًا يبدأ الضرر الحقيقي.
TECHCROOK
مفتاح أمني مادي: عامل ثانٍ مادي للحسابات المستخدمة في استضافة الشيفرة، ووحدات تحكم السحابة، وأدوات الإدارة. يضيف خطوة تسجيل دخول منفصلة يصعب سرقتها أكثر من كلمات المرور أو الرموز المنسوخة، وهو مناسب جيدًا لحسابات المطورين والعمليات عالية القيمة. احتفظ بمفتاح احتياطي في مكان آمن للاستعادة.
WIKICROOK
- هجوم على سلسلة التوريد: اختراق يستهدف توزيع البرمجيات أو مسارات البناء بدلًا من تطبيق واحد.
- npm: مستودع حِزم JavaScript المستخدم لنشر وتثبيت الوحدات القابلة لإعادة الاستخدام.
- PyPI: فهرس حِزم Python، حيث تُنشر وتُثبّت حِزم بايثون.
- أقل قدر من الصلاحيات: مبدأ أمني يمنح كل حساب أو تدفق عمل فقط ما يحتاجه من وصول.
- رمز حساب الخدمة: بيانات اعتماد Kubernetes تُستخدم بواسطة الأحمال للمصادقة على واجهة برمجة تطبيقات المجموعة.




