شعار زيفيرنت

ثغرات البرامج الثابتة التي لا تريدها في منتجك

التاريخ:

ثغرات البرامج الثابتة التي لا تريدها في منتجك
شكل توضيحي: © IoT For All

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

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

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

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

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

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

الكأس المقدسة لنقاط الضعف: RCE

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

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

السؤال الذي يطرح نفسه: كيف يمكن للمهاجمين العثور على ثغرات RCE في الأجهزة، وما هي الأنواع التي يمكن أن تؤدي إلى RCE؟

دعونا نرى الأكثر شيوعا.

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

وسوف نتعمق في كل من هذه.

تجاوز المصادقة

تعد المصادقة جانبًا مهمًا للأمان في الأنظمة المدمجة. فهو يضمن أن الأفراد المصرح لهم فقط هم من يمكنهم الوصول إلى الجهاز ووظائفه.

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

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

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

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

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

تخفيف تجاوز المصادقة

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

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

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

تجاوز سعة المخزن المؤقت

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

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

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

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

كما نرى هنا، يأخذ البرنامج وسيطتين صحيحتين، بارام_1 و  بارام_2، ويعلن عن متغير محلي يسمى local_200 من النوع undefined2 (2 بايت أو 16 بت، عدد صحيح غير موقّع). كما يعرض أيضًا مصفوفة تسمى auStack510 بحجم 502 بايت

ثم يستخدم البرنامج memset () وظيفة لتعيين كافة البايتات في auStack510 إلى الصفر. بعد ذلك، يتم التحقق مما إذا كانت قيمة بارام_1 أقل من 2. إذا كان الأمر كذلك، فسيقوم البرنامج بطباعة رسالة استخدام ويخرج برمز الخطأ 1.

If بارام_1 أكبر من أو يساوي 2، يقوم البرنامج بطباعة رسالة ترحيب ونسخ محتويات السلسلة المشار إليها بواسطة الوسيطة الثانية _(*(شار)(param_2 + 4))_** في local_200 يستخدم ال ستركبي () وظيفة. هذا هو المكان الذي تكمن فيه ثغرة تجاوز سعة المخزن المؤقت.

إذا كانت السلسلة المشار إليها بواسطة الوسيطة الثانية أطول من 16 بايت (حجم local_200)، و ستركبي () سيتم كتابة الدالة بعد نهاية local_200 المخزن المؤقت والكتابة فوق محتويات المجاورة auStack510 العازلة.

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

لمنع هذا النوع من هجوم تجاوز سعة المخزن المؤقت، من الضروري استخدام الوظائف التي تحد من كمية البيانات المكتوبة في المخزن المؤقت، مثل strncpy () or snprintf (). بالإضافة إلى ذلك، يجب أن يتم تجميع البرامج مع وسائل الحماية من تجاوز سعة المخزن المؤقت، مثل كومة الكناري والعشوائية تخطيط مساحة العنوان (ASLR، fASLR).

حقن الأوامر

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

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

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

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

يبدو أن هذا الرمز هو وظيفة تسمى wsc_generate_pin يقوم بإنشاء رمز PIN لإعداد Wi-Fi المحمي (WPS). رقم WPS PIN هو رقم مكون من ثمانية أرقام يستخدم لمصادقة جهاز لاسلكي على شبكة Wi-Fi.

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

الكود الضعيف هو السطر المميز:

يقوم هذا الكود بإنشاء أمر shell الذي يكتب قيمة local_18 إلى / dev / عشوائي ملف. إذا كان بإمكان المهاجم التحكم في قيمة local_18، يمكنهم إدخال أوامر Shell إضافية في ملف acStack141 المخزن المؤقت، مما يؤدي إلى تنفيذ التعليمات البرمجية التعسفية. وبما أن هذا المتغير جاء من المستخدم (WPS Pin)، فإن هذه الثغرة الأمنية قابلة للاستغلال.

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

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

تحدي أمن إنترنت الأشياء

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

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

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

بقعة_صورة

أحدث المعلومات الاستخباراتية

بقعة_صورة