JA_NPM

دراسة حالة عن الفيضانات في متحف القصر الوطني: "أسفل حفرة الأرنب بحثًا عن الشاي"

At زيجيني، لقد كنا مشغولين على مدار العام الماضي بتنفيذ نظام شامل يراقب سجلات الحزم العامة مفتوحة المصدر بحثًا عن أي نشاط مشبوه أو تعليمات برمجية ضارة بطبيعتها.

تسمح لنا هذه البنية التحتية بتحليل جميع الحزم المنشورة يوميًا في الوقت الفعلي. كما أنه يسمح لنا بمراقبة سلوكيات المستخدم الشاذة.

في حين أن وجود تعليمات برمجية ضارة في سجلات الحزم أمر معروف، هناك سلوكيات أخرى غريبة أو غير عادية لا يلاحظها أحد تمامًا من قبل المستخدمين العاديين لهذه السجلات. حتى بالنسبة لأولئك منا الذين يراقبونهم عن كثب، ليس من السهل العثور على سبب أو تفسير لمثل هذا السلوك.

ما يميز فريق Xygeni هو إصرارنا عند مواجهة المشكلة، لذلك تعمقنا في هذا الأمر.

بدأ كل شيء مع ارتفاع الإحصائيات

كما ذكرت سابقًا، كجزء من بنيتنا التحتية، نقوم بمراقبة العديد من مقاييس النشاط في سجلات الحزم العامة مفتوحة المصدر.

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

دفعنا هذا إلى مراجعة عمليتنا والبيانات المرتبطة بها داخل النظام الأساسي. لحسن الحظ، توصلت مراجعتنا إلى أن البيانات تبدو صحيحة، ولكن هذا كان أيضًا محيرًا إلى حد ما!

بعد مزيد من الفحص، وجدنا أن هذه الحزم تشترك في العديد من الخصائص المشتركة:

  • كان الناشرون مستخدمين تم إنشاؤهم حديثًا، ولم يتجاوز عمرهم شهرًا أو شهرين على الأكثر.
  • كانت للحزم أسماء عشوائية على ما يبدو، وربما تم إنشاؤها باستخدام القاموس. يمكننا العثور على أسماء حزم لها أسماء غريبة مثل هائلة_العث-smiletea, إريك-mangut94-sukiwir, Exotic_reptile-appteadev or الواضح_tuna-appteadev. وسوف نقوم بإدراج ملحق مع بعض الأمثلة على الأصول التي وجدناها.
  • كان محتوى هذه الحزم متشابهًا جدًا، وغالبًا ما يكون هو نفسه.

وفي هذا السياق، لاحظنا أن إحدى الحزم تضمنت نصًا برمجيًا بلغة Python، ربما عن طريق الصدفة، والذي يبدو أنه يُستخدم لنشر الحزم تلقائيًا.

الآلية الوقائية الوطنية

كشف الشبكة

وقد تم تنفيذ نشاط النشر لبعض هؤلاء الناشرين خلال الشهر الماضي وفقًا للمخطط الزمني التالي:

 

هجوم npm

فيما يلي الإحصائيات الكاملة المتعلقة بهذا الحدث والتي يمكننا مشاركتها:

فحص npm

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

بعد كل شيء، لدينا مجموعة جيدة من الحزم التي يجب تحليلها:

هجوم npm 2

وهذه هي النقاط الرئيسية التي يمكننا تسليط الضوء عليها من التحليل:

  • العديد من حزم NPM مترابطة. تتم الإشارة إلى بعضها على أنها تبعيات للآخرين.
  • على الرغم من كونها حزمًا غريبة وربما لا أحد يعلم بوجودها، إلا أن بعضها لديه العديد من التنزيلات الأسبوعية. من الصعب قبول أن المستخدم العادي قد يرغب في تنزيل حزم مثل 0mc03esisd
  • لدى البعض مستودعات مرتبطة. في بعض الأحيان يبدو أن أصحاب هذه المستودعات عبارة عن حسابات وهمية، مشابهة لتلك الموجودة في npm.

ملحوظة: يقوم المستخدمون بتحميل حزم إضافية على شكل موجات، لذلك قد تختلف البيانات المقدمة قليلاً.

هجوم npm 2

هذا مثال على أحد المستودعات ذات الصلة. يحتوي على كود بعض الحزم المنشورة. بالإضافة إلى بعض الملفات الأخرى مثل a Tea.yaml ملف.

لقاء الممثل (الممثلين)

من الصعب تحديد ما إذا كان هذا عمل مؤلف واحد أو عدة متعاونين. ومع ذلك، لدينا بعض الأدلة التي تضيق نطاق أصل هذا النشاط:

  • اللغة: بعض التعليقات في الكود مكتوبة باللغة الإندونيسية.
هجوم npm 3
  • الموقع: يشير بعض مالكي المستودعات المرتبطة إلى موقعهم في إندونيسيا.
  • الموقع الذي يمكننا تحديده من خلال البيانات الوصفية للنشاط على GitHub يشير أيضًا إلى إندونيسيا.
NPM_JA

الشاي XNUMX:XNUMX

ونظرًا لأن إندونيسيا كانت مستعمرة بريطانية، فمن المناسب تمامًا تناول الشاي هنا. ومع ذلك، في هذه الحالة، فهو نوع خاص من الشاي.

هل تتذكر Tea.yaml الملفات التي رأيناها في البداية؟ في ذلك الوقت، لم نعرض محتواها، لكنها كانت تبدو كالتالي:

هجوم npm 4

يبدو أن هذه الملفات مرتبطة بـ بروتوكول الشاي. ولكن ما هو بالضبط؟ وصلنا https://tea.xyz/blog/250k-grant-for-open-source-developers، الذي يتحدث عن الغرض:

إن الشاي يهز العالم الرقمي من خلال معالجة القضية القديمة المتمثلة في عدم كفاية التعويضات لمطوري المصادر المفتوحة. أصبح حل هذه المشكلة أكثر إلحاحًا من أي وقت مضى، ولهذا السبب قررنا توزيع منح بقيمة 250 ألف دولار قبل إطلاق البروتوكول. تهدف هذه المرحلة الأولية إلى دعم القائمين على المشاريع مفتوحة المصدر التي لها تأثير مادي على النظام البيئي للبرمجيات مفتوحة المصدر وتصنيف TeaRank أكبر من 30 قبل شبكة الاختبار التحفيزية لبروتوكول الشاي.

وفقًا لمستندات بروتوكول الشاي: 

"لكي يتم تسجيل أي مشروع في بروتوكول الشاي، فإنه يتطلب ملف Tea.yaml الذي يعمل بمثابة دستور المشروع للتحكم في عدد المساهمين وعدد الأصوات المطلوبة لتنفيذ إجراءات معينة."

 

بعد الوصول إلى شبكة الشاي، حاولنا العثور على إحدى الحزم التي نعتقد أنها تزيد من سمعتها. عثرنا عليه:

يبدو أن هذا يفسر ما يحدث هنا: يقوم بعض المستخدمين بتضخيم مشاريعهم مفتوحة المصدر بشعبية وهمية من أجل الاستيلاء على TeaRank والحصول على المزايا التي تقدمها جمعية الشاي. بعد كل شيء، المال هو القوة الدافعة الأقدم، إلى جانب الجنس. 

الخاتمة والأفكار النهائية

على الرغم من عدم العثور على أي دليل على وجود تعليمات برمجية ضارة في حزم NPM هذه، ومن المحتمل أنها لم تكن تنوي أن يستخدمها أي شخص، فمن المحتمل أن تنتهك العديد من شروط الخدمة (TOS) الخاصة بـ NPM أو GitHub أو جمعية الشاي. ومع ذلك، فإن هذا يقع خارج نطاق عملنا (على الرغم من أنه تم إخطارهم وسيتم اتخاذ الإجراءات التي يرونها مناسبة). سيؤثر الاستخدام المسيء لهذه المنصات علينا وعلى مؤسساتنا بطريقة ما.

والأمر الواضح هو أن أي حزمة مفتوحة المصدر تبدو غير ضارة يمكن أن تحتوي على سلوكيات يصعب فهمها دون معلومات سياقية كاملة.

كمطور، أجد صعوبة في التحكم يدويًا في جميع الحزم مفتوحة المصدر المستخدمة في التطبيقات التي نقوم بتطويرها وصيانتها بمستوى معين من الضمان. وبدون مساعدة أداة تعمل على أتمتة هذا التحكم، يمكن أن تستهلك المهمة ساعات لا حصر لها من فرقنا.

هناك دائمًا خيار التغاضي عن الأمر، والثقة في أن العوالم مفتوحة المصدر هي أماكن آمنة. ولحسن الحظ، أعتقد أن هذه العقلية ليست منتشرة على نطاق واسع اليوم؛ كانت هذه الحالة غير ضارة من الناحية العملية، ولكننا شهدنا مؤخرًا حادثة أكثر خطورة مع XZ مستتر، ولم يتم الوحيد.

إذا كنت قد قرأت هذا حتى الآن، أتمنى أن تكون قد استمتعت بكل تعقيدات هذا الحدث الغريب. لا تنس قضاء بضع دقائق في مراجعة ما يمكن أن يساهم به Xygeni في أمن مؤسستك.

الملحق: قم بإدراج الأصول ذات الصلة المراد تضمينها في المقالة النهائية

NPM أكثر صلة بالمستخدمين بناءً على عدد الحزم المنشورة: فندرا، وانزاتي، آرت نايت 404، سيبلاكواه، ميكروسيتر، كيليمان 17

عينة صغيرة من الحزم ذات الصلة: mikrositer، cryndex، Arts-dao، seblakkuah، vndrabnb، vndrave، depfif، depsik، depeit، depnin، Dopon، kellymanteasproject.

بعض مستودعات GitHub ذات الصلة التي تحتوي على ملفات Tea.yml:

أدوات تحليل التركيبات البرمجية sca
إعطاء الأولوية للمخاطر التي تتعرض لها برامجك، ومعالجتها، وتأمينها
الإصدار التجريبي المجاني من 7 يومًا
لا ضرورة لبطاقة الائتمان

قم بتأمين تطوير البرامج الخاصة بك وتسليمها

مع مجموعة منتجات Xygeni