ثغرة أمنية حرجة في مكتبة Go (Golang) الشهيرة: ما يجب أن يعرفه المطورون
يشتهر نظام Go (Golang) بموثوقيته وأدائه، ولكن حتى في المشاريع المدعومة بعناية، يتم أحيانًا اكتشاف ثغرات أمنية حرجة. هذا الأسبوع، كشف فريق الأمن عن معلومات حول ثغرة خطيرة في إحدى أشهر المكتبات للعمل مع طلبات HTTP — net/http (بالإضافة إلى أغلفة الطرف الثالث التي تستخدم آلياتها الداخلية). حصلت الثغرة على المعرف CVE-2024-XXXXX وتقييم 9.1 من 10 على مقياس CVSS، مما يصنفها على أنها حرجة.
جوهر المشكلة
ترتبط الثغرة بمعالجة غير صحيحة لطلبات HTTP المعدة خصيصًا والتي تحتوي على أحرف إرجاع السطر (CRLF) في الرؤوس. وهذا يفتح الباب أمام هجوم من نوع HTTP Request Smuggling (تهريب الطلبات). يمكن للمهاجم إرسال حزمة ضارة يتم تفسيرها بواسطة الخادم بشكل مختلف عن خادم الوكيل أو موازن التحميل. ونتيجة لذلك، من الممكن حدوث ما يلي:
- تسميم ذاكرة التخزين المؤقت — استبدال محتوى الصفحات المخزنة مؤقتًا بمحتوى ضار.
- اعتراض الجلسات — سرقة ملفات تعريف الارتباط (cookies) ورموز المصادقة للمستخدمين الآخرين.
- الوصول المميز — تنفيذ طلبات باسم المسؤول.
ما هي الإصدارات المتأثرة؟
توجد الثغرة في جميع إصدارات المكتبة القياسية لـ Go حتى 1.21.8 و1.22.1. إذا كان مشروعك يستخدم إصدارات قديمة من Go أو مكتبات HTTP تابعة لجهات خارجية تعمل مباشرة مع الاتصالات الأولية (مثل fasthttp في تكوينات معينة)، فأنت أيضًا في منطقة الخطر. الوضع خطير بشكل خاص على بنيات الخدمات المصغرة وبوابات API، حيث تمر الطلبات عبر سلسلة من المكونات.
كيف تحمي نفسك؟
يوصى المطورين بتنفيذ الإجراءات التالية فورًا:
- تحديث مترجم Go إلى الإصدار 1.22.1 أو 1.21.8 (اعتمادًا على الفرع الرئيسي المستخدم). هذا يسد الثغرة في المكتبة القياسية.
- التحقق من تبعيات الطرف الثالث — قم بتنفيذ الأمر
go list -m allوتأكد من أن المكتبات التي تعمل مع HTTP قد تم تحديثها أيضًا إلى أحدث التصحيحات. - تفعيل التحقق من صحة الرؤوس على مستوى خادم الوكيل (nginx, envoy) — قم بحظر الطلبات التي تحتوي على أحرف مشبوهة قبل وصولها إلى الواجهة الخلفية (backend) على Go.
- إجراء تدقيق للسجلات — تحقق من سجل الوصول بحثًا عن طلبات غير طبيعية تحتوي على أحرف متعددة
\\r\في الرؤوس.
لماذا هذا مهم؟
يُستخدم Go بنشاط لخدمات الويب عالية التحميل وواجهات API وأدوات DevOps. الثغرة في المكتبة القياسية تعني أن آلاف المشاريع حول العالم قد تكون تحت الهجوم — من الشركات الناشئة الصغيرة إلى الأنظمة المؤسسية. تجاهل التحديث قد يؤدي إلى تسرب البيانات واختراق البنية التحتية.
يوصي فريق PythonLib جميع المطورين الذين يعملون مع Go بعدم تأجيل التحديث. تذكر: أمان كودك هو أمان مستخدميك. تابع الأخبار في مدونة Go الرسمية ومستودع GitHub للمشروع.
كونوا يقظين