نقاط الضعف والشفرات الخبيثة في أنظمة الأتمتة الصناعية

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



صورة



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



بعد فحص التفاصيل الفنية ونقاط الضعف لثماني من أكثر بيئات البرمجة الصناعية شيوعًا (ABB و Comau و Denso و Fanuc و Kawasaki و Kuka و Mitsubishi و Universal Robots) ، وجدنا أنه يمكن استخدام هذه اللغات لإنشاء برامج ضارة للدودة تنتقل من واحدة روبوت ضعيف للآخر ، يطيع الأوامر عن بعد لمشغليها.



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



سرقة البيانات من الروبوت



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



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



صورة

جزء من رمز التطبيق الضعيف. المصدر (المشار إليه فيما يلي ، ما لم يذكر خلاف ذلك):



يستدعي Trend Micro Line 493 وظيفة sendFile لإرسال الملف المطلوب إلى العميل. لا تتم تصفية سلسلة الصفحة بأي شكل من الأشكال ، لذلك قد تحتوي على "... /" أو بعض المسارات الأخرى. يتيح لك ذلك اجتياز نظام الملفات وتنزيل أي ملف تقريبًا.



صورة

مخطط استغلال الثغرات الأمنية كان



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



صورة

,





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

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



صورة

لا يحتوي الكود الضعيف لخادم أتمتة حركة المرور على أي عمليات فحص لشرعية البيانات المنقولة إليه



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



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



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



صورة

للروبوت هي نتيجة إدخال إحداثيات غير آمنة في حركة المرور



البرامج الضارة الديناميكية



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



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



صورة

أداة تنزيل البرامج الضارة مكتوبة بلغة برمجة للروبوتات الصناعية



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



ضعف غير عادي RCE



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



صورة

منطق



صورة

ضعيف لتطبيق "محترم" جزء من التعليمات البرمجية الذي يقوم بتنفيذ منطق ضعيف.



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



تاج الخلق - دودة خبيثة



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



صورة

منطق برنامج PoC الذي يحاكي عمل تكوين برامج ضارة حقيقية



صورة

لقائمة من الملفات التي تم العثور عليها وإرسالها إلى خادم التحكم



مصدر المشاكل



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



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

هناك مشكلة أخرى مع اللغات القديمة للأتمتة الصناعية (لغة برمجة الروبوتات الصناعية ، IRPL) ، الموروثة جنبًا إلى جنب مع المعدات ، وهي أنها لا تملك أدوات للتحقق من التعليمات البرمجية للأنماط غير الآمنة ، على غرار أدوات C ، C ++ ، C # ، Java. PHP و Python.



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



المصادر الرئيسية لنقاط الضعف في البرامج المكتوبة في IRPL هي ثلاث وظائف رئيسية:



  • العمل مع الملفات والأدلة ،
  • تحميل الوحدات ديناميكيًا واستدعاء الوظائف بالاسم ،
  • وظائف الشبكة - استقبال ونقل البيانات إلى أنظمة خارجية.


صورة

الوظائف الخطيرة المتوفرة في IRPL



كيف تحمي نفسك



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



صورة

توصيات موحدة لضمان سلامة برامج الأتمتة الصناعية



لذلك ، عند كتابة مثل هذه البرامج ، يجب أن تسترشد بالمبادئ التالية:



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


قديم أم ذكي؟



بينما كان مطورو البرمجيات التقليديون يكافحون عواقب البرمجة غير الآمنة لعقود من الزمن ويطورون تقنيات مختلفة لضمان الانتصار ، فقد تبين أن عالم الأتمتة الصناعية غير مستعد لاكتشاف ومنع استغلال نقاط الضعف.



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



All Articles