أصدر مكتب المدير الوطني للأمن السيبراني (ONCD) مؤخرًا تقريرًا جديدًا بعنوان "العودة إلى الركائز الأساسية: مسار نحو برمجيات آمنة وقابلة للقياس". يُعدّ هذا التقرير من أوائل الإعلانات الرئيسية لمدير الجديد لمكتب ONCD، Harry Coker، ويقدّم طرحًا قويًا يدعم اعتماد لغات برمجة آمنة للذاكرة.
وينبع هذا التركيز الجديد من هدف إعادة موازنة مسؤوليات الأمن السيبراني وإعادة مواءمة الحوافز بما يخدم الاستثمارات طويلة الأجل في مجال الأمن السيبراني. كما جرى إدراج لغات البرمجة الآمنة للذاكرة ضمن أهداف مبادرة أمن البرمجيات مفتوحة المصدر (OS3I)، التي أصدرت هي الأخرى تقريرًا جديدًا مؤخرًا.
تحدث أخطاء الذاكرة عندما يكتب المبرمج تعليمات برمجية تتسبب في مشكلة متعلقة بالوصول إلى الذاكرة. وغالبًا ما ترتبط هذه الأخطاء بتجاوز سعة المخزن المؤقت (buffer overflow) أو بالمؤشرات المعلّقة (dangling pointers). وباستخدام لغات برمجة آمنة للذاكرة مثل Rust وGo وJava وSwift وPython، لا يمكن للمطورين كتابة تعليمات برمجية تؤدي إلى أخطاء ذاكرة، لأن هذه اللغات تتضمن خصائص مضمّنة مثل أمان الذاكرة وأمان الأنواع. وعندما يكتب المطوّرون تعليمات برمجية بلغات غير آمنة للذاكرة مثل C و++C، فقد يكتبون دون قصد تعليمات برمجية تتسبب في حدوث أخطاء في الوصول إلى الذاكرة. وبدلًا من رصد هذه الأخطاء أثناء وقت التحويل البرمجي أو وقت التشغيل، كما يحدث في اللغات الآمنة للذاكرة، قد تتسرّب هذه العيوب إلى الإصدار النهائي من البرنامج وتتسبب في مشكلات أمنية.
بينما يركّز الأمن السيبراني غالبًا على الاستجابة للتهديدات، يبدأ تقليل المخاطر من خلال اعتماد ممارسات تقلّل من أخطاء التعليمات البرمجية التي قد تسبّب مشكلات أمنية. أشارت Google إلى أن 70% من الثغرات الأمنية الخطيرة هي في الواقع مشكلات متعلقة بأمان الذاكرة. وغالبًا ما تكون لغات البرمجة الشائعة مثل C و++C سببًا للعديد من هذه المشكلات، وخاصةً بسبب أخطاء المؤشرات.
إن استخدام لغة برمجة آمنة للذاكرة يقلّل بدرجة كبيرة، وربما يقضي تمامًا، على الثغرات المرتبطة بأمان الذاكرة. وهذا بدوره يقلّل من مخاطر الأمن الإلكتروني في التعليمات البرمجية النهائية. وبالإضافة إلى تحسين مستوى الأمان، تسهم اللغات الآمنة للذاكرة أيضًا في تقليل حالات التوقف المفاجئ للتطبيقات، وتمكّن المطوّرين من زيادة الإنتاجية لأنهم لا يضطرون للتركيز على مشكلات إدارة الذاكرة.
النشرة الإخبارية الخاصة بالمجال
ابقَ على اطلاع دائم على أبرز الاتجاهات في مجالات الذكاء الاصطناعي، والأتمتة، والبيانات، وغيرها الكثير من خلال رسالة Think الإخبارية. راجع بيان الخصوصية لشركة IBM.
سيصلك محتوى الاشتراك باللغة الإنجليزية. ستجد رابط إلغاء الاشتراك في كل رسالة إخبارية. يمكنك إدارة اشتراكاتك أو إلغاء اشتراكك من هنا. لمزيد من المعلومات، راجع بيان خصوصية IBM.
يُعدّ تقليل أخطاء الذاكرة مسألة معقّدة تتطلّب نهجًا متعدّد الأبعاد. ويركّز التقرير على حثّ المؤسسات على الاهتمام بمجالين محدّدين يرتبطان باللغات الآمنة للذاكرة. كما تسعى الحكومة إلى إنشاء شراكات مع المجتمع التقني، ولا سيّما المهندسين والمطوّرين، للتعاون على تحقيق هذا التحوّل الجوهري.
فيما يلي الهدفان الرئيسيان المبيَّنان في وثيقة المعلومات التي صدرت مع التقرير:
كلما كان سطح الهجوم أصغر، انخفض مستوى المخاطر. فكل سطر من التعليمات البرمجية ينشئ ثغرات أمنية يُسهِم بشكل كبير في توسيع مساحة سطح الهجوم. ويمكن لخطأ واحد يؤدي إلى مشكلة متعلقة بأمان الذاكرة أن يفتح الباب أمام عدد كبير من الثغرات الأمنية. ويُوصي التقرير باستخدام لغة برمجة آمنة للذاكرة باعتبارها واحدة من أكثر الطرق فاعلية لتقليص سطح الهجوم. فمع استخدام هذه اللغات، لا يمكن للمبرمجين ارتكاب الأخطاء التي تزيد من اتساع نطاق سطح الهجوم عبر ثغرات الذاكرة.
ولا تزال مؤسسات عديدة غير قادرة على تقييم مستوى المخاطر في برمجياتها بدقة، لأن استخدام المقاييس على برمجيات تتغيّر باستمرار يمثّل تحدّيًا كبيرًا للغاية. على الرغم من أن قابلية قياس البرمجيات تمثّل تحديًا معقّدًا، فإن التحوّل المنشود يبدأ بالانتقال من نهج تفاعلي إلى نهج استباقي. ومن خلال تطوير أدوات ووسائل أفضل لقياس جودة الأمن السيبراني، يمكن للمؤسسات تحديد المخاطر بدقة أكبر ومعالجتها بشكل استباقي.
رغم أن من السهل القول إنه ينبغي على المؤسسات استخدام لغات برمجة آمنة للذاكرة، فإن واقع هذا الانتقال معقّد بالفعل. فالكثير من البرامج والمكتبات مبني على لغات غير آمنة للذاكرة، وغالبًا ما تكون إعادة كتابة قاعدة التعليمات البرمجية بالكامل أمرًا غير عملي.
ويُعدّ بدء المشاريع الجديدة باستخدام لغة برمجة آمنة للذاكرة، كلما أمكن ذلك، أبسط طريقة للشروع في هذا الانتقال. كما يمكن للمؤسسات تقليص سطح الهجوم دون إعادة كتابة شاملة، وذلك عبر إعادة كتابة الوظائف والمكتبات بالغة الأهمية الأكثر عرضةً لأخطاء الذاكرة، والتي تشمل غالبًا الأجزاء المعرضة لتجاوز سعة المخزن المؤقت (buffer overflow) أو للمؤشرات المعلّقة (dangling pointers). وتتميّز بعض اللغات الآمنة للذاكرة، مثل Rust وSwift، بقابليتها للتكامل مع لغات مثل C و++C، مما يجعل هذا النهج قابلًا للتطبيق. وعند اعتماد هذا النهج، يتعيّن على المؤسسات دمج أنظمة البناء وبُنى التجريد في اللغة الجديدة بما يضمن التعامل السليم مع الكائنات والبيانات المشتركة.
ومع ذلك، فإن إنجاز هذا التحوّل يتطلّب توافر الموارد والمهارات المناسبة لدى المطوّرين. ومن المهم أن تبدأ المؤسسات بتقييم فرق التطوير الحالية لديها، لمعرفة مستوى الخبرة المتوفر في مجال اللغات الآمنة للذاكرة. وتتمثّل الخطوة التالية في تدريب المطوّرين الحاليين، وضمان أن يمتلك المطوّرون الجدد مهارات كافية في استخدام اللغات الآمنة للذاكرة.
ومع تزايد التركيز على الأمن السيبراني، بدأت مؤسسات عديدة تدرك أن الخطوة الأهم هي الانتقال من نهج تفاعلي إلى نهج استباقي. ومن خلال العودة إلى الأساس والتركيز على إنشاء تعليمات برمجية آمنة منذ البداية، يمكن للمؤسسات خفض المخاطر التي تواجهها إلغى مستوى ملموس. ورغم أن هذه العملية ليست بسيطة ولا سريعة، فإن الفوائد المترتبة على هذا التحول جوهرية وطويلة الأمد.