شرح البرامج الثابتة (Firmware)

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

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

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

أصل مصطلح البرامج الثابتة (Firmware)

صاغ Ascher Opler مصطلح "البرامج الثابتة" في مقال Datamation عام 1967. في الأصل، كانت تعني محتويات مخزن تحكم قابل للكتابة (ذاكرة صغيرة متخصصة عالية السرعة)، تحتوي على رمز صغير يحدد وينفذ مجموعة تعليمات الكمبيوتر ، والتي يمكن إعادة تحميلها لتخصص أو تعديل التعليمات التي تستخدمها وحدة المعالجة المركزية (CPU) يمكن أن تنفذ. كما تم استخدامه في الأصل، تتباين البرامج الثابتة مع الأجهزة (وحدة المعالجة المركزية نفسها) والبرامج (التعليمات العادية يتم تنفيذها على وحدة المعالجة المركزية). لم يكن مكونًا من تعليمات جهاز وحدة المعالجة المركزية، ولكن من رمز صغير منخفض المستوى يشارك في تنفيذ تعليمات الجهاز. كانت موجودة على الحد الفاصل بين الأجهزة والبرامج؛ ومن ثم اسم "البرامج الثابتة".

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

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

 

البرامج الثابتة في الحواسيب الشخصية

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

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

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

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

 

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

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

 

البرامج الثابتة في السيارات

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

 

أمثلة علي البرامج الثابتة

تتضمن أمثلة البرامج الثابتة ما يلي:

1. في المنتجات الاستهلاكية مثل أنظمة التوقيت والتحكم للغسالات والتحكم في خصائص الصوت والفيديو وقائمة القنوات في التلفزيونات الحديثة ورقائق EPROM المستخدمة في سلسلة Eventide H-3000 من معالجات الموسيقى الرقمية.

2. في أجهزة الكمبيوتر مثل BIOS في أجهزة الكمبيوتر الشخصية المتوافقة مع IBM والبرامج الثابتة المتوافقة مع (U) EFI المستخدمة في أنظمة Itanium وأجهزة الحاسوب المستندة إلى Intel من Apple والعديد من اللوحات الأم لأجهزة كمبيوتر سطح المكتب من Intel وOpen Firmware، المستخدم في أجهزة الكمبيوتر المستندة إلى SPARC من Sun Microsystems و Oracle Corporation، وأجهزة الكمبيوتر المستندة إلى PowerPC من Apple، وأجهزة الكمبيوتر من Genesi وARCS، وتستخدم في أجهزة الكمبيوتر من Silicon Graphics وKickstart، المستخدم في خط Amiga لأجهزة الكمبيوتر (POST، تجهيز الأجهزة + التكوين التلقائي للتوصيل والتشغيل للأجهزة الطرفية، النواة، إلخ.) وRTAS (Run-Time Abstraction Services)، المستخدمة في أجهزة الكمبيوتر من شركة IBM وبيئة البرامج الثابتة المشتركة (CFE).

3. في أجهزة التوجيه (routers) وجدران الحماية مثل LibreWRT - توزيع مجاني 100% لجهاز التوجيه والذي يعتمد على Linux-libre kernel وIPFire - توزيع مفتوح المصدر لجدار الحماية / جهاز التوجيه على أساس Linux kernel وfli4l - توزيع مفتوح المصدر لجدار الحماية / جهاز التوجيه على أساس Linux kernel وOpenWrt - توزيع مفتوح المصدر لجدار الحماية / جهاز التوجيه على أساس Linux kernel وM0n0wall - توزيع جدار حماية مضمّن لـ FreeBSD.

4. في أنظمة Network-attached storage (NAS) مثل NAS4Free - نظام تشغيل NAS مفتوح المصدر يعتمد على FreeBSD 9.1 وOpenfiler - نظام تشغيل NAS مفتوح المصدر يعتمد على Linux kernel.

 

الوميض أو Flash مع البرامج الثابتة

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

 

قرصنة البرامج الثابتة

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

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

قرصنة البرامج الثابتة للأقراص الصلبة

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

صنف باحثون من Kaspersky Lab تعهدات Equation Group على أنها أكثر عمليات القرصنة تقدمًا التي تم اكتشافها إطلاقا ، كما وثقوا حوالي 500 إصابة سببتها Equation Group في 42 دولة على الأقل.

 

الأخطار الأمنية بالنسبة للبرامج الثابتة

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

ركزت الاختراقات المخصصة للبرامج الثابتة أيضًا على حقن البرامج الضارة في أجهزة مثل الهواتف الذكية أو أجهزة USB. تم عرض حقنة واحدة من هذه الهواتف الذكية على نظام التشغيل Symbian OS في MalCon، وهو اتفاقية للقراصنة. تم تقديم قرصنة للبرامج الثابتة لجهاز USB تسمى BadUSB في مؤتمر Black Hat USA 2014، مما يوضح كيف يمكن إعادة برمجة وحدة تحكم دقيقة لمحرك أقراص فلاش USB لتزوير أنواع مختلفة من الأجهزة الأخرى من أجل التحكم في جهاز كمبيوتر أو سرقة البيانات أو التجسس على المستخدم. عمل باحثون أمنيون آخرون بشكل أكبر على كيفية استغلال المبادئ الكامنة وراء BadUSB، حيث أطلقوا في ذات الوقت الكود المصدري لأدوات القرصنة التي يمكن استخدامها لتعديل سلوك أجهزة USB المختلفة.