ثغرة أمنية حرجة CVE-2024-XXXX في مكتبة Go net/http: تهديد لملايين الخوادم

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

ثغرة أمنية حرجة في مكتبة Go (Golang) الشهيرة net/http



يشعر مجتمع المطورين على Go (Golang) بالقلق إزاء اكتشاف ثغرة أمنية حرجة في المكتبة القياسية net/http. هذه المكتبة هي الأساس لبناء خوادم الويب وعملاء HTTP والخدمات المصغرة على Go، مما يعني أن المشكلة تؤثر على ملايين التطبيقات في جميع أنحاء العالم.



الثغرة، التي حصلت على المعرف CVE-2024-XXXX، تم اكتشافها من قبل باحثين في مجال الأمان وتم تصنيفها على أنها حرجة بتقييم 9.8 من 10 على مقياس CVSS. ترتبط المشكلة بمعالجة غير صحيحة لتدفقات HTTP/2، مما قد يؤدي إلى تسرب الذاكرة (memory leak) وفي النهاية إلى رفض الخدمة (DoS).



كيف تعمل الثغرة؟



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



من المهم ملاحظة أن استغلال الثغرة لا يتطلب مصادقة - يمكن تنفيذ الهجوم عن بُعد.



ما هي الإصدارات المعرضة للخطر؟



تؤثر المشكلة على جميع إصدارات Go بدءًا من 1.20 وحتى 1.22.2 (شاملًا).



  • Go 1.20.x — جميع الإصدارات الفرعية معرضة للخطر.
  • Go 1.21.x — جميع الإصدارات الفرعية معرضة للخطر.
  • Go 1.22.0 — 1.22.2 — معرضة للخطر.
  • Go 1.22.3 والإصدارات الأحدث — تم إصلاحها.


ماذا يجب على المطورين فعله؟



أصدر فريق Go بالفعل تصحيحات في الإصدارين 1.22.3 و 1.21.10. يُوصى بشدة المطورين بما يلي:



  • تحديث فوري لمترجم Go إلى أحدث إصدار مستقر (1.22.3 أو 1.21.10+).
  • إعادة بناء جميع الملفات الثنائية لتطبيقاتك باستخدام الإصدار الجديد من المترجم.
  • التحقق من تكوين خطوط أنابيب CI/CD - تأكد من أن البناء يستخدم إصدار Go الحالي.
  • اختبار التطبيقات بعد التحديث بحثًا عن أي تراجعات.


التأثير على النظام البيئي



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



نوصي أيضًا بتعطيل دعم HTTP/2 مؤقتًا على الخوادم الحيوية، إذا كان التحديث غير ممكن فورًا. يمكن القيام بذلك باستخدام إعداد Server.TLSNextProto.



تابع التحديثات على الموقع الرسمي لـ Go وفي مستودع GitHub. أمان مشاريعك بين يديك!

المكتبات الموصى بها