يسمح هجوم التبعية بتنفيذ التعليمات البرمجية في PayPal و Microsoft و Apple و Netflix و Uber و 30 شركة أخرى

قبل بضعة أيام تم إصدار طريقة بسيطة بشكل مدهش تسمح بمهاجمة التبعيات في التطبيقات التي تم تطويرها باستخدام مستودعات الحزم الداخلية. الباحثون الذين حددوا المشكلة كانوا قادرين على تشغيل التعليمات البرمجية الخاصة بك على الخوادم الداخلية لـ 35 شركة ، بما في ذلك PayPal و Microsoft و Apple و Netflix و Uber و Tesla و Shopify.

تم تنفيذ عمليات الاختراق كجزء من برامج Bug Bounty ، بالتنسيق مع الشركات التي تعرضت للهجوم ، وتلقى الجناة بالفعل 130.000 ألف دولار كمكافآت لتحديد نقاط الضعف.

تعتمد الطريقة على حقيقة أن تستخدم العديد من الشركات تبعيات المستودعات القياسية لـ NPM و PyPI و RubyGems في تطبيقاتها الداخلية، بالإضافة إلى التبعيات الداخلية التي لا يتم توزيعها أو تنزيلها علنًا من مستودعاتها الخاصة.

المشكلة هي أن مديري الحزم مثل npm و pip و gem يحاولون تنزيل التبعيات الداخلية للشركات ، حتى من المستودعات العامة. للهجوم ، ما عليك سوى تحديد أسماء الحزم ذات التبعيات الداخلية وإنشاء الحزم الخاصة بك بنفس الأسماء في المستودعات العامة لـ NPM و PyPI و RubyGems.

لا تقتصر المشكلة على NPM و PyPI و RubyGems ، بل تتجلى أيضًا في أنظمة أخرى مثل NuGet و Maven و Yarn.

جاءت فكرة الطريقة المقترحة بعد أن لاحظ الباحث عن طريق الخطأ أنه في الكود المتاح للجمهور المنشور على GitHub ، العديد من الشركات لا تزيل ذكر التبعيات الإضافية من ملفات البيان الخاصة بها تستخدم في المشاريع الداخلية أو عند تنفيذ وظائف موسعة. تم العثور على آثار مماثلة في كود JavaScript لخدمات الويب ، وكذلك في مشاريع Node.JS و Python و Ruby للعديد من الشركات.

كانت التسريبات الرئيسية تتعلق بتضمين المحتوى من ملفات package.json في كود JavaScript متاح للجمهور أثناء عملية الإنشاء ، وكذلك باستخدام عناصر المسار الفعلي في استدعاءات تتطلب () ، والتي يمكن استخدامها للحكم على أسماء التبعية.

كشف مسح عدة ملايين من نطاقات الشركات عن عدة آلاف من أسماء حزم JavaScript التي لم تكن في مستودع NPM. بعد تجميع قاعدة بيانات بأسماء الحزم الداخلية ، قرر الباحث إجراء تجربة لاختراق البنية التحتية للشركات المشاركة في برامج Bug Bounty. كانت النتائج فعالة بشكل مدهش وتمكن الباحث من تشغيل الكود الخاص به على العديد من أجهزة الكمبيوتر والخوادم التطويرية المسؤولة عن البناء أو الاختبار بناءً على أنظمة التكامل المستمر.

عند تنزيل التبعيات ، يقوم مديرو الحزم npm و pip و gem بتثبيت الحزم بشكل أساسي من المستودعات العامة الأولية NPM و PyPI و RubyGems ، والتي كانت تعتبر ذات أولوية أعلى.

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

وضع الباحث حزمًا في مستودعات NPM و PyPI و RubyGems التي تعبر أسماء التبعيات الداخلية التي تم العثور عليها ، مضيفًا رمزًا إلى البرنامج النصي الذي يعمل قبل التثبيت (مثبت مسبقًا في NPM) لجمع معلومات حول النظام وإرسال المعلومات المستلمة للمضيف الخارجي.

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

ارتبط 75٪ من جميع عمليات تنفيذ التعليمات البرمجية المسجلة بتنزيلات حزمة NPM ، ويرجع ذلك أساسًا إلى حقيقة وجود أسماء وحدات JavaScript داخلية أكثر بكثير من أسماء تبعية Python و Ruby.

مصدر: https://medium.com/


كن أول من يعلق

اترك تعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها ب *

*

*

  1. المسؤول عن البيانات: ميغيل أنخيل جاتون
  2. الغرض من البيانات: التحكم في الرسائل الاقتحامية ، وإدارة التعليقات.
  3. الشرعية: موافقتك
  4. توصيل البيانات: لن يتم إرسال البيانات إلى أطراف ثالثة إلا بموجب التزام قانوني.
  5. تخزين البيانات: قاعدة البيانات التي تستضيفها شركة Occentus Networks (الاتحاد الأوروبي)
  6. الحقوق: يمكنك في أي وقت تقييد معلوماتك واستعادتها وحذفها.