توصل مهندسو جوجل إلى أن نحو 70 في المئة من الأخطاء الأمنية الخطيرة في قاعدة التعليمات البرمجية لكروم هي أخطاء في إدارة الذاكرة، وذلك بعد تحليل 912 خطأً أمنيًا مصححًا في كروم منذ عام 2015، وأضافوا أن نصف هذه النسبة هي عبارة عن نقاط ضعف تنتج بسبب الإدارة غير الصحيحة لمؤشرات الذاكرة (العناوين)، مما يتيح مهاجمة مكونات كروم الداخلية.
ويتطابق الرقم مع الإحصائيات التي شاركتْها شركة مايكروسوفت، وقال مهندسو مايكروسوفت في مؤتمر أمني في شهر فبراير 2019: إن التحديثات الأمنية لمنتجات مايكروسوفت على مدار الاثني عشر عامًا الماضية حددت نحو 70 في المئة من نقاط الضعف في إدارة الذاكرة.
مشكلة إدارة الذاكرة التي لا تنتهي:
تتعامل جوجل ومايكروسوفت بشكل أساسي مع المشكلة نفسها، وهي أن لغة البرمجة (++C) غير آمنة، وتمثل أداة برمجية قديمة مصممة قبل عقود عندما لم يكن الاستغلال الأمني والهجمات السيبرانية نموذجًا للتهديد.
وتبعًا لذلك، فإن (++C) تتيح للمبرمجين التحكم الكامل في كيفية إدارة مؤشرات (عناوين) ذاكرة التطبيق، ولا تأتي هذه اللغة البرمجية مع قيود أو تحذيرات لمنع المطورين من ارتكاب أخطاء في إدارة الذاكرة.
وتؤدي الأخطاء البرمجية إلى إدخال ثغرات إدارة الذاكرة في التطبيقات، وهي نقاط الضعف التي يحاول المهاجمون العثور عليها واستغلالها؛ وذلك لأنها تمنحهم القدرة على زرع التعليمات البرمجية داخل ذاكرة الجهاز وتنفيذها من تطبيق الضحية (المتصفح أو الخادم أو النظام التشغيلي).
ومع تقدم هندسة البرمجيات في السنوات الأخيرة، سعى المطورون لإنهاء معظم العيوب الأمنية وإضافة الحماية الأمنية اللازمة، لكن ليس بالنسبة لنقاط الضعف في إدارة الذاكرة.
جوجل تتطلع لمعالجة أخطاء ذاكرة كروم:
تقول جوجل: إن 125 ثغرة من بين 130 ثغرة مصححة في كروم منذ شهر مارس 2019 كانت ذات تصنيف خطورة حرج، وتتعلق بمشكلات إدارة الذاكرة، مما يدل على أنه بالرغم من التقدم المحرَز في إصلاح فئات الأخطاء الأخرى، لا تزال إدارة الذاكرة مشكلة كبيرة بالنسبة لشركة جوجل لدرجة أن مهندسي كروم عليهم الآن اتباع “القاعدة 2“.
ووفقًا لهذه القاعدة، يجب ألا تكسِر التعليمات البرمجية أكثر من شرطين من الشروط التالية عند تصميم ميزة جديدة لكروم:
- تعالج التعليمات البرمجية المدخلات غير الموثوق بها.
- تعمل التعليمات البرمجية بدون وضع الحماية.
- التعليمات البرمجية مكتوبة بلغة برمجية غير آمنة (++C).
وبالرغم من أن شركات البرمجيات قد حاولت إصلاح مشاكل إدارة الذاكرة سابقًا، إلا أن موزيلا هي الوحيدة تقريبًا التي حققت نجاحًا من خلال دعم لغة البرمجة (Rust)، والترويج لها واعتمادها بشكل كبير، وتعتبر (Rust) اليوم واحدة من أكثر لغات البرمجة أمانًا، وهي بديل مثالي للغة (++C) غير الآمنة.
ويرجع ذلك أساسًا إلى جهود موزيلا المبكِّرة، لكن موزيلا لم تكن المنظمة الوحيدة التي حاولت التخلص من التعليمات البرمجية المعرضة للأخطاء للغة (++C)، إذ إن مايكروسوفت تستثمر بشكل كبير في استكشاف بدائل للغة (++C) من خلال تجربة (Rust)، وبناء لغة برمجة آمنة تشبه (Rust).
كما أعلنت جوجل هذا الأسبوع عن خطط مماثلة، وقالت الشركة إنها تخطط أيضًا للنظر في معالجة مشكلة أخطاء إدارة الذاكرة لمتصفح كروم، الذي يستخدمه 70 في المئة تقريبًا من مستخدمي الإنترنت.
وكان مهندسو جوجل مؤيدين لنهج وضع الحماية في كروم، وعزلوا عشرات العمليات في وضع الحماية، وطبقوا حديثًا عزل الموقع، ومع ذلك، يقول مهندسو جوجل إن هذا النهج قد وصل إلى الحد الأقصى من الفوائد عند أخذ الأداء في الاعتبار، وإنه يجب على الشركة الآن أن تتطلع إلى مناهج جديدة.
وأوضحت جوجل أنها تخطط للنظر في تطوير مكتبات (++C) مخصصة؛ لاستخدامها مع قاعدة التعليمات البرمجية لكروم، كما تستكشف عملاقة البحث مشروع (MiraclePtr)، الذي يهدف إلى تحويل الأخطاء الناتجة عن الإدارة غير الصحيحة لمؤشرات الذاكرة إلى أعطال غير أمنية، مع أداء مقبول وتأثير أقل على الاستقرار.
وقالت جوجل أيضًا إنها تخطط لاستكشاف استخدام لغات آمنة حيثما أمكن ذلك، ويشمل ذلك لغات (Rust) و (Swift) و (JavaScript) و (Kotlin) و (Java).